Infobip Voice Messages & Text-to-Speech
Send, schedule and track automated phone calls through Infobip: read a text-to-speech message or play an audio file to one number or thousands, pick a neural voice per language, capture keypad (DTMF) answers, retry unanswered calls, then check delivery reports and call logs or pause a scheduled bulk.
Connect this API to an AI agent Browse all specs
What you can do with Infobip Voice Messages & Text-to-Speech 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 |
|---|---|---|---|
| GET | /tts/3/voices/{language} |
listTtsVoices | List the text-to-speech voices available for a language |
| POST | /tts/3/single |
sendVoiceMessage | Call one number and read a text or play an audio file |
| POST | /tts/3/multi |
sendMultipleVoiceMessages | Send different voice messages to different numbers in one request |
| POST | /tts/3/advanced |
sendAdvancedVoiceMessage | Send voice messages with scheduling, retries, keypad capture and delivery windows |
| GET | /voice/1/reports |
getVoiceDeliveryReports | Get delivery reports for sent voice messages (each report is returned once) |
| GET | /tts/3/logs |
getVoiceMessageLogs | Search logs of sent voice messages by number, bulk, status or date |
| GET | /tts/3/bulks |
getScheduledVoiceBulk | Get the scheduled send time of a voice message bulk |
| PUT | /tts/3/bulks |
rescheduleVoiceBulk | Change when a scheduled voice message bulk is sent |
| GET | /tts/3/bulks/status |
getVoiceBulkStatus | Check whether a scheduled voice bulk is pending, paused or finished |
| PUT | /tts/3/bulks/status |
setVoiceBulkStatus | Pause, resume or cancel a scheduled voice message 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; trial calls can only go to your own verified number).
- 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. - To show your own caller id, buy or verify a voice number under Channels and Numbers > Numbers.
Permissions used
| API scope | Operations |
|---|---|
voice-message:message:send (or message:send) |
listTtsVoices, sendVoiceMessage, sendMultipleVoiceMessages, sendAdvancedVoiceMessage, getScheduledVoiceBulk, rescheduleVoiceBulk, getVoiceBulkStatus, setVoiceBulkStatus |
voice-message:logs:read |
getVoiceMessageLogs |
voice-reports:read (or voice:logs:read) |
getVoiceDeliveryReports |
voice-message:manage |
every operation except getVoiceDeliveryReports |
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 one of the scopes above.
- 400 Bad Request: a number not in international format (e.g.
41793026727), alanguagecode the voice does not support, bothtextandaudioFileUrlset, or abulkIdthat is unknown or no longer scheduled. - 429 Too Many Requests: rate limit hit (logs allow 120 requests a minute); wait and retry.
Store the value App <api-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
App <api-key>. Set the serverbaseUrlto your personal prefix (e.g.xyz123forxyz123.api.infobip.com). - Worth pinning: your caller id
from(a voice number on your account, E.164 without+) and your usuallanguagecode (e.g.en).
Send a voice message and follow it up
- Pick a voice:
listTtsVoiceswithlanguage(e.g.en,de) andincludeNeural=true; use a returnednameinvoice.name. - One number:
sendVoiceMessagewithfrom,to, and eithertext+language(text-to-speech, SSML allowed) oraudioFileUrl(MP3 or WAV). - Different messages to different people:
sendMultipleVoiceMessageswithmessages[], each with its owntolist andtextoraudioFileUrl. - Advanced calls:
sendAdvancedVoiceMessagesupportssendAt(schedule),retry(minPeriod,maxPeriod,maxCountin minutes),maxDtmf/dtmfTimeoutto capture keypad answers,machineDetection,deliveryTimeWindow(days + hours),callTransfers, andnotifyUrlfor reports. Set your ownbulkIdto manage the batch later. - Results:
getVoiceDeliveryReports(each report is returned only once;dtmfCodesandansweredByare invoiceCall), orgetVoiceMessageLogsfiltered byto,bulkId,generalStatus(DELIVERED,UNDELIVERABLE, ...) andsentSince. - Scheduled bulks:
getScheduledVoiceBulk/rescheduleVoiceBulk(newsendAt),getVoiceBulkStatus/setVoiceBulkStatuswithPAUSED,PROCESSING(resume) orCANCELED.
Every send places real phone calls that are billed per second: confirm the numbers, text and schedule with the user before calling any send, reschedule or status change.
Good to know
- Numbers are E.164 digits without
+(e.g.41793026727). Send eithertextoraudioFileUrl, not both. sendAtand log dates are ISO 8601 with offset (e.g.2026-11-01T16:00:00.000+0000).- Logs cover only the last 48 hours. Logs and delivery reports return 50 rows unless you set
limit. - Audio files must be under 4 MB and reachable by a public URL (single send: mp3 or wav).
- Trial accounts can only call the number verified at sign-up.
Source: Infobip Voice API reference (https://www.infobip.com/docs/api/channels/voice), checked 2026-10-25.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Infobip Voice Messages & Text-to-Speech” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.