API docsLog inCreate account
Sending

Link button (CTA URL)

POST/v1/messages
Experimental, 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"

FieldTypeNotes
recipientstringRequired
bodystringRequired. The main text
ctaobjectRequired. {display_text, url}; the URL must start with http:// or https://
headerobjectOptional: {type: "text", text} or {type: "image" | "video" | "document", media_id}
footerstringOptional 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

  • 400 bad URL, missing body or cta, or an unknown header.type
  • 404 unknown header.media_id
  • 502 WhatsApp rejected the message or the header upload failed