Sending
Link button (CTA URL)
POST
/v1/messagesExperimental, with the same risks as buttons and lists: it can break the WhatsApp app on the sending iPhone, may not render on the recipient's phone (especially iOS), and can be dropped silently. A media header on top of that is untested territory. If you need reliable link buttons at scale, use WhatsApp's official Business Cloud API.
A message with an optional header, a body and one button that opens a link. A plain-text version with the link is built into the message, so phones that don't draw the button still show the URL.
Request
POST https://api.api-supp.com/v1/messages with type: "cta_url"
| Field | Type | Notes |
|---|---|---|
recipient | string | Required |
body | string | Required. The main text |
cta | object | Required. {display_text, url}; the URL must start with http:// or https:// |
header | object | Optional: {type: "text", text} or {type: "image" | "video" | "document", media_id} |
footer | string | Optional small grey text |
For a media header, upload the file first and use its media_id.
json
{
"recipient": "14155550132",
"type": "cta_url",
"header": { "type": "video", "media_id": "mu_xyz..." },
"body": "Check out the demo and book a slot below.",
"footer": "Limited spots this week",
"cta": { "display_text": "Book a call", "url": "https://example.com/book" }
}Response
json
{
"ok": true,
"recipient": "14155550132@s.whatsapp.net",
"wa_message_id": "3EB0CB97F37F91F563B060",
"cta_url": {
"header": { "type": "video", "media_id": "mu_xyz..." },
"body": "Check out the demo and book a slot below.",
"footer": "Limited spots this week",
"cta": { "display_text": "Book a call", "url": "https://example.com/book" },
"fallback_text": "Check out...\n\nBook a call: https://example.com/book\n\nLimited spots this week"
}
}Errors
400bad URL, missingbodyorcta, or an unknownheader.type404unknownheader.media_id502WhatsApp rejected the message or the header upload failed