launch: true when ready.
Create a New Campaign
POST/api/public/v1/campaigns
- Python
- JavaScript
- cURL
Request Parameters
Required Fields
| Parameter | Type | Description |
|---|---|---|
name | string | Campaign name (8-255 characters) |
Optional Fields
| Parameter | Type | Default | Description |
|---|---|---|---|
timezone | string | America/New_York | IANA timezone for scheduling |
sending_days | int[] | [1,2,3,4,5] | Days to send (1=Mon, 7=Sun) |
sending_window_start | int | 9 | Start hour (0-23) |
sending_window_start_minute | int | 0 | Start minute (0-59) |
sending_window_end | int | 17 | End hour (1-24) |
sending_window_end_minute | int | 0 | End minute (0-59) |
daily_limit_per_inbox | int | null | Max emails per inbox/day (1-100) |
start_date | datetime | null | ISO 8601 start date |
enable_tracking | bool | false | Enable email open tracking |
enable_unsubscribe | bool | true | Include unsubscribe link |
The sending window supports minute-precision. For example,
sending_window_start: 9 with sending_window_start_minute: 30 starts at 9:30 AM. When sending_window_end is 24, the minute must be 0.Update Campaign
PUT/api/public/v1/campaigns/{campaign_id}
Update any campaign field or activate it. Only include the fields you want to change.
- Python
Updatable Fields
Basic Settings: name, timezone, sending_days, sending_window_start, sending_window_start_minute, sending_window_end, sending_window_end_minute, daily_limit_per_inbox, enable_tracking, enable_unsubscribe, start_date Inboxes: inbox_ids — Array of inbox UUIDs to assign Email Content: variants — Array of email variant objects for A/B testing Follow-ups: sequences — Array of follow-up sequence objects Launch Control: launch — Set totrue to activate the campaign
Launch Validation
Whenlaunch: true, the API checks:
- At least one lead exists
- At least one inbox is assigned
- At least one email variant is configured
- Python
Response
Validation Errors
| Error | Cause |
|---|---|
ensure this value has at least 8 characters | Campaign name too short |
Invalid timezone: America/Invalid | Invalid IANA timezone |
sending_window_end must be after sending_window_start | Window configuration invalid |
Variant distributions must sum to 100% | Variant percentages don’t total 100 |
Best Practices
- Use descriptive names — Include goal, target audience, or time period
- Match timezone to audience — Prevents emails from sending at odd hours
- Start conservative with limits — 20-50 emails/inbox/day for new accounts
- Enable tracking — Essential for measuring campaign performance
- Test before launching — Try with a few test leads first
Next Steps
Email Variants
Configure A/B testing and distribution.
Follow-up Sequences
Set up automated follow-up emails.
Personalization
Use variables, spintax, and conditionals.

