Infobip SMS
When an appointment reminder or a one-off promo has to go out by text: preview how Infobip will split and encode the message, send it now or at a set time with sendAt, then follow delivery reports, read replies, and reschedule or cancel a scheduled bulk.
Connect this API to an AI agent Browse all specs
What you can do with Infobip SMS 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 | /sms/1/preview |
previewSms | Preview character count, encoding and message parts before sending |
| POST | /sms/3/messages |
sendSms | Send SMS to one or many recipients, now or scheduled with sendAt |
| GET | /sms/3/reports |
getDeliveryReports | Fetch new delivery reports (each report is returned once) |
| GET | /sms/3/logs |
getMessageLogs | Search sent-message logs from the last 48 hours by number, status or bulk |
| GET | /sms/1/inbox/reports |
getInboundMessages | Fetch new incoming SMS replies (each message is returned once) |
| GET | /sms/1/bulks |
getScheduledBulk | Get the scheduled send time of a bulk |
| PUT | /sms/1/bulks |
rescheduleBulk | Move a scheduled bulk to a new send time |
| GET | /sms/1/bulks/status |
getBulkStatus | Get the status of a scheduled bulk (pending, paused, canceled...) |
| PUT | /sms/1/bulks/status |
updateBulkStatus | Pause, resume or cancel a scheduled bulk |
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).
- 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 |
|---|---|
sms:message:send |
sendSms, getDeliveryReports, getScheduledBulk, getBulkStatus |
sms:logs:read |
getMessageLogs |
sms:inbound-message:read |
getInboundMessages |
sms:manage |
previewSms, rescheduleBulk, updateBulkStatus (also covers every operation above) |
The simplest setup is one key with sms: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. On a trial account, you can only send to your own verified number.
- 400 Bad Request: invalid destination (use international format without +, e.g. 41793026727), empty text, or a
sendAtin the past or more than 180 days ahead. - 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>. - Base URL: set the server variable
baseUrlto your personal prefix from the Infobip portal (e.g.xyz123→https://xyz123.api.infobip.com). Pin it as a preset. - Preset worth pinning: your approved
sender(alphanumeric sender ID or number). Trial accounts send fromServiceSMSand only to your own verified number.
Send an SMS
previewSmswith thetextto seemessageCount,charactersRemainingand the encoding. Emoji or non-Latin text switches to Unicode, so each part holds fewer characters and costs more.- Show the user the recipients, sender and text, and get a yes. SMS costs money and cannot be recalled.
sendSmswithmessages: [{"sender": "MyShop", "destinations": [{"to": "41793026727"}], "content": {"text": "Hi Anna, see you tomorrow at 10:00."}}]. Numbers go in international format without+or00. Several recipients go indestinations. Several different texts go in separatemessagesentries.- To schedule, add
options.schedule.sendAt(ISO 8601 with offset, at most 180 days ahead) andoptions.schedule.bulkId(your own id, so you can manage the batch later). - Keep
bulkIdand eachmessageIdfrom the response.
Follow up
getMessageLogswithmessageId,bulkId,destinationorgeneralStatus(e.g.DELIVERED,UNDELIVERABLE,PENDING) to see what happened. Logs cover the last 48 hours, up to 1,000 per call.getDeliveryReportsandgetInboundMessagesreturn each report or reply only once. Use them when no webhook is set up, and keep what you read.- Scheduled batch:
getScheduledBulk/getBulkStatuswithbulkId,rescheduleBulkwith a newsendAt,updateBulkStatuswithPAUSED,PENDING(resume) orCANCELED. Confirm with the user before rescheduling or cancelling.
Good to know
- One GSM-7 SMS holds 160 characters (153 per part when split). Unicode holds 70 (67 per part).
- Rate limit on logs: about 120 requests a minute.
- Marketing messages must respect local opt-out and quiet-hours rules. Use
deliveryTimeWindowon a message to avoid night-time sends. - Source: Infobip SMS API reference (https://www.infobip.com/docs/api/channels/sms), checked 2026-10-16.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Infobip SMS” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.