Infobip WhatsApp Business Messaging
Send, follow up and template WhatsApp messages through Infobip: open a conversation with an approved template, reply inside the 24-hour window with text, images, documents or quick-reply buttons, mark inbound messages as read, fetch the media customers send, and submit new templates for Meta approval.
Connect this API to an AI agent Browse all specs
What you can do with Infobip WhatsApp Business Messaging via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| POST | /whatsapp/1/message/template |
sendTemplateMessage | Send approved template messages to one or many customers |
| POST | /whatsapp/1/message/text |
sendTextMessage | Send a free-form text reply inside the 24-hour window |
| POST | /whatsapp/1/message/image |
sendImageMessage | Send an image by URL with an optional caption |
| POST | /whatsapp/1/message/document |
sendDocumentMessage | Send a document (PDF, invoice, menu) by URL |
| POST | /whatsapp/1/message/interactive/buttons |
sendButtonsMessage | Send a message with up to three quick-reply buttons |
| POST | /whatsapp/1/senders/{sender}/message/{messageId}/read |
markMessageAsRead | Mark a customer's message as read (blue ticks) |
| GET | /whatsapp/1/senders/{sender}/media/{mediaId} |
downloadInboundMedia | Download a photo, voice note or file a customer sent |
| GET | /whatsapp/2/senders/{sender}/templates |
listTemplates | List a sender's templates and their approval status |
| POST | /whatsapp/2/senders/{sender}/templates |
createTemplate | Submit a new template to Meta for approval |
| GET | /whatsapp/2/senders/{sender}/templates/{id} |
getTemplate | Get one template with its components and status |
Authentication
infobipApiKey
API key — sent as the Authorization header
Infobip API key sent as Authorization: App <api-key> (the word App, a space, then the key).
How to get a credential
- Sign in to the Infobip portal (a free trial account works; it includes a shared WhatsApp test sender).
- Open Developer tools > API keys and click Create API key.
- Give it a name and select the scopes below, then copy the key.
- Copy your personal base URL from the same page (e.g.
xyz123.api.infobip.com) and set it as the serverbaseUrlvariable. - In VX Agents, store the value as
App <api-key>.
Permissions used
| API scope | Operations |
|---|---|
whatsapp:message:send |
sendTemplateMessage, sendTextMessage, sendImageMessage, sendDocumentMessage, sendButtonsMessage |
whatsapp:inbound-message:read |
downloadInboundMedia |
whatsapp:manage |
markMessageAsRead, listTemplates, getTemplate, createTemplate (also covers every operation above) |
The simplest setup is one key with whatsapp:manage.
Common errors
- 401 Unauthorized: the header is not
App <key>, the key was revoked, or the base URL belongs to another account. - 403 Forbidden: the key lacks the scope, or the sender is not registered to your account. Trial accounts can only message their own verified number.
- 400 Bad Request: number not in international format (e.g. 441134960000, no + or 00), template name/language not approved, or a free-form message sent outside the 24-hour customer service window.
- 429 Too Many Requests: rate limit hit; back off and retry.
Store the key as a VX Agents credential (API key header) and never paste it into chat.
Usage guide
Setup
- Credential: an Infobip API key, stored as the full header value
App <api-key>(scopewhatsapp:managecovers everything here). - Base URL: set the server variable
baseUrlto your personal prefix from the Infobip portal (e.g.xyz123forhttps://xyz123.api.infobip.com). Pin it as a preset. - Preset worth pinning:
sender, your registered WhatsApp Business number in international format (e.g.441134960000). It is thefromof every message.
Message a customer
- Outside the 24-hour customer service window you can only send a template.
listTemplatesfor the sender and pick one whosestatusisAPPROVED;getTemplateshows its body placeholders and buttons. - Show the user the recipients, template and values, and get a yes. Business-initiated messages are billed and cannot be recalled.
sendTemplateMessagewith{"messages": [{"from": "<sender>", "to": "<number>", "content": {"templateName": "appointment_reminder", "language": "en", "templateData": {"body": {"type": "POSITIONAL_PARAMETERS", "placeholders": ["Anna", "10:00"]}}}}]}. Many recipients go inmessages; keepbulkIdand eachmessageId.- After the customer writes back (inbound messages arrive on your webhook), reply freely within 24 hours:
sendTextMessage(content.text),sendImageMessage/sendDocumentMessage(content.mediaUrl, public HTTPS), orsendButtonsMessage(content.body.textplus up to 3action.buttonsoftypeREPLYwithidandtitle). Confirm the content first. markMessageAsReadwith the inboundmessageIdto show blue ticks;downloadInboundMediawith themediaIdfrom the inbound webhook to fetch a customer's photo or file.
Create a template
Confirm wording with the user, then createTemplate with name (lowercase, underscores), language, category (MARKETING, UTILITY or AUTHENTICATION) and structure (body.text with {{1}} placeholders, optional header, footer, buttons). Meta reviews it; check status later with getTemplate.
Good to know
- Numbers are international format without
+or00. - Delivery and seen reports, and inbound messages, are pushed to webhooks set in the Infobip portal; they are not polled here.
- Marketing templates need the customer's opt-in.
- Deleting templates, flows or media is not part of this spec.
Source: Infobip WhatsApp API reference (https://www.infobip.com/docs/api/channels/whatsapp), checked 2026-10-20.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Infobip WhatsApp Business Messaging” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.