Welcome to the API documentation. Here you can find all the details about our API methods, error codes, and more.
| Header | Value | Description |
|---|---|---|
Mumble-Api-Key |
<TOKEN> |
Your API token for authentication. Find your token in your account technical settings. |
Content-Type |
application/json |
Indicates that the request body format is JSON. |
Add a new customer.
{"adset_id": "123", "bot_token": "example-bot-token", "campaign_id": "campaign_123456", "cid": "cid_123456", "current_url": "http://example.com", "customer_phone": "1234567890", "device": "desktop", "email": "[email protected]", "fbc": "fbc_123456", "fbclid": "fbclid_123456", "fbp": "fbp_123456", "form": "form_1", "ga_id": "GA-123456", "ga_session_id": "session_123456", "gbraid": "gbraid_123456", "gclid": "gclid_123456", "ip": "192.168.1.1", "keyword_id": "keyword_123456", "layer": "layer_1", "li_fat_id": "li_fat_id_123456", "matchtype": "broad", "msclickid": "msclickid_123456", "name": "John Doe", "network": "network_1", "obcid": "obcid_123456", "placement": "top_banner", "source": "web", "tblci": "tblci_123456", "ttcid": "ttcid_123456", "twclid": "twclid_123456", "user_agent": "Mozilla/5.0", "utm_campaign": "summer_sale", "utm_content": "ad_content", "utm_medium": "cpc", "utm_source": "google", "utm_term": "keyword", "wbraid": "wbraid_123456", "yclid": "yclid_123456"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
name |
string |
No |
string |
No |
|
source |
string |
No |
bot_token |
string |
No |
utm_source |
string |
No |
utm_medium |
string |
No |
utm_campaign |
string |
No |
utm_content |
string |
No |
utm_term |
string |
No |
placement |
string |
No |
adset_id |
string |
No |
ga_id |
string |
No |
ga_session_id |
string |
No |
campaign_id |
string |
No |
keyword_id |
string |
No |
gclid |
string |
No |
wbraid |
string |
No |
gbraid |
string |
No |
fbclid |
string |
No |
msclickid |
string |
No |
ttcid |
string |
No |
yclid |
string |
No |
obcid |
string |
No |
li_fat_id |
string |
No |
tblci |
string |
No |
twclid |
string |
No |
current_url |
string |
No |
user_agent |
string |
No |
ip |
string |
No |
fbc |
string |
No |
fbp |
string |
No |
cid |
string |
No |
matchtype |
string |
No |
device |
string |
No |
layer |
string |
No |
network |
string |
No |
form |
string |
No |
| Code | Message |
|---|---|
| 200 | {"message": "added successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Failed to add customer due to invalid input"} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 500 | {"error": true, "message": "An unexpected error occurred"} |
Edit an existing customer. Any field not provided will remain unchanged. You can also set custom fields by passing additional key-value pairs.
{"adset_id": "123", "bot_token": "example-bot-token", "campaign_id": "campaign_123456", "cid": "cid_123456", "current_url": "http://example.com", "customer_phone": "1234567890", "device": "desktop", "email": "[email protected]", "fbc": "fbc_123456", "fbclid": "fbclid_123456", "fbp": "fbp_123456", "form": "form_1", "ga_id": "GA-123456", "ga_session_id": "session_123456", "gbraid": "gbraid_123456", "gclid": "gclid_123456", "ip": "192.168.1.1", "keyword_id": "keyword_123456", "layer": "layer_1", "li_fat_id": "li_fat_id_123456", "matchtype": "broad", "msclickid": "msclickid_123456", "name": "John Doe", "network": "network_1", "obcid": "obcid_123456", "placement": "top_banner", "source": "web", "tblci": "tblci_123456", "ttcid": "ttcid_123456", "twclid": "twclid_123456", "user_agent": "Mozilla/5.0", "utm_campaign": "summer_sale", "utm_content": "ad_content", "utm_medium": "cpc", "utm_source": "google", "utm_term": "keyword", "wbraid": "wbraid_123456", "yclid": "yclid_123456"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
name |
string |
No |
string |
No |
|
source |
string |
No |
bot_token |
string |
No |
utm_source |
string |
No |
utm_medium |
string |
No |
utm_campaign |
string |
No |
utm_content |
string |
No |
utm_term |
string |
No |
placement |
string |
No |
adset_id |
string |
No |
ga_id |
string |
No |
ga_session_id |
string |
No |
campaign_id |
string |
No |
keyword_id |
string |
No |
gclid |
string |
No |
wbraid |
string |
No |
gbraid |
string |
No |
fbclid |
string |
No |
msclickid |
string |
No |
ttcid |
string |
No |
yclid |
string |
No |
obcid |
string |
No |
li_fat_id |
string |
No |
tblci |
string |
No |
twclid |
string |
No |
current_url |
string |
No |
user_agent |
string |
No |
ip |
string |
No |
fbc |
string |
No |
fbp |
string |
No |
cid |
string |
No |
matchtype |
string |
No |
device |
string |
No |
layer |
string |
No |
network |
string |
No |
form |
string |
No |
| Code | Message |
|---|---|
| 200 | {"custom_fields_processed": [], "message": "Customer updated successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Failed to update customer due to invalid input"} |
| 400 | {"error": true, "message": "Cannot add more than 50 custom fields per account"} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
| 500 | {"error": true, "message": "An unexpected error occurred"} |
Delete an existing customer.
{"customer_phone": "1234567890"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Customer deleted successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Get customer information including custom fields.
{"customer_phone": "1234567890"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"customer": {"conversation_status": "new", "country": "IL", "email": "[email protected]", "id": "uuid", "last_interaction": "2024-01-01T00:00:00", "name": "John Doe", "phone": "1234567890"}, "success": true} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Get all customers with pagination (250 per page).
{"page": 1}
| Name | Type | Required |
|---|---|---|
page |
int |
No |
| Code | Message |
|---|---|
| 200 | {"current_page": 1, "customers": [], "pages": 2, "per_page": 250, "success": true, "total": 250, "total_pages": 2} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 500 | {"error": true, "message": "An unexpected error occurred"} |
Edit a customer's conversation status.
{"customer_phone": "1234567890", "status": "new"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
status |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Customer conversation status updated successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Invalid conversation status."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Assign a customer to an agent.
{"agent_id": "uuid", "customer_phone": "1234567890"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
agent_id |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Customer assigned to agent successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Agent ID is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
| 404 | {"error": true, "message": "Agent not found"} |
Assign a customer to a team.
{"customer_phone": "1234567890", "team_id": "uuid"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
team_id |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Customer assigned to team successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Team ID is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
| 404 | {"error": true, "message": "Team not found"} |
Add a customer to a label.
{"customer_phone": "1234567890", "label_name": "VIP"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
label_name |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "added successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Label name is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
| 404 | {"error": true, "message": "Label not found"} |
Remove a customer from a label.
{"customer_phone": "1234567890", "label_name": "VIP"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
label_name |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "removed successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Label name is required."} |
| 400 | {"error": true, "message": "Customer is not in the label"} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
| 404 | {"error": true, "message": "Label not found"} |
Create a new label.
{"label_name": "VIP Customers"}
| Name | Type | Required |
|---|---|---|
label_name |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Label \u0027VIP Customers\u0027 created successfully", "success": true} |
| 400 | {"error": true, "message": "Label name is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 409 | {"error": true, "message": "Label \u0027VIP Customers\u0027 already exists."} |
Delete a label.
{"label_name": "VIP Customers"}
| Name | Type | Required |
|---|---|---|
label_name |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Label \u0027VIP Customers\u0027 deleted successfully", "success": true} |
| 400 | {"error": true, "message": "Label name is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Label not found"} |
Get all labels.
{}
| Name | Type | Required |
|---|
| Code | Message |
|---|---|
| 200 | {"labels": [], "success": true} |
| 401 | {"error": true, "message": "Unauthorized"} |
Send a text message to a customer. The conversation must be active (within the 24-hour window).
{"bot_token": "example-bot-token", "customer_phone": "1234567890", "email": "[email protected]", "name": "John Doe", "source": "web", "text": "Hello!"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
text |
string |
Yes |
source |
string |
No |
bot_token |
string |
No |
name |
string |
No |
string |
No |
| Code | Message |
|---|---|
| 200 | {"id": 1, "message_wa_id": "wamid.abc123", "success": true} |
| 400 | {"error": true, "message": "Missing required parameters."} |
| 400 | {"error": true, "is_active": false, "message": "Conversation is closed"} |
| 400 | {"error": true, "message": "Failed to send text message."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 401 | {"error": true, "message": "The user is not authorized to send text messages."} |
Send a media message (image, video, audio, document) to a customer. Supports two modes: (A) File upload via multipart/form-data, or (B) Public URL via JSON body with media_url. The conversation must be active (within the 24-hour window). Supported file types: jpg, jpeg, png, webp, mp4, mov, mp3, ogg, m4a, wav, opus, pdf, doc, docx, xls, xlsx, ppt, pptx, txt.
{"mode_a_file_upload": {"caption": "Check this out!", "customer_phone": "1234567890", "file": "(binary file upload via multipart/form-data)", "filename": "photo.jpg"}, "mode_b_public_url": {"caption": "Check this out!", "customer_phone": "1234567890", "filename": "photo.jpg", "media_url": "https://example.com/photo.jpg"}}
| Name | Type | Required |
|---|---|---|
file |
file |
No |
media_url |
string |
No |
customer_phone |
string |
Yes |
caption |
string |
No |
filename |
string |
No |
source |
string |
No |
bot_token |
string |
No |
name |
string |
No |
string |
No |
| Code | Message |
|---|---|
| 200 | {"id": 1, "message_wa_id": "wamid.abc123", "success": true} |
| 400 | {"error": true, "message": "Either file upload or media_url is required."} |
| 400 | {"error": true, "message": "Missing required parameter: customer_phone"} |
| 400 | {"error": true, "message": "Unsupported file type: .xyz"} |
| 400 | {"error": true, "is_active": false, "message": "Conversation is closed"} |
| 400 | {"error": true, "message": "Failed to send media message."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 500 | {"error": true, "message": "Failed to upload media file."} |
Send a template message to a customer. Set push_to_chat=false to send silently: the message is delivered to WhatsApp and stored in your account, but it will NOT appear in the operator's inbox and the customer will not jump to the top of the conversation list. Default is true (existing behavior).
{"bot_token": "example-bot-token", "button_variables": ["offer25"], "customer_phone": "1234567890", "email": "[email protected]", "media_link": "https://example.com/banner.jpg", "name": "John Doe", "push_to_chat": true, "source": "web", "template_id": "template-uuid"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
template_id |
string |
Yes |
button_variables |
list |
No |
source |
string |
No |
bot_token |
string |
No |
name |
string |
No |
string |
No |
|
media_link |
string |
No |
push_to_chat |
boolean (default true) |
No |
| Code | Message |
|---|---|
| 200 | {"message": "Template message sent successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Template ID is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Send a template message with text variables to a customer. Set push_to_chat=false to send silently: the message is delivered to WhatsApp and stored in your account, but it will NOT appear in the operator's inbox and the customer will not jump to the top of the conversation list. Default is true (existing behavior).
{"bot_token": "example-bot-token", "button_variables": ["offer25"], "customer_phone": "1234567890", "email": "[email protected]", "name": "John Doe", "push_to_chat": true, "source": "web", "template_id": "template-uuid", "variable": ["John Doe", "#12345"]}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
template_id |
string |
Yes |
variable |
list |
Yes |
button_variables |
list |
No |
source |
string |
No |
bot_token |
string |
No |
name |
string |
No |
string |
No |
|
push_to_chat |
boolean (default true) |
No |
| Code | Message |
|---|---|
| 200 | {"message": "Template message sent successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Template ID is required."} |
| 400 | {"error": true, "message": "Variables are required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Get a single message by its WhatsApp message ID.
{"message_wa_id": "wamid.abc123"}
| Name | Type | Required |
|---|---|---|
message_wa_id |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": {"id": 1, "status": "delivered", "text": "Hello"}, "success": true} |
| 400 | {"error": true, "message": "Message WhatsApp Id is required"} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Message not found"} |
Get the conversation history of a customer with pagination.
{"customer_phone": "1234567890", "page": 1}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
page |
int |
No |
| Code | Message |
|---|---|
| 200 | {"current_page": 1, "messages": [{"from": "1234567890", "id": 1, "is_audio": false, "is_geo_location": false, "is_img": false, "is_pdf": false, "is_sticker": false, "is_video": false, "media_url": "https://example.com", "text": "Hello", "timestamp": 1630000000, "to": "0987654321"}], "pages": 1, "success": true, "total": 1} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 401 | {"error": true, "message": "Customer not found"} |
Check if a conversation is active (within the 24-hour window).
{"customer_phone": "1234567890"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"is_active": true, "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Customer not found"} |
Get all agents (sub-users).
{}
| Name | Type | Required |
|---|
| Code | Message |
|---|---|
| 200 | {"agents": [{"id": "uuid", "name": "Agent Name"}], "success": true} |
| 401 | {"error": true, "message": "Unauthorized"} |
Get all teams.
{}
| Name | Type | Required |
|---|
| Code | Message |
|---|---|
| 200 | {"success": true, "teams": [{"id": "uuid", "name": "Team Name"}]} |
| 401 | {"error": true, "message": "Unauthorized"} |
Get all chatbots.
{}
| Name | Type | Required |
|---|
| Code | Message |
|---|---|
| 200 | {"bots": [], "success": true} |
| 401 | {"error": true, "message": "Unauthorized"} |
Assign a chatbot to a customer.
{"bot_token": "bot-token-here", "customer_phone": "1234567890"}
| Name | Type | Required |
|---|---|---|
customer_phone |
string |
Yes |
bot_token |
string |
Yes |
| Code | Message |
|---|---|
| 200 | {"message": "Bot assigned successfully", "success": true} |
| 400 | {"error": true, "message": "Phone number is required."} |
| 400 | {"error": true, "message": "Bot token is required."} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 404 | {"error": true, "message": "Bot not found."} |
Get all WhatsApp message templates.
{}
| Name | Type | Required |
|---|
| Code | Message |
|---|---|
| 200 | {"success": true, "templates": []} |
| 401 | {"error": true, "message": "Unauthorized"} |
Create a new WhatsApp message template. Templates must be approved by WhatsApp before use. Supports: Body variables {{1}}, {{2}}, etc., Media headers (IMAGE, VIDEO, DOCUMENT, AUDIO), Buttons (URL, QUICK_REPLY, PHONE_NUMBER). Does NOT support: Header variables, MPM, Carousels, Catalogs.
{"body": "Hi {{1}}! Your order {{2}} has been confirmed. Total: {{3}}.", "body_examples": ["John Doe", "#12345", "$99.99"], "buttons": [{"example": "order-12345", "text": "Track Order", "type": "URL", "url": "https://example.com/track/{{1}}"}], "category": "MARKETING", "footer": "Thank you for shopping!", "header": {"format": "IMAGE"}, "language": "en_US", "media_url": "https://example.com/banner.jpg", "name": "order_confirmation", "template_type": "custom"}
Simple Text
Basic template with body text only, no variables
{"body": "Welcome to our store! We\u0027re glad to have you.", "category": "MARKETING", "language": "en_US", "name": "welcome_message"}
With Variables
Template with body variables {{1}}, {{2}}, {{3}}
{"body": "Hi {{1}}! Your order {{2}} will arrive on {{3}}.", "body_examples": ["John", "#12345", "Jan 30"], "category": "UTILITY", "language": "en_US", "name": "order_update"}
Image Header
Template with image header (no header variables supported)
{"body": "Summer Sale! Get {{1}} off.", "body_examples": ["25%"], "category": "MARKETING", "header": {"format": "IMAGE"}, "language": "en_US", "media_url": "https://example.com/banner.jpg", "name": "summer_sale"}
Video Header
Template with video header
{"body": "Check out our new {{1}}!", "body_examples": ["Smart Watch"], "category": "MARKETING", "header": {"format": "VIDEO"}, "language": "en_US", "media_url": "https://example.com/video.mp4", "name": "product_demo"}
PDF Document
Template with PDF document header
{"body": "Hi {{1}}, your invoice {{2}} is attached.", "body_examples": ["Customer", "INV-001"], "category": "UTILITY", "header": {"format": "DOCUMENT"}, "language": "en_US", "media_url": "https://example.com/invoice.pdf", "name": "invoice"}
Audio Header
Template with audio header
{"body": "Listen to this important message about {{1}}.", "body_examples": ["your account"], "category": "UTILITY", "header": {"format": "AUDIO"}, "language": "en_US", "media_url": "https://example.com/audio.mp3", "name": "voice_message"}
Quick Reply Button
Template with quick reply button
{"body": "We received your order {{1}}. Confirm?", "body_examples": ["#12345"], "buttons": [{"text": "Yes, Confirmed", "type": "QUICK_REPLY"}, {"text": "No, Cancel", "type": "QUICK_REPLY"}], "category": "UTILITY", "language": "en_US", "name": "order_received"}
Phone Call Button
Template with phone number button (CTA - Call)
{"body": "Need help with order {{1}}? Call us!", "body_examples": ["#12345"], "buttons": [{"phone_number": "+1234567890", "text": "Call Support", "type": "PHONE_NUMBER"}], "category": "UTILITY", "language": "en_US", "name": "customer_support"}
Multiple Buttons
Template with URL, Quick Reply, and Phone buttons
{"body": "Hi {{1}}! How can we help you?", "body_examples": ["Customer"], "buttons": [{"text": "Visit Help Center", "type": "URL", "url": "https://example.com/help"}, {"text": "Talk to Agent", "type": "QUICK_REPLY"}, {"phone_number": "+1234567890", "text": "Call Us", "type": "PHONE_NUMBER"}], "category": "UTILITY", "language": "en_US", "name": "help_center"}
Complete Template
Full template: Image header + Body variables + Footer + Buttons
{"body": "Hi {{1}}! Order {{2}} confirmed. Total: {{3}}. Delivery: {{4}}.", "body_examples": ["John", "#12345", "$99.99", "Jan 30"], "buttons": [{"text": "Contact Support", "type": "QUICK_REPLY"}], "category": "UTILITY", "footer": "Thank you for your purchase!", "header": {"format": "IMAGE"}, "language": "en_US", "media_url": "https://example.com/order-banner.jpg", "name": "order_complete"}
| Name | Type | Required |
|---|---|---|
name |
string |
Yes |
language |
string |
Yes |
category |
string |
Yes |
template_type |
string |
No |
header |
object |
No |
body |
string |
Yes |
body_examples |
array |
No |
footer |
string |
No |
buttons |
array |
No |
media_url |
string |
No |
| Code | Message |
|---|---|
| 200 | {"data": {"id": "1234567890", "status": "PENDING"}, "error": false, "message": "Template created successfully"} |
| 400 | {"error": true, "message": "Template name is required"} |
| 400 | {"error": true, "message": "Template name already exists"} |
| 400 | {"error": true, "message": "Body text is required"} |
| 400 | {"error": true, "message": "Invalid template configuration"} |
| 400 | {"error": true, "message": "Media link is not valid"} |
| 401 | {"error": true, "message": "Unauthorized"} |
| 500 | {"error": true, "message": "An unexpected error occurred"} |