Skip to main content
POST
/
whatsapp
/
campaigns
curl --request POST \
  --url https://api.otpiq.com/api/whatsapp/campaigns \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Summer promo",
  "templateId": "664abc123def456789012345",
  "phoneNumberId": "664def456abc789012345678",
  "scheduleType": "now"
}
'
{
  "success": true,
  "data": {
    "_id": "<string>",
    "campaignId": "<string>",
    "name": "<string>",
    "template": "<string>",
    "phoneNumber": "<string>",
    "scheduledFor": "2023-11-07T05:31:56Z",
    "startedAt": "2023-11-07T05:31:56Z",
    "completedAt": "2023-11-07T05:31:56Z",
    "totalRecipients": 123,
    "sentCount": 123,
    "deliveredCount": 123,
    "failedCount": 123,
    "estimatedTotalCost": 123,
    "reservedAmount": 123,
    "reconciledAmount": 123,
    "isSampleCampaign": true,
    "sampleOfCampaign": "<string>",
    "createdAt": "2023-11-07T05:31:56Z",
    "updatedAt": "2023-11-07T05:31:56Z"
  }
}
This endpoint creates the campaign shell. You must add recipients using the Attach Recipients endpoint before starting the campaign.

Authorizations

Authorization
string
header
required

Project API key (sk_live… or sk_dev…). Send it as Authorization: Bearer <api_key>.

Body

application/json

Does not include recipients. Add them via POST /api/whatsapp/campaigns/{_id}/recipients. Category is always taken from the linked template.

name
string
required
Required string length: 3 - 80
templateId
string
required
Pattern: ^[a-fA-F0-9]{24}$
phoneNumberId
string
required

Must belong to the same WABA as the template

Pattern: ^[a-fA-F0-9]{24}$
scheduleType
enum<string>
default:now

Exactly two allowed values:

  • now — save as draft; start manually via POST .../start (scheduledFor not used)
  • schedulerequires scheduledFor (future datetime); saves as scheduled; auto-starts at that time
Available options:
now,
schedule
scheduledFor
string<date-time>

Required when scheduleType is schedule (future ISO-8601 datetime). Omit when scheduleType is now or omitted.

Response

Campaign created

success
enum<boolean>
required
Available options:
true
data
object
required