Review a campaign
Changed onGenerate the messages of a draft campaign, one per recipient and per step, as the app does when a campaign goes to review. It answers 202 with the campaign processing; the campaign becomes in_review within seconds, to poll with GET /v1/campaigns/:campaignId. If generation fails, it is in_review with an error.
Once in review, edit its messages with PATCH /v1/campaigns/:campaignId/messages/:messageId, remove recipients, or launch it in the app. Every step needs a sender, a subject (apart from follow-ups sent in the same thread) and a body; a campaign that is not a draft answers 409.<br/><Warning>This endpoint is currently in open beta. The API surface may change as we iterate based on feedback.</Warning>
Request
- Base URLhttps://api.folk.app
- URLhttps://api.folk.app/v1/campaigns/{campaignId}/review
- AuthHTTP bearer
Path parameters
The ID of the campaign.
Headers
A unique key, such as a UUID, that makes retrying this request safe: a retry with the same key and body returns the original response without running the operation again. Keys are kept for 24 hours after the request completes.
Response
The campaign, processing its messages.
Example response
{
"data": {
"id": "cmp_9b2f1c1e-2b8a-4d1e-8f5a-3c2d1e0f9a8b",
"name": "Q3 outreach",
"status": "draft",
"groupId": "grp_bc984b3f-0386-434d-82d7-a91eb6badd71",
"entityType": "person",
"steps": [
{
"position": 1,
"sender": {
"id": "snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a",
"email": "john.doe@example.com",
"displayName": "John Doe"
},
"subject": "Quick question, {{firstName}}",
"body": "<p>Hi {{firstName}},</p><p>{{signature}}</p>",
"cc": [],
"bcc": [],
"delayDays": 0,
"sameThread": false,
"status": "draft",
"messageCount": 0,
"sentCount": 0,
"notSentCount": 0
},
{
"position": 2,
"sender": {
"id": "snd_4c3b2a19-8f7e-4d6c-9b5a-1e2f3d4c5b6a",
"email": "john.doe@example.com",
"displayName": "John Doe"
},
"subject": "",
"body": "<p>Following up on my last email, {{firstName}}.</p><p>{{signature}}</p>",
"cc": [],
"bcc": [],
"delayDays": 3,
"sameThread": true,
"status": "draft",
"messageCount": 0,
"sentCount": 0,
"notSentCount": 0
}
],
"stopOnReply": true,
"recipientCount": 12,
"createdBy": "usr_bc984b3f-0386-434d-82d7-a91eb6badd71",
"createdAt": "2025-07-17T09:00:00.000Z",
"updatedAt": "2025-07-17T09:00:00.000Z",
"scheduledAt": null,
"startedAt": null,
"finishedAt": null,
"error": null
},
"deprecations": [
"This field is deprecated"
]
}Changes
- info
endpoint added
- info