Create WhatsApp campaign
curl --request POST \
--url http://localhost:8787/api/v1/whatsapp/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "<string>",
"templates": [
{
"templateName": "<string>",
"languageCode": "<string>",
"process": "<string>",
"callStatus": "<string>"
}
]
}
'import requests
url = "http://localhost:8787/api/v1/whatsapp/campaigns"
payload = {
"agentId": "<string>",
"templates": [
{
"templateName": "<string>",
"languageCode": "<string>",
"process": "<string>",
"callStatus": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: '<string>',
templates: [
{
templateName: '<string>',
languageCode: '<string>',
process: '<string>',
callStatus: '<string>'
}
]
})
};
fetch('http://localhost:8787/api/v1/whatsapp/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));WhatsApp Campaigns
Create WhatsApp campaign
Create a WhatsApp campaign with template mappings tied to call outcomes
POST
/
whatsapp
/
campaigns
Create WhatsApp campaign
curl --request POST \
--url http://localhost:8787/api/v1/whatsapp/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": "<string>",
"templates": [
{
"templateName": "<string>",
"languageCode": "<string>",
"process": "<string>",
"callStatus": "<string>"
}
]
}
'import requests
url = "http://localhost:8787/api/v1/whatsapp/campaigns"
payload = {
"agentId": "<string>",
"templates": [
{
"templateName": "<string>",
"languageCode": "<string>",
"process": "<string>",
"callStatus": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: '<string>',
templates: [
{
templateName: '<string>',
languageCode: '<string>',
process: '<string>',
callStatus: '<string>'
}
]
})
};
fetch('http://localhost:8787/api/v1/whatsapp/campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Creates a WhatsApp campaign that automatically sends templated WhatsApp messages when an agent handles calls.
Only one WhatsApp campaign is allowed per agent. To modify templates or settings, use
PUT /whatsapp/campaigns/{id}.Body parameters
string
required
UUID of the AI agent to attach this campaign to.
string
Campaign display name.
string
Meta phone number ID to use as sender (overrides default).
boolean
default:"true"
Whether the WhatsApp campaign is active.
object[]
required
Array of template mappings (maximum 20).
curl -X POST https://api.agentic-os.com/api/v1/whatsapp/campaigns \
-H "Authorization: Bearer $AGENTIC_OS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Post-Call Customer Follow-up",
"agentId": "11111111-1111-1111-1111-111111111111",
"phoneNumberId": "105938472910293",
"templates": [
{
"templateName": "call_summary_feedback",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "ANSWERED"
},
{
"templateName": "call_missed_callback_link",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "UNANSWERED"
}
]
}'
import requests
response = requests.post(
"https://api.agentic-os.com/api/v1/whatsapp/campaigns",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"name": "Post-Call Customer Follow-up",
"agentId": "11111111-1111-1111-1111-111111111111",
"phoneNumberId": "105938472910293",
"templates": [
{
"templateName": "call_summary_feedback",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "ANSWERED",
},
{
"templateName": "call_missed_callback_link",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "UNANSWERED",
},
],
},
)
print(response.json())
const response = await fetch(
"https://api.agentic-os.com/api/v1/whatsapp/campaigns",
{
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Post-Call Customer Follow-up",
agentId: "11111111-1111-1111-1111-111111111111",
phoneNumberId: "105938472910293",
templates: [
{
templateName: "call_summary_feedback",
languageCode: "en_US",
process: "OUTGOING",
callStatus: "ANSWERED",
},
{
templateName: "call_missed_callback_link",
languageCode: "en_US",
process: "OUTGOING",
callStatus: "UNANSWERED",
},
],
}),
},
);
const data = await response.json();
console.log(data);
Response
{
"id": "55555555-5555-5555-5555-555555555555",
"tenantId": "990e8400-e29b-41d4-a716-446655440000",
"agentId": "11111111-1111-1111-1111-111111111111",
"name": "Post-Call Customer Follow-up",
"phoneNumberId": "105938472910293",
"isActive": true,
"templates": [
{
"id": "template_1",
"templateName": "call_summary_feedback",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "ANSWERED"
},
{
"id": "template_2",
"templateName": "call_missed_callback_link",
"languageCode": "en_US",
"process": "OUTGOING",
"callStatus": "UNANSWERED"
}
],
"createdAt": "2026-06-01T11:00:00.000Z",
"updatedAt": "2026-06-01T11:00:00.000Z"
}
⌘I

