Infobip
Infobip is a global communications platform that provide cloud-based messaging and omnichannel communication solutions for businesses.
Categories: Communication
Type: infobip/v1
Connections
Version: 1
API Key
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| key | API Key | STRING | true | |
| baseUrl | Base URL | STRING | Personalized base URL for API requests. | true |
Connection Setup
- Navigate to https://portal.infobip.com/homepage.
- Open left sidebar menu.
- Expand Developer Tools and click on API Keys.
- Click on Create api key.
- Fill in the required fields.
- Select all needed scopes:
inbound-message:read,whatsapp:manageandnumbers:manage. - Click on CREATE.
- You have your API key.
Actions
Make Outbound Call
Name: makeCall
Initiates an outbound voice call via the Infobip Calls API and executes a real-time workflow synchronously during the call. The action blocks until the call completes, allowing real-time audio processing and AI conversations over media streaming.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| to | To | STRING | The phone number to call in E.164 format. | true |
| from | From | STRING | The caller ID (your Infobip voice number) in E.164 format. | true |
| callsConfigurationId | Calls Configuration ID | STRING | The Infobip Calls configuration ID that the outbound call is placed under. Created in the Infobip portal or via the Calls API. | true |
| applicationId | Application ID | STRING | Optional Infobip application (subaccount) ID the call belongs to. | false |
| subWorkflow | Real-Time Workflow | STRING | The workflow ID to execute synchronously during the phone call. This workflow handles real-time audio processing and AI responses via media streaming. | true |
| timeout | Ring Timeout | INTEGER | Maximum time in seconds to wait for the call to be answered. If not answered within this time, the call fails. | false |
| maxDuration | Max Call Duration | INTEGER | Maximum duration in minutes to wait for the call to complete. After this time, the action returns with a timeout status. | false |
Example JSON Structure
{
"label" : "Make Outbound Call",
"name" : "makeCall",
"parameters" : {
"to" : "",
"from" : "",
"callsConfigurationId" : "",
"applicationId" : "",
"subWorkflow" : "",
"timeout" : 1,
"maxDuration" : 1
},
"type" : "infobip/v1/makeCall"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| callId | STRING | Unique identifier for the call |
| state | STRING | Final call state (FINISHED, timeout) |
| duration | INTEGER | Call duration in seconds |
| direction | STRING | Call direction (OUTBOUND) |
Output Example
{
"callId" : "",
"state" : "",
"duration" : 1,
"direction" : ""
}Send SMS
Name: sendSMS
Send a new SMS message to one or more recipients.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| sender | From | STRING | The sender ID. It can be alphanumeric or numeric (e.g., CompanyName). | true |
| to | To | ARRAY Items[STRING] | Message recipient numbers. | true |
| text | Text | STRING | Content of the message being sent. | true |
Example JSON Structure
{
"label" : "Send SMS",
"name" : "sendSMS",
"parameters" : {
"sender" : "",
"to" : [ "" ],
"text" : ""
},
"type" : "infobip/v1/sendSMS"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| bulkId | STRING | ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. |
| messages | ARRAY Items[{STRING(messageId), {INTEGER(groupId), STRING(groupName), INTEGER(id), STRING(name), STRING(description), STRING(action)}(status), STRING(destination), {INTEGER(messageCount)}(details)}] | An array of message objects of a single message or multiple messages sent under one bulk ID. |
Output Example
{
"bulkId" : "",
"messages" : [ {
"messageId" : "",
"status" : {
"groupId" : 1,
"groupName" : "",
"id" : 1,
"name" : "",
"description" : "",
"action" : ""
},
"destination" : "",
"details" : {
"messageCount" : 1
}
} ]
}Send Whatsapp Template Message
Name: sendWhatsappTemplateMessage
Send a template message.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| from | From | STRING | Registered WhatsApp sender number. Must be in international format and comply with WhatsApp's requirements. | true |
| to | To | STRING | Message recipient number. Must be in international format. | true |
| templateName | Template Name | STRING Depends Onfrom | Name of the WhatsApp template to use. | true |
| placeholders | DYNAMIC_PROPERTIES Depends OntemplateName | false |
Example JSON Structure
{
"label" : "Send Whatsapp Template Message",
"name" : "sendWhatsappTemplateMessage",
"parameters" : {
"from" : "",
"to" : "",
"templateName" : "",
"placeholders" : { }
},
"type" : "infobip/v1/sendWhatsappTemplateMessage"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| messages | ARRAY Items[{STRING(to), INTEGER(messageCount), STRING(messageId), {INTEGER(groupId), STRING(groupName), INTEGER(id), STRING(name), STRING(description), STRING(action)}(status)}] |
Output Example
{
"messages" : [ {
"to" : "",
"messageCount" : 1,
"messageId" : "",
"status" : {
"groupId" : 1,
"groupName" : "",
"id" : 1,
"name" : "",
"description" : "",
"action" : ""
}
} ]
}Send WhatsApp Text Message
Name: sendWhatsappTextMessage
Send a WhatsApp text message to a single recipient.
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| from | From | STRING | Registered WhatsApp sender number. Must be in international format and comply with WhatsApp's requirements. | true |
| to | To | STRING | Message recipient number. Must be in international format. | true |
| text | Text | STRING | Content of the message being sent. | true |
Example JSON Structure
{
"label" : "Send WhatsApp Text Message",
"name" : "sendWhatsappTextMessage",
"parameters" : {
"from" : "",
"to" : "",
"text" : ""
},
"type" : "infobip/v1/sendWhatsappTextMessage"
}Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| to | STRING | The destination address of the message. |
| messageCount | INTEGER | Number of messages required to deliver. |
| messageId | STRING | ID of the message sent. |
| status | OBJECT Properties{INTEGER(groupId), STRING(groupName), INTEGER(id), STRING(name), STRING(description), STRING(action)} | Status of the message. |
Output Example
{
"to" : "",
"messageCount" : 1,
"messageId" : "",
"status" : {
"groupId" : 1,
"groupName" : "",
"id" : 1,
"name" : "",
"description" : "",
"action" : ""
}
}Triggers
Inbound Voice Call
Name: inboundCall
Triggers when an inbound voice call is received via Infobip. The call is streamed to a real-time workflow for audio processing and AI conversation over media streaming.
Type: STATIC_WEBHOOK
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| subWorkflow | Real-Time Workflow | STRING | The workflow ID to execute synchronously during the phone call. This workflow handles real-time audio processing and AI responses. | true |
| signatureSecret | Webhook Signature Secret | STRING | Optional shared secret used to verify the HMAC signature Infobip sends on signed webhooks. When set, requests with a missing or invalid signature are rejected. Leave empty to skip signature verification. | false |
Output
Type: OBJECT
Properties
| Name | Type | Description |
|---|---|---|
| callId | STRING | Unique identifier for the call |
| from | STRING | Caller phone number |
| to | STRING | Called phone number |
| direction | STRING | Call direction (INBOUND) |
| state | STRING | Call state |
JSON Example
{
"label" : "Inbound Voice Call",
"name" : "inboundCall",
"parameters" : {
"subWorkflow" : "",
"signatureSecret" : ""
},
"type" : "infobip/v1/inboundCall"
}New SMS Message
Name: newSMS
Triggers when a new SMS message is received.
Type: DYNAMIC_WEBHOOK
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| number | Number | STRING | Number to monitor for new SMS messages. | true |
| keyword | Keyword | STRING | Keywords are words at the beginning of the message text of the inbound message that are used to filter out specific messages received on a number. | false |
Output
The output for this action is dynamic and may vary depending on the input parameters. To determine the exact structure of the output, you need to execute the action.
JSON Example
{
"label" : "New SMS Message",
"name" : "newSMS",
"parameters" : {
"number" : "",
"keyword" : ""
},
"type" : "infobip/v1/newSMS"
}Keyword Property
To learn more about keyword property, click here.
New WhatsApp Message
Name: newWhatsappMessage
Triggers when a new WhatsApp message is received.
Type: DYNAMIC_WEBHOOK
Properties
| Name | Label | Type | Description | Required |
|---|---|---|---|---|
| number | Number | STRING | Number to monitor for new WhatsApp messages. | true |
| keyword | Keyword | STRING | Keywords are words at the beginning of the message text of the inbound message that are used to filter out specific messages received on a number. | false |
Output
The output for this action is dynamic and may vary depending on the input parameters. To determine the exact structure of the output, you need to execute the action.
JSON Example
{
"label" : "New WhatsApp Message",
"name" : "newWhatsappMessage",
"parameters" : {
"number" : "",
"keyword" : ""
},
"type" : "infobip/v1/newWhatsappMessage"
}Keyword Property
To learn more about keyword property, click here.
What to do if your action is not listed here?
If this component doesn't have the action you need, you can use Custom Action to create your own. Custom Actions empower you to define HTTP requests tailored to your specific requirements, allowing for greater flexibility in integrating with external services or APIs.
To create a Custom Action, simply specify the desired HTTP method, path, and any necessary parameters. This way, you can extend the functionality of your component beyond the predefined actions, ensuring that you can meet all your integration needs effectively.
Additional Instructions
Keywords
Infobip keywords are specific words or phrases associated with a number that Infobip uses to decide how to route incoming messages and which actions to trigger.
In ByteChef, the Keyword field (used, for example, in the New WhatsApp Message trigger) lets you take advantage of this mechanism.
How keywords work
- A keyword is typically a word or short code that appears in the incoming message (for example:
START,HELP,SALES). - Infobip matches incoming messages against the configured keywords on a given number and can perform different actions based on which keyword was used.
- ByteChef passes the configured keyword to Infobip when enabling the webhook, so only messages that match that keyword (according to Infobip’s rules and configuration) will be delivered to the webhook and can trigger your workflow.
When to use a keyword
Use a keyword when you want to:
- Route only specific messages to this trigger (e.g. messages that start with
ORDER). - Have multiple workflows that react differently to messages sent to the same number, based on the keyword.
- Implement opt‑in / opt‑out flows or different “channels” (e.g.
NEWS,PROMO,SUPPORT) on a single number.
If you do not need keyword‑based routing and want to handle all incoming messages for a number with a single workflow, you can leave the keyword field empty (or follow your Infobip configuration strategy).
For detailed information about how keywords work in Infobip, see the official documentation.
Voice Calls (Real-Time Media Streaming)
The Make Outbound Call action and the Inbound Voice Call trigger stream call audio to a real-time sub-workflow over a WebSocket bridge, enabling live audio processing and AI voice conversations.
Operator setup
- Enable media replacement. Bidirectional audio (the sub-workflow both receiving caller audio and sending audio back into the call) requires media replacement to be enabled on the Infobip media-stream configuration. Without it, streaming is receive-only and the caller will not hear the workflow's responses.
- Public URL. ByteChef must be reachable at a public HTTPS URL so Infobip can open the
wss://media stream back to the platform bridge. - Calls configuration. Outbound calls require a Calls configuration ID (created in the Infobip portal or via the Calls API); optionally scope calls to a subaccount with an application ID.
- Webhook signature (recommended). Set a Webhook Signature Secret on the Inbound Voice Call trigger to reject unsigned or tampered inbound-call webhooks. Leave it empty to skip verification.
Note: the Infobip Calls API endpoints, field names, webhook signature header, and call-state values used by these operations follow Infobip's documented conventions. Verify them against your account's Calls API version before relying on voice in production.
How is this guide?
Last updated on