Skip to main content
POST
Create a campaign
The quickest path is one call with launch: true:
Leave out scheduled_at to start now, or leave out launch to keep a draft. While it runs, OneXtel skips opted-out numbers and applies Truecaller’s promotional limits: at most 3 promotional messages per person per day, 4 per person from one sender in 28 days, and the sender’s daily limit. Skipped contacts show as blocked with the reason.

Authorizations

x-api-key
string
header
required

Workspace API key from Developers → API keys. It starts with tc_live_.

Body

application/json
name
string
required
Maximum string length: 100
Example:

"Diwali sale, wave 1"

template_id
string<uuid>
required
list_id
string<uuid>
required
sender_id
string

One of the workspace's active senders. Defaults to the first active sender.

launch
boolean
default:false

Start sending now (or at scheduled_at).

scheduled_at
string<date-time>

ISO 8601 with offset, e.g. 2026-11-02T10:00:00+05:30.

variable_defaults
object

Fallbacks for empty contact columns, on top of the template's own defaults.

Rewrite links and link buttons through a short redirect so clicks are counted.

Response

Created (and launched, if asked).

id
string<uuid>
name
string
status
enum<string>
Available options:
draft,
scheduled,
running,
completed,
cancelled
template_id
string<uuid>
template_name
string
list_id
string<uuid>
list_name
string
sender_id
string
scheduled_at
string<date-time> | null
started_at
string<date-time> | null
completed_at
string<date-time> | null
note
string | null

Why a running campaign is waiting

recipients
integer
processed
integer
sent
integer
delivered
integer
read
integer
failed
integer
blocked
integer
queued
integer