Parameters

campaign
dictionary
name
string
Required
Description
Name of the campaign.
description
string
channel
string
Required
Description
Delivery channel: `email`, `push`, or `sms`.
audience_type
string
Required
Description
Audience targeting mode: `all_users`, `user_attributes`, `audience_ids`, or `custom`.
audience_config
dictionary
Description
Configuration object required for `audience_ids` (`{ audience_ids: [...] }`), `custom` (`{ emails: [...] }` / `{ phones: [...] }`), or `user_attributes` (`{ audience_type: 'user', filters: [...] }`).
schedule_type
string
Required
Description
`immediate` or `scheduled`.
status
string
Description
Initial status: `draft` (default), `active`, or `scheduled`.
subject
string
Description
Subject line (required for email campaigns).
content
dictionary
Required
Description
Content object. For email: `{ html, text }`. For SMS: `{ message }`. For push: `{ title, body }`.
capping_per_minute
number
Description
Maximum number of recipient rows processed per minute (1-100000). Leave null or omit for standard rate.
scheduled_at
string
Description
ISO-8601 date string for future scheduled dispatch (required when `schedule_type` is `scheduled`).
POST/v1/campaigns
curl https://api.tradly.app/v1/campaigns \
  -H "Authorization: Bearer YOUR_PUBLISHABLE_OR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
  "campaign": {
    "name": "Summer Promotion",
    "description": "Seasonal discount announcement",
    "channel": "email",
    "audience_type": "all_users",
    "audience_config": null,
    "schedule_type": "immediate",
    "status": "draft",
    "subject": "Summer Sale is Live!",
    "content": {
      "html": "<h1>Summer Sale!</h1><p>Enjoy 20% off all items today.</p>",
      "text": "Summer Sale! Enjoy 20% off all items today."
    },
    "capping_per_minute": 600
  }
}'
RESPONSE
{
  "status": true,
  "data": {
    "campaign": {
      "id": 101
    }
  }
}