Skip to main content
POST
Create a campaign

Authorizations

Authorization
string
header
required

A ManyPI API key (mpi_...) from Settings → API keys, or an OAuth 2.1 access token obtained through the MCP consent flow.

Body

application/json
name
string
required
Maximum string length: 120
sequence_id
string<uuid>
required
smtp_config_id
string<uuid>
required

An inbox id from GET /api/outreach/inboxes.

reply_to
string<email>
daily_limit
integer

Never exceeds the inbox's own cap.

Required range: 1 <= x <= 2000
schedule_enabled
boolean
send_days
integer[]

Defaults to Mon–Fri.

Required range: 0 <= x <= 6
send_from
string

Local time, HH:MM.

send_to
string

Local time, HH:MM.

timezone
string
track_opens
boolean
priority
integer
default:5

Higher wins the next paced slot when campaigns share an inbox.

Required range: 1 <= x <= 10
inbox_strategy
enum<string>
Available options:
single,
rotate,
round_robin,
provider_match

Response

The created campaign.

id
string<uuid>
name
string
status
enum<string>
Available options:
active,
paused,
archived
sequence_id
string<uuid>
smtp_config_id
string<uuid>
reply_to
string | null
daily_limit
integer | null
priority
integer
schedule_enabled
boolean
send_days
integer[]

Weekdays to send on, as Date.getDay() numbers: 0 is Sunday, 1 is Monday, 6 is Saturday. Values outside 0-6 are discarded, so an ISO-style Sunday of 7 is dropped rather than honoured. Defaults to [1,2,3,4,5] when omitted, or when every supplied value is discarded.

Required range: 0 <= x <= 6
send_from
string | null
send_to
string | null
timezone
string | null
track_opens
boolean
inbox_strategy
enum<string>

How sends are spread when several inboxes are available.

Available options:
single,
rotate,
round_robin,
provider_match
include_unsubscribe
boolean

Whether an unsubscribe link is appended to each email.

require_verified
boolean

Whether unverified addresses are validated before enrollment.

stats
object
created_at
string<date-time>
updated_at
string<date-time>