HTTP API
Send WhatsApp messages from Whatsync
Use the Send API from automations, support tools, and backend jobs. v1 supports direct text, image, and document messages from the connected WhatsApp account. It uses the same bearer token as MCP.
Authentication
Send a bearer token with every request. Copy the token from the dashboard MCP Setup card. The token is scoped to one Whatsync installation and sends from that workspace's WhatsApp account.
Authorization: Bearer YOUR_WHATSYNC_TOKENEndpoint
POST https://clickup.whasupcrm.com/api/v1/messages/sendSend text
Text sends require a recipient phone number and non-empty message body. Use international format when possible.
curl -X POST "https://clickup.whasupcrm.com/api/v1/messages/send" \
-H "Authorization: Bearer YOUR_WHATSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550123",
"type": "text",
"text": "The sprint update is ready in ClickUp."
}'Send image
Image URLs must be public HTTPS URLs. Localhost and private network addresses are rejected.
curl -X POST "https://clickup.whasupcrm.com/api/v1/messages/send" \
-H "Authorization: Bearer YOUR_WHATSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550123",
"type": "image",
"image": {
"url": "https://example.com/screenshot.png",
"caption": "Latest task screenshot."
}
}'Send document
Documents also require public HTTPS URLs. Provide a file name and MIME type when your system knows them.
curl -X POST "https://clickup.whasupcrm.com/api/v1/messages/send" \
-H "Authorization: Bearer YOUR_WHATSYNC_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550123",
"type": "document",
"document": {
"url": "https://example.com/brief.pdf",
"fileName": "brief.pdf",
"mimetype": "application/pdf",
"caption": "Project brief attached."
}
}'Node example
const response = await fetch("https://clickup.whasupcrm.com/api/v1/messages/send", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_WHATSYNC_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
to: "+14155550123",
type: "text",
text: "ClickUp task updated.",
}),
});
const result = await response.json();Responses
{
"accepted": true,
"messageId": "BAE5...",
"remoteJid": "[email protected]",
"to": "+14155550123",
"normalizedPhone": "14155550123",
"status": "accepted"
}The API returns after WhatsApp accepts the message. It does not expose queue or delivery-attempt status endpoints.
Error codes
| Code | Meaning |
|---|---|
| missing_bearer_token | The Authorization header is missing or malformed. |
| invalid_bearer_token | The bearer token is invalid. |
| invalid_request | Request JSON is missing required fields. |
| invalid_phone_number | Phone number must contain 7 to 15 digits. |
| not_connected | The connected WhatsApp account is offline. |
| recipient_not_found | The phone number is not reachable on WhatsApp. |
| invalid_media_url | Media URL is not a safe public HTTPS URL. |