API ReferenceCampaignsLaunch a campaign
POST/v1/campaigns/launch

Launch a campaign

Create a campaign, optionally add a batch of leads, and optionally start it — all in one call. Runs the same three steps as create, add-leads, and start, in sequence, against the exact same underlying logic.

Stablescope: write API KeyLearn about API scopes →

Only campaign creation can fail the whole request

Leads and start are best-effort after that and reported back per-step instead of rolled back — a campaign that got created but had a few leads rejected, or failed to start (e.g. no verified sender yet), still exists and is inspectable via Get campaign. Nothing is silently deleted because a later step failed.

Request

AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Parameters

FieldTypeRequiredDescription
name, mail, senderIds, aiPrompt, scheduleType, ...RequiredSame fields as Create a campaign — the campaign to create.
leadsobject[]OptionalSame shape as Add leads — { fields: { email, firstName, ... } }[], 1–10,000 items. Omit to create an empty campaign.
startbooleanOptionaltrue to launch immediately once leads are added; omit or false to save as DRAFT.
curl -X POST "https://api.stynar.com/v1/campaigns/launch" \
  -H "Authorization: Bearer esk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name":"Q3 outbound","mail":{"subject":"Quick question about {{company}}","body":"<p>Hi {{firstName}},</p>..."},"senderIds":["sender_abc123"],"leads":[{"fields":{"email":"jane@acme.com","firstName":"Jane","company":"Acme"}}],"start":true}'

Response

201 Created
201 response
{
  "campaign": {
    "campaignId": "cmp_abc123",
    "name": "Q3 outbound",
    "status": "RUNNING"
  },
  "leads": {
    "added": 1,
    "skipped": {
      "duplicatesInRequest": 0,
      "duplicatesInDB": 0,
      "invalidLeads": 0
    }
  },
  "started": true
}

Response fields

Errors

StatusCodeMeaning
401 UnauthorizedUNAUTHORIZEDMissing, malformed, unknown, revoked, or expired key.
403 ForbiddenAPI_ACCESS_DISABLEDYour account doesn't currently have API access.
403 ForbiddenINSUFFICIENT_SCOPEThe key doesn't have the scope this endpoint requires.
404 Not FoundNOT_FOUNDUnknown route, or a resource that doesn't exist / isn't yours.
409 ConflictCONFLICTThe action can't be applied to the resource's current state.
429 Too Many RequestsRATE_LIMIT_EXCEEDEDPer-minute or per-second limit hit.
429 Too Many RequestsQUOTA_EXCEEDEDMonthly quota exhausted.
500 Internal Server ErrorINTERNAL_ERRORSomething broke on Stynar's end.
Full error reference →