Campaigns
Create Campaign
Create a new outbound calling campaign with CSV contacts
POST
Create Campaign
Create Campaign
Create a new outbound calling campaign by uploading a CSV file with contacts and configuring campaign parameters. This is a multipart/form-data endpoint - send the CSV file and all configuration fields together in a single request.Request Parameters
file
required
CSV file with contact data. Required columns:
name, phone_numberstring
required
Human-readable name for the campaign (max 255 characters)
string
required
UUID of the agent that will handle calls
integer
required
Simultaneous calls (≥ 1, ≤ organization max)
string
required
Campaign start date -
YYYY-MM-DDstring
required
Campaign end date -
YYYY-MM-DD (≥ from_date)string
required
Daily call window open - UTC
HH:MM 24-hour format (e.g. 02:30)string
required
Daily call window close - UTC
HH:MM 24-hour format (e.g. 14:00)string
required
Comma-separated weekdays, e.g.
monday,tuesday,fridayboolean
default:"false"
Run DND check on contacts before dialing
integer
default:"3"
Max dial attempts per contact (1–10)
integer
default:"30"
Minutes between retry attempts (0–1440)
string
Comma-separated email addresses for completion notifications (max 5)
string
HTTP/HTTPS URL to receive campaign status-change events
string
HTTP/HTTPS URL to receive per-call post-processing events
Time Window Reference
All times must be in 24-hour HH:MM format in UTC only.TRAI compliance window is 08:00–19:59 IST. Submit the UTC equivalent.
To convert: IST − 5:30 = UTC (e.g. 13:00 IST = 07:30 UTC)
Example Request
Response 200 OK
The campaign is created with status populating while the contact file is being imported. It then moves to active (start date reached, inside calling hours), scheduled (start date in the future), paused_out_of_range (start date reached but outside calling hours) or failed (the file could not be imported). Poll Get Campaign Status to see the transition.
CSV File Requirements
Required Columns
Optional Columns
Any extra columns are treated as dynamic variables passed to the agent. Column names must exactly match (case-sensitive) the variable names configured on the agent.File Limits
Phone Number Formats Accepted
+91XXXXXXXXXX(E.164 with country code)91XXXXXXXXXX(country code without+)0XXXXXXXXXX(leading zero, Indian trunk prefix)XXXXXXXXXX(bare 10-digit number)
Error Responses
number
HTTP status code
string
Error name
string
Human-readable error message
string
Request path
string
When the error occurred
string
Request id, quote it when contacting support
string
Machine-readable error code, present when the failing check defines one (see the table below). Errors from the Vaani backend (for example campaign not found, insufficient balance) may carry their own
code. Range errors that FastAPI rejects before the handler runs (422) have no code; read message.
