Infobip Voice API

Infobip Voice API allows you to engage into voice communication with your customer using the Voice API features. With Calls API, you can use our granular APIs to create any inbound or outbound voice and video scenario you require. — 113 operation path(s) and 16 webhook(s) in Infobip's published OpenAPI.

OpenAPI Specification

infobip-voice-openapi.json Raw ↑
{
 "openapi":"3.1.0",
 "info":{
  "title":"Infobip OpenAPI Specification",
  "description":"OpenAPI Specification that contains all public endpoints and webhooks.",
  "contact":{
   "name":"Infobip support",
   "email":"support@infobip.com"
  },
  "version":"3.210.0",
  "x-generatedAt":"2026-07-23T15:23:47.459971396Z"
 },
 "tags":[
  {
   "name":"channels",
   "description":"Create a perfect customer experience by using the channels your customer already use and love.\n",
   "x-type":"category",
   "x-displayName":"Channels"
  },
  {
   "name":"voice",
   "description":"Infobip Voice API allows you to engage into voice communication with your customer using the Voice API features.\n\nWith Calls API, you can use our granular APIs to create any inbound or outbound voice and video scenario you require. Alternatively, you can use our high level APIs such as:\n\n* Voice Message, to send your customers Text-To-Speech or Pre-recorded message\n* Interactive Voice Response, to create and execute inbound or outbound IVR scenarios enabling interactive communication with your customers\n* Click-to-Call or Number Masking solutions, to  establish live conversation between two parties and where you can also protect your customer's identity by using anonymization.\n\nHuge benefit of Voice channel is also that you can reach your customers not only on their mobile but also on their landline phones.\n\nAll Voice calls can be recorded.\n\nTo enable recording feature on Voice calls, please check each Channels Voice API.\n\nYou may fetch recorded audio files using [Recording page](https://portal.infobip.com/channels-and-numbers/channels/voice-and-webrtc/recording) section of the portal.\n\n[Learn more about Voice channel and use cases](https://www.infobip.com/products/voice)\n",
   "x-type":"product",
   "x-displayName":"Voice"
  },
  {
   "name":"calls",
   "description":"With Calls API, you can use our granular APIs to create any inbound or outbound voice and video scenario you require.\n\nEvery inbound connection to, or outbound connection from the Infobip platform is designated as a call leg, or simply put, a call. All API methods under the [**Call Legs**](#channels/voice/calls/call-legs) section allow your application to create, answer and perform actions on individual calls.\n\nApplications can connect multiple calls together, no matter if these calls are inbound or outbound, and no matter the type of the endpoint for each of these calls. When your application needs to connect only two calls together, it is not necessary to explicitly manage conference objects and use conferencing APIs – the *connect* API method on calls will manage these conferencing objects on your behalf. When your application needs to put together 3 or more calls together, you need to use the conference methods and their related actions under the [**Conference Calls**](#channels/voice/calls/conference-calls) section.\n\nA [**Calls Configuration**](https://www.infobip.com/docs/api/channels/voice/calls/calls-configurations) is a logical entity that represents a voice or video application you are implementing and hosting in your own environment, whether on premise or at your cloud hosting services. This logical entity includes only ID and Name, and is a placeholder for linking other configurations with your application.\n\nOne mandatory link to set up is linking you Calls Configuration with Subscriptions. Calls API is event-driven platform, and you need to define webhook to receive those events, as a pre-requisite for executing your business logic. Event subscriptions are defined on [**Subscriptions API**](https://www.infobip.com/docs/api/platform/subscriptions-api). One of available parameters, when defining subscription criteria, is `callsConfigurationId`, which allows you to define webhooks for Calls Configurations you create.\n\nAnother mandatory link to Calls Configurations is actual traffic. The reference of the Calls Configuration (`callsConfigurationId`) must be specified in API calls your application will make towards Infobip to create or manipulate calls, conferences and dialogs, ensuring that corresponding events are routed to the right webhooks. All methods to create and manage Calls Configurations are under the **Configurations** section.\n",
   "x-type":"module",
   "x-displayName":"Calls"
  },
  {
   "name":"calls-configurations",
   "description":"Creating Calls Configuration is precondition for using Calls API. You will find APIs for managing your configurations in this section.",
   "x-type":"submodule",
   "x-displayName":"Configurations"
  },
  {
   "name":"calls-configuration",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls configuration"
  },
  {
   "name":"call-legs",
   "description":"Every inbound connection to, or outbound connection from the Infobip platform is designated as a call leg, or simply put, a call. All API methods in this section allow your application to create, answer and perform actions on individual calls.",
   "x-type":"submodule",
   "x-displayName":"Call Legs"
  },
  {
   "name":"calls-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Management"
  },
  {
   "name":"calls-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Operations"
  },
  {
   "name":"application-transfer-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Application Transfer"
  },
  {
   "name":"conference-calls",
   "description":"Applications can connect multiple calls together, no matter if these calls are inbound or outbound, and no matter the type of the endpoint for each of these calls. \n\nWhen your application needs to connect only two calls together, it is not necessary to explicitly manage conference objects and use conferencing APIs – the *connect* API method on calls will manage these conferencing objects on your behalf.\n\nWhen your application needs to put together 3 or more calls together, you need to use the conference methods and their related actions.\n",
   "x-type":"submodule",
   "x-displayName":"Conference Calls"
  },
  {
   "name":"conference-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Conference Management"
  },
  {
   "name":"conference-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Conference Operations"
  },
  {
   "name":"dialog-calls",
   "description":"A Dialog offers another way to connect two calls together without relying on the implicit or explicit creation of a conference. \n\nTwo calls connected over a Dialog cannot be joined by additional participants and the overall connection flow will result in less events than when using other methods, such as `conference` or `connect`.\n\nAnother difference between Dialog and Connect/Conference APIs is that, unlike the latter, Dialog allows for early media propagation & media bypass. \n\nWhen creating a Dialog on an unanswered inbound call, the inbound call will be automatically answered once the destination party answers the call.\n",
   "x-type":"submodule",
   "x-displayName":"Dialog Calls"
  },
  {
   "name":"dialog-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Dialog Management"
  },
  {
   "name":"dialog-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Dialog Operations"
  },
  {
   "name":"sip-trunks",
   "description":"Calls API allows your application to handle both inbound and outbound SIP calls. \n\nBefore your application can process an inbound SIP call or create an outbound one, you need to create at least one new SIP trunk with methods listed below.\n",
   "x-type":"submodule",
   "x-displayName":"SIP Trunks"
  },
  {
   "name":"sip-trunk-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"SIP Trunk Management"
  },
  {
   "name":"sip-trunk-status-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"SIP Trunk Status Management"
  },
  {
   "name":"sip-trunk-service-address-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"SIP Trunk Service Address Management"
  },
  {
   "name":"files-and-recordings",
   "description":"Files operations allow the upload, list and delete audio files. These audio files can be played back in calls and conferences.\n\nRecordings methods allow to list, retrieve and delete audio and video recordings performed on calls and conferences.\n",
   "x-type":"submodule",
   "x-displayName":"Files And Recordings"
  },
  {
   "name":"file-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"File Operations"
  },
  {
   "name":"recording-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Recording Operations"
  },
  {
   "name":"media-stream",
   "description":"Calls API allows your application to stream outbound call media to an arbitrary host. Before initiating the stream, you will need to create at least one new media-stream configuration. After creating the configuration, use the configuration ID within a call to start/stop streaming media. Media is streamed as a series of raw bytes. Currently only audio is supported.",
   "x-type":"submodule",
   "x-displayName":"Media streaming"
  },
  {
   "name":"media-stream-configuration",
   "description":"",
   "x-type":"section",
   "x-displayName":"Media stream configuration"
  },
  {
   "name":"calls-applications",
   "description":"Most actions performed on calls, conferences and dialogs using the Calls API will trigger one or several events to confirm the completion of the action’s execution, to update on call status or to raise an error. Events are sent to your exposed application webhooks using Subscriptions. \n\nFor more information about Calls application and subscriptions, read the following [documentation](https://www.infobip.com/docs/voice-and-video/calls#applications-concepts). Subscriptions can be managed via [API](https://www.infobip.com/docs/api/platform/subscriptions-api) or on the [Portal](https://portal.infobip.com/dev/subscriptions). The objective of this documentation is to list and document the content of all possible Calls API events you can configure via subscriptions.\n",
   "x-type":"submodule",
   "x-displayName":"Calls Events"
  },
  {
   "name":"application-webhooks",
   "description":"",
   "x-type":"section",
   "x-displayName":"Webhooks"
  },
  {
   "name":"bulks",
   "description":"The bulks API methods allow you to create multiple calls with a single request and managed the scheduled bulks. Calls that will be generated with the bulk methods support the same options as when creating singular calls, such as automated machine detection, recording and support of multiple endpoint types (phone, webRTC, SIP or Viber). Bulk calls do support additional parameters such as:\n\n* scheduling: when to start the call generation, and which are calling time windows for these calls to be generated\n* validity period: how long should Infobip try to generate these calls. This is a particularly interesting parameter to consider when defining calling time windows\n* call rate: the number of calls you should start during the specified time unit (such as 15 calls per minute or 60 calls per hour)\n\nMultiple bulks, each targeting multiple destinations with their own schedule and validity, can be bundled in a single request.\n\nBulks can be paused, resumed, canceled or rescheduled. Each new call within a bulk will result in the same stream of event status update as individually created calls (call_started, call_pre_established, call_ringing,…), giving your application full visibility and control about how each individual call needs to be handled.\n",
   "x-type":"submodule",
   "x-displayName":"Bulks"
  },
  {
   "name":"bulk-call-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Bulk Calls Management"
  },
  {
   "name":"bulk-call-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Bulk Calls Operations"
  },
  {
   "name":"calls-markup-language",
   "description":"Calls Markup Language (CML) is a simple JSON-based language that enables you to define the flow of your voice application in a human readable format.",
   "x-type":"module",
   "x-displayName":"Calls Markup Language"
  },
  {
   "name":"calls-markup-language-create",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Markup Language"
  },
  {
   "name":"markup-language-instructions",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Markup Language Webhook"
  },
  {
   "name":"markup-language-instructions-async",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Markup Language Webhook Async"
  },
  {
   "name":"calls-markup-language-configuration",
   "description":"",
   "x-type":"section",
   "x-displayName":"Calls Markup Language Configuration"
  },
  {
   "name":"voice-message",
   "description":"The Voice Message API initiate outbound calls to one or more destination numbers (landline or mobile).  When the call has been answered, pre-recorded or text-to-speech converted audio file will be played to the recipient. Three flavors of voice messaging are available:\n\n* Single voice message: call one target number at a time, and play an audio file or text to speech\n* Multiple voice message: same as simple, but allows to define an array of messages, each with their own multiple target numbers\n* Advanced voice message: same as multiple, but\n  * Can use Automated Machine Detection\n  * Can define schedule for sending calls\n  * Can define acceptable time windows for sending\n  * Can capture 1 DTMF input from the callee(s), and report it via webhook, or or use DTMF input to forward the call to defined destination\n",
   "x-type":"module",
   "x-displayName":"Voice Message"
  },
  {
   "name":"voice-message-sending-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Voice Message Sending Operations"
  },
  {
   "name":"voice-message-scheduling-operations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Voice Message Scheduling Operations"
  },
  {
   "name":"interactive-voice-response",
   "description":"The IVR API enables the creation of inbound and outbound interactive call scenarios. For inbound calls, once your scenario is created you will need to link this scenario to the phone number you are renting on the Infobip platform using the [voice setup on number](#platform-connectivity/numbers/create-voice-setup-on-number) method.\n\nIVR scenarios can use the Record action to record a portion of the call. These recordings can be retrieved using the *Search Voice IVR Recorded Files* and *Download Voice IVR Recorded File*. Alternatively, IVR recorded audio can also be found using the [Search Recording](#channels/voice/search-recordings) method.\n",
   "x-type":"module",
   "x-displayName":"Interactive Voice Response"
  },
  {
   "name":"manage-ivr-scenarios",
   "description":"",
   "x-type":"section",
   "x-displayName":"Manage IVR Scenarios"
  },
  {
   "name":"retrieve-recorded-files",
   "description":"",
   "x-type":"section",
   "x-displayName":"Retrieve Recorded Files"
  },
  {
   "name":"ivr-uploaded-files",
   "description":"",
   "x-type":"section",
   "x-displayName":"Manage uploaded files"
  },
  {
   "name":"click-to-call",
   "description":"Click To Call",
   "x-type":"module",
   "x-displayName":"Click To Call"
  },
  {
   "name":"voice-reports-and-logs",
   "description":"Voice Reports And Logs",
   "x-type":"module",
   "x-displayName":"Voice Reports And Logs"
  },
  {
   "name":"number-masking",
   "description":"The Number Masking service enables two parties to engage in a conversation over the phone without exposing their phone numbers to each other. This service is ideal for businesses that share customer information with third parties. Have in mind that the Number masking mapping has to be implemented on your side in order to define to which phone number the incoming call should be forwarded to. Number masking mapping depends on your business logic.\n\nAll Number Masking calls can be recorded. To enable recording feature on Number masking calls, please check [Voice recording feature](#platform-connectivity/numbers/create-recording-configuration) documentation section. Recording on Number masking calls could be enabled using [Apps section](https://portal.infobip.com/apps/voice) of the portal.\n\nTo fetch recorded audio files please check [Voice recording audio page](#channels/voice/search-recordings). You may also fetch recorded audio files using [Recording page](https://portal.infobip.com/analyze/recordings) section of the portal.\n\n[Read more](https://www.infobip.com/docs/voice-and-video/number-masking#setup-using-api-setup)\n",
   "x-type":"module",
   "x-displayName":"Number Masking"
  },
  {
   "name":"number-masking-configurations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Number Masking Configurations"
  },
  {
   "name":"number-masking-events",
   "description":"",
   "x-type":"section",
   "x-displayName":"Number Masking Events"
  },
  {
   "name":"number-masking-credentials",
   "description":"",
   "x-type":"section",
   "x-displayName":"Number Masking Credentials"
  },
  {
   "name":"routing",
   "description":"This API offers advanced calls routing features. You can use it to set up destinations of different types and routing logic between them.\n",
   "x-type":"module",
   "x-displayName":"Call Routing application"
  },
  {
   "name":"call-routing-configurations",
   "description":"",
   "x-type":"section",
   "x-displayName":"Call Routing Configuration"
  },
  {
   "name":"call-routing-recordings",
   "description":"",
   "x-type":"section",
   "x-displayName":"Call Routing Recordings"
  },
  {
   "name":"call-routing-events",
   "description":"",
   "x-type":"section",
   "x-displayName":"Call Routing Events"
  },
  {
   "name":"call-routing-status-management",
   "description":"",
   "x-type":"section",
   "x-displayName":"Call Routing Status Management"
  },
  {
   "name":"call-routing-simulator",
   "description":"",
   "x-type":"section",
   "x-displayName":"Call Routing Simulator"
  }
 ],
 "paths":{
  "/calls/1/configurations":{
   "get":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "calls-configurations",
     "calls-configuration"
    ],
    "summary":"Get calls configurations",
    "description":"Get calls configurations.",
    "operationId":"get-calls-configurations",
    "parameters":[
     {
      "name":"page",
      "in":"query",
      "description":"Results page to retrieve (0..N).",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"integer",
       "format":"int32",
       "default":0,
       "minimum":0
      }
     },
     {
      "name":"size",
      "in":"query",
      "description":"Number of records per page.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "type":"integer",
       "format":"int32",
       "default":20,
       "maximum":100,
       "minimum":1
      }
     }
    ],
    "responses":{
     "200":{
      "description":"Success",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/f0c12807aec90d20a332deb5d4c4ff89651a8119eb6a5fa7e1d6e803f3c0e71b.CallsConfigurationPage"
        },
        "examples":{
         "List of calls configurations":{
          "summary":"List of calls configurations",
          "value":{
           "results":[
            {
             "id":"63467c6e2885a5389ba11d80",
             "name":"Calls configuration"
            }
           ],
           "paging":{
            "page":0,
            "size":1,
            "totalPages":1,
            "totalResults":1
           }
          }
         }
        }
       }
      }
     },
     "400":{
      "description":"Bad request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e8b4ac5a98b4fdd5509637ee70be50d1c508e5a4c9ac2c19485e7cdc7eb9bd4e.ApiException"
        },
        "examples":{
         "Error responses":{
          "summary":"Error responses",
          "description":"Error responses",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"BAD_REQUEST",
             "text":"Request is invalid."
            }
           }
          }
         },
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"BAD_REQUEST",
             "text":"Bad request"
            }
           }
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "calls:manage",
     "calls:configuration:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   },
   "post":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "calls-configurations",
     "calls-configuration"
    ],
    "summary":"Create calls configuration",
    "description":"Create calls configuration.",
    "operationId":"create-calls-configuration",
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationCreateRequest"
       },
       "examples":{
        "Request example":{
         "summary":"Request example",
         "value":{
          "id":"63467c6e2885a5389ba11d80",
          "name":"Calls configuration"
         }
        }
       }
      }
     },
     "required":true
    },
    "responses":{
     "201":{
      "description":"Calls configuration created.",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationResponse"
        },
        "examples":{
         "Response example":{
          "summary":"Response example",
          "value":{
           "id":"63467c6e2885a5389ba11d80",
           "name":"Calls configuration"
          }
         }
        }
       }
      }
     },
     "400":{
      "description":"Bad request",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e8b4ac5a98b4fdd5509637ee70be50d1c508e5a4c9ac2c19485e7cdc7eb9bd4e.ApiException"
        },
        "examples":{
         "Error responses":{
          "summary":"Error responses",
          "description":"Error responses",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"BAD_REQUEST",
             "text":"Request is invalid."
            }
           }
          }
         },
         "Bad request":{
          "summary":"Bad request",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"BAD_REQUEST",
             "text":"Bad request"
            }
           }
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "calls:manage",
     "calls:configuration:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":0,
      "timeUnit":"m"
     }
    ]
   }
  },
  "/calls/1/configurations/{callsConfigurationId}":{
   "get":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "calls-configurations",
     "calls-configuration"
    ],
    "summary":"Get calls configuration",
    "description":"Get a single calls configuration.",
    "operationId":"get-calls-configuration",
    "parameters":[
     {
      "name":"callsConfigurationId",
      "in":"path",
      "description":"Calls configuration ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      }
     }
    ],
    "responses":{
     "200":{
      "description":"Success",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationResponse"
        },
        "examples":{
         "Response example":{
          "summary":"Response example",
          "value":{
           "id":"63467c6e2885a5389ba11d80",
           "name":"Calls configuration"
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "description":"Not found",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e8b4ac5a98b4fdd5509637ee70be50d1c508e5a4c9ac2c19485e7cdc7eb9bd4e.ApiException"
        },
        "examples":{
         "Error responses":{
          "summary":"Error responses",
          "description":"Error responses",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"NOT_FOUND",
             "text":"Resource was not found."
            }
           }
          }
         }
        }
       }
      }
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "calls:manage",
     "calls:configuration:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   },
   "put":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "calls-configurations",
     "calls-configuration"
    ],
    "summary":"Update calls configuration",
    "description":"Update calls configuration.",
    "operationId":"update-calls-configuration",
    "parameters":[
     {
      "name":"callsConfigurationId",
      "in":"path",
      "description":"Calls configuration ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      }
     }
    ],
    "requestBody":{
     "content":{
      "application/json":{
       "schema":{
        "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationUpdateRequest"
       },
       "examples":{
        "Update request example":{
         "summary":"Update request example",
         "value":{
          "name":"Calls configuration"
         }
        }
       }
      }
     },
     "required":true
    },
    "responses":{
     "200":{
      "description":"Success",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationResponse"
        },
        "examples":{
         "Update response example":{
          "summary":"Update response example",
          "value":{
           "id":"63467c6e2885a5389ba11d80",
           "name":"Calls configuration"
          }
         }
        }
       }
      }
     },
     "400":{
      "$ref":"#/components/responses/ApiException400"
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "description":"Not found",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e8b4ac5a98b4fdd5509637ee70be50d1c508e5a4c9ac2c19485e7cdc7eb9bd4e.ApiException"
        },
        "examples":{
         "Error responses":{
          "summary":"Error responses",
          "description":"Error responses",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"NOT_FOUND",
             "text":"Resource was not found."
            }
           }
          }
         }
        }
       }
      }
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "calls:manage",
     "calls:configuration:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   },
   "delete":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "calls-configurations",
     "calls-configuration"
    ],
    "summary":"Delete calls configuration",
    "description":"Delete calls configuration.",
    "operationId":"delete-calls-configuration",
    "parameters":[
     {
      "name":"callsConfigurationId",
      "in":"path",
      "description":"Calls configuration ID.",
      "required":true,
      "style":"simple",
      "explode":false,
      "schema":{
       "type":"string"
      }
     }
    ],
    "responses":{
     "200":{
      "description":"Success",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/87fdb606ad2c440ed89e04f515deb90150ccd79b7e43f8b50549f5895d6c3429.CallsConfigurationResponse"
        },
        "examples":{
         "Delete response example":{
          "summary":"Delete response example",
          "value":{
           "id":"63467c6e2885a5389ba11d80",
           "name":"Calls configuration"
          }
         }
        }
       }
      }
     },
     "401":{
      "$ref":"#/components/responses/ApiException401"
     },
     "403":{
      "$ref":"#/components/responses/ApiException403"
     },
     "404":{
      "description":"Not found",
      "content":{
       "application/json":{
        "schema":{
         "$ref":"#/components/schemas/e8b4ac5a98b4fdd5509637ee70be50d1c508e5a4c9ac2c19485e7cdc7eb9bd4e.ApiException"
        },
        "examples":{
         "Error responses":{
          "summary":"Error responses",
          "description":"Error responses",
          "value":{
           "requestError":{
            "serviceException":{
             "messageId":"NOT_FOUND",
             "text":"Resource was not found."
            }
           }
          }
         }
        }
       }
      }
     },
     "429":{
      "$ref":"#/components/responses/ApiException429"
     },
     "500":{
      "$ref":"#/components/responses/ApiException500"
     }
    },
    "security":[
     {
      "IBSSOTokenHeader":[]
     },
     {
      "APIKeyHeader":[]
     },
     {
      "Basic":[]
     },
     {
      "OAuth2":[]
     }
    ],
    "x-scopes":[
     "calls:manage",
     "calls:configuration:manage"
    ],
    "x-throttling-info":[
     {
      "type":"time",
      "numberOfRequests":100,
      "numberOfTimeUnits":0,
      "timeUnit":"s"
     }
    ]
   }
  },
  "/calls/1/calls":{
   "get":{
    "tags":[
     "channels",
     "voice",
     "calls",
     "call-legs",
     "calls-management"
    ],
    "summary":"Get calls",
    "description":"Get calls with pagination.",
    "operationId":"get-calls",
    "parameters":[
     {
      "name":"type",
      "in":"query",
      "description":"Call endpoint type.",
      "required":false,
      "style":"form",
      "explode":true,
      "schema":{
       "$ref":"#/components/schemas/4527871876f1b326359cd9e5dcf

# --- truncated at 32 KB (1381 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/infobip/refs/heads/main/openapi/infobip-voice-openapi.json