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 header
Authorization: Bearer YOUR_WHATSYNC_TOKEN

Endpoint

Send message endpoint
POST https://clickup.whasupcrm.com/api/v1/messages/send

Send text

Text sends require a recipient phone number and non-empty message body. Use international format when possible.

curl text message
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 image message
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 document message
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

Node fetch
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 response
{
  "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

CodeMeaning
missing_bearer_tokenThe Authorization header is missing or malformed.
invalid_bearer_tokenThe bearer token is invalid.
invalid_requestRequest JSON is missing required fields.
invalid_phone_numberPhone number must contain 7 to 15 digits.
not_connectedThe connected WhatsApp account is offline.
recipient_not_foundThe phone number is not reachable on WhatsApp.
invalid_media_urlMedia URL is not a safe public HTTPS URL.
WhatsApp can limit or suspend accounts for unwanted or risky messaging. Use this API for expected, consent-based operational messages, not high-volume blasts.
Contact us on WhatsApp