Campaigns

ToolREST endpointAnnotations
list_campaignsGET /v1/campaignsread-only, idempotent
get_campaignGET /v1/campaigns/{id}read-only, idempotent
create_campaignPOST /v1/campaignswrite
update_campaignPATCH /v1/campaigns/{id}write
delete_campaignDELETE /v1/campaigns/{id}destructive
send_campaignPOST /v1/campaigns/{id}/sendwrite
get_campaign_audienceGET /v1/campaigns/{id}/audienceread-only, idempotent
add_campaign_audiencePOST /v1/campaigns/{id}/audiencewrite
remove_campaign_audience_clientDELETE /v1/campaigns/{id}/audience/{phone}destructive, idempotent
clear_campaign_audienceDELETE /v1/campaigns/{id}/audiencedestructive

Basic CRUD

list_campaigns

FieldTypeDefault
limit1-20050
offset≥ 00
sortBy"title" \| "creationDate" \| "lastUpdate"lastUpdate
sortDirection"asc" \| "desc"desc

get_campaign / delete_campaign

Both only require campaignId.

create_campaign

FieldTypeRequiredDescription
titlestringyes
category"marketing" \| "utility" \| "authentication"yes
platformstringnoDefault "whatsapp".
templateNamestringnoIf included, the API fills in language, message, and template automatically.
message, template, language, wabaIdstringnoOverridable.
ownersstring[] (emails)no

update_campaign

Same fields as create_campaign (all optional), plus campaignId.


Audience

get_campaign_audience

FieldTypeDefault
campaignIdstringyes
limit1-50050
offset≥ 00
sortBy"name" \| "creationDate" \| "lastUpdate"lastUpdate
sortDirection"asc" \| "desc"desc

add_campaign_audience

{
  "name": "add_campaign_audience",
  "arguments": {
    "campaignId": "promo_julio",
    "clients": [
      { "phoneNumber": "+521234567890", "name": "Ana López" },
      { "phoneNumber": "+529876543210", "name": "Beto Pérez" }
    ]
  }
}

remove_campaign_audience_client

FieldRequired
campaignIdyes
phoneNumberyes

clear_campaign_audience

Only campaignId. Empties the entire audience.


send_campaign

Triggers the actual send. The template section must be consistent with the template configured on the campaign.

FieldTypeRequiredDescription
campaignIdstringyes
channelIdstringyesSENDER channel the campaign is sent from (prefixedChannelId, e.g. wb-123).
responderAgentIdstringnoAgent that RESPONDS to replies, decoupled from the channel. If omitted, the channel's defaultAgentId is used.
template.namestringno
template.paramsstring[]no
template.type"image" \| "video" \| "document"no
template.filestring (URL)noMedia header.
template.buttons[]objectnoSupports sub_type: url \| phone_number \| quick_reply \| otp \| flow.
template.sendToProblematicbooleannoDefault true.
template.sendToUndeliverablebooleannoDefault true.
template.scheduledDatesstring[] ISO 8601noTo schedule the send.