Send a campaign message
Send one webhook campaign message to a recipient, charged per call against the campaign wallet.
+ and country code, for example +15551234567. Any other format fails with 422 invalid_params and an errors entry of { "field": "to", "code": "invalid_e164" }. The recipient is matched to an existing end user by phone, with or without the leading +, before a new end user is created.{ "url": "…" }. Required when the template has a media header. Tars fetches the URL and checks it against the header’s media type.Response
"sent" means WhatsApp accepted the message, not that it was delivered. Delivery confirmations arrive from the provider later, and some outcomes can stay unconfirmed.0 when the WhatsApp number is in Staging mode.tars_… request ID, for support and log correlation.Errors
Two campaign-status codes matter most for client logic.Retry-After header, so resume the campaign and retry on your own schedule.retryable flag. Branch on retryable, not on the status number. See the full error catalog.Authorizations
API key sent as Authorization: Bearer YOUR_API_KEY. Campaign endpoints use campaign-scoped keys; the rest use organization or agent keys with the matching permission.
Path Parameters
The campaign's ID. The campaign page's Contract tab shows the full URL for your campaign.
Body
Response
Message sent and charged
Always sent on a successful call. The message was accepted and the wallet was charged.
"sent"What this send cost in US dollars, charged to the campaign wallet.
The tars_… request ID. Quote it when contacting support about this send.
The campaign wallet balance in US dollars after the charge.
The provider's message ID, when the provider returned one.
