MCP is live.Set upAsk the community
OmniDimension
WhatsApp

Create a campaign

Create a campaign as a draft. It sends nothing until you launch it. Add contacts and launch it in the next calls. Only an approved template can be used, so every campaign starts with one. Scheduling is not offered.

Set up WhatsApp first. Connect a WhatsApp number in the dashboard or with Connect numbers. Included on every paid plan. See plans.

POST/whatsapp/campaigns
Body
8 fields
·

An approved template on that number.

broadcast_reply lets the agent answer replies. It needs an agent.

The agent that answers replies.

curl -X POST 'https://backend.omnidim.io/api/v1/whatsapp/campaigns' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "October promo",
  "phone_number_id": 412,
  "template_id": 3676,
  "campaign_mode": "broadcast"
}'
Example response
synthetic
{
  "id": 0,
  "name": "string",
  "status": "draft",
  "pause_reason": "human",
  "campaign_mode": "broadcast",
  "send_mode": "review",
  "data_source": "csv",
  "is_dynamic": false,
  "phone_number_id": 0,
  "template": {
    "id": 0,
    "name": "string"
  },
  "agent_id": 0,
  "variable_mapping": "string",
  "counts": {
    "total": 0,
    "sent": 0,
    "delivered": 0,
    "read": 0,
    "replied": 0,
    "failed": 0,
    "skipped": 0,
    "opted_out": 0
  },
  "receipts_reported": false,
  "delivery_rate": 0,
  "read_rate": 0,
  "reply_rate": 0,
  "spend": {
    "amount": 0,
    "currency": "USD"
  },
  "created_at": "string"
}

Authorization

BearerAuth
headerAuthorizationBearer <token>

Bearer token authentication. Obtain your API key from the OmniDimension dashboard.

Request Body

application/json
name*string
Lengthlength <= 255
phone_number_id*integer
template_id*integer

An approved template on that number.

campaign_mode?string

broadcast_reply lets the agent answer replies. It needs an agent.

Default"broadcast"
Value in"broadcast""broadcast_reply"
agent_id?integer

The agent that answers replies.

data_source?string
Default"csv"
Value in"csv""webhook"
is_dynamic?boolean
Defaultfalse
variable_mapping?

Template field to contact field or static text.

Response body

application/json

Response Body

The draft campaign.

application/json
id?integer
name?string
status?string
Value in"draft""scheduled""in_progress""paused""completed""failed""cancelled"
pause_reason?string

Why it paused, or null. Only human waits for you; the rest resume on their own.

Value in"human""balance""channel_down""monthly_limit"
campaign_mode?string
Value in"broadcast""broadcast_reply"
send_mode?string
Value in"review""on_arrival"
data_source?string
Value in"csv""webhook"
is_dynamic?boolean
phone_number_id?integer
template?
agent_id?integer

The agent that answers replies, when one is attached.

variable_mapping?

Template field to contact field or static text.

counts?
receipts_reported?boolean

This number reports delivery and read receipts, so the rates are real.

delivery_rate?number

Delivered as a percentage of sent. Null when receipts are not reported.

read_rate?number

Read as a percentage of delivered. Null when receipts are not reported.

reply_rate?number

Replied as a percentage of sent.

spend?

What the campaign cost so far. Null without billing access.

created_at?string