Campaigns

Review a campaign

Changed on

Generate 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>

post/v1/campaigns/{campaignId}/review

Request

  • Base URL
    https://api.folk.app
  • URL
    https://api.folk.app/v1/campaigns/{campaignId}/review
  • Auth
    HTTP bearer

Path parameters

campaignIdstring required

The ID of the campaign.

Headers

Idempotency-Keystring

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.

Example:8e03978e-40d5-43e8-bc93-6894a57f9324

Response

The campaign, processing its messages.

deprecationsstring[]

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