8x8

8x8 Voice Messaging API

The Voice Messaging API from 8x8 — 1 operation(s) for voice messaging.

Operations 1

POST /api/v1/subaccounts/{subAccountId}/callflows Send Callflow #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/8x8-voice-messaging-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

8x8-voice-messaging-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Voice Messaging API
  version: '1.0'
  description: Voice API documentation
  contact:
    name: 8x8 Inc
    url: https://cpaas.8x8.com
    email: cpaas-support@8x8.com
  termsOfService: https://cpaas.8x8.com/sg/terms-and-conditions/
servers:
- url: https://voice.8x8.com
security:
- apiKey: []
tags:
- name: Voice Messaging
paths:
  /api/v1/subaccounts/{subAccountId}/callflows:
    post:
      tags:
      - Voice Messaging
      summary: Send Callflow
      operationId: Send-Callflow
      parameters:
      - $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1numbers/get/parameters/0'
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - title: Callflow Request
                type: object
                properties:
                  validUntil:
                    type: string
                    description: 'Optional date time. format: YYYY-MM-DDTHH:MM:SS.SSSZ'
                  callflow:
                    type: array
                    items:
                      type: object
                      anyOf:
                      - title: MakeCall
                        type: object
                        properties:
                          action:
                            type: string
                            enum:
                            - makeCall
                            description: "makeCall enables you to create an outbound voice call to a specified destination with the caller id \nspecified as source. Once the call is answered by the receiving party, the rest of the callflow actions \nwill be executed in sequence. If two makeCall actions are used in the same callflow, the 2nd call will be\nbridged to the 1st call once answered. Currently, we do not support call conferencing, so the maximum \nallowed makeCall actions in a callflow is 2."
                          params:
                            type: object
                            properties:
                              source:
                                type: string
                                description: Originator phone number. For CLIDs that have been whitelisted and CLID overwrite is enabled for the subaccount, please set the CLID as "6588000000".
                                example: '[+][country code][88000000]'
                              destination:
                                type: string
                                description: Destination phone number in E.164 international format.
                                example: +6590000000[+][country code][subscriber number including area code]
                            maxProperties: 2
                            required:
                            - source
                            - destination
                      - title: Say
                        type: object
                        maxProperties: 3
                        properties:
                          action:
                            type: string
                            enum:
                            - say
                            description: Say enables you to convert the given text into a speech and play it in the currently active call.
                          params:
                            type: object
                            properties:
                              text:
                                type: string
                                description: The message body content to be converted to voice. Maximum voice message length is 3000 characters
                                example: Hi, This is a test message from 8x8
                              voiceProfile:
                                type: string
                                description: Choose one of the available Voice profiles to define the voice, gender and accent for the message you are sending. To see all available speech profiles, please send an API request to https://developer.8x8.com/connect/reference/get-voice-profile-information endpoint to retrieve voice profiles that 8x8 supports
                                example: en-GB-Emma
                              repetition:
                                type: integer
                                description: The amount of times to repeat the voice message during the call. Accepted values are 1, 2 or 3. Default value is 1 for no repeat.
                                example: 1
                              speed:
                                type: integer
                                description: Reproduction speed of speech in the resulting message. Accepted values range from 0.5 - 2, as a two digit number. The default value is 1.
                                example: 1
                            maxProperties: 5
                            required:
                            - text
                            - voiceProfile
                      - title: SayAndCapture
                        type: object
                        properties:
                          action:
                            type: string
                            enum:
                            - sayAndCapture
                            description: "sayAndCapture - Plays a voice file in to the call and then captures users DTMF input and reports back the \nDTMF via Voice Call Action (VCA) webhook. https://developer.8x8.com/connect/reference/voice-call-action-webhook"
                          params:
                            type: object
                            properties:
                              promptMessage:
                                type: string
                                description: The message body content to be converted to voice. Maximum voice message length is 3000 characters
                              voiceProfile:
                                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1callflows/post/requestBody/content/application~1json/schema/anyOf/0/properties/callflow/items/anyOf/1/properties/params/properties/voiceProfile'
                              speed:
                                type: integer
                                description: Reproduction speed of speech in the resulting message. Accepted values range from 0.5 - 2, as a two digit number. The default value is 1.
                              minDigits:
                                type:
                                - integer
                                - 'null'
                                description: min no of digits to be pressed by user before call back is triggered
                                default: 1
                                minimum: 1
                              maxDigits:
                                type:
                                - integer
                                - 'null'
                                description: max no of digits to be pressed by user before call back is triggered
                                default: 1
                                minimum: 1
                              digitTimeout:
                                type:
                                - integer
                                - 'null'
                                description: max time for dtmf tones being captured
                                minimum: 1
                              overallTimeout:
                                type:
                                - integer
                                - 'null'
                                description: max call duration
                                minimum: 1
                                default: 5000
                              completeOnHash:
                                type:
                                - boolean
                                - 'null'
                                default: true
                                description: if the dtmf callback should be triggered on hash
                              noOfTries:
                                type:
                                - integer
                                - 'null'
                                description: max no of times to play message if user doesn't provide input
                                minimum: 1
                                default: 1
                              successMessage:
                                type:
                                - string
                                - 'null'
                              failureMessage:
                                type:
                                - string
                                - 'null'
                        required:
                        - promptMessage
                        - voiceProfile
                      - title: PlayFile
                        type: object
                        properties:
                          action:
                            type: string
                            enum:
                            - playFile
                            description: playFile enables you to send an audio recording to an end user.
                          params:
                            type: object
                            properties:
                              fileUrl:
                                type: string
                                description: 'url of the audio to be played in the call

                                  * supported protocols - http, https

                                  * max file size - 5120 KB

                                  * supported media formats - mp3, wav'
                              repetition:
                                type: integer
                                description: No of times to repeat the audio file content. Accepted values are 1, 2 or 3. Default is 1 (no repeat).
                            required:
                            - fileUrl
                        example:
                          destination: '621234567890'
                          fileUrl: https://filebin.redpill-linpro.com/iy5u4qhut4urszlm/sample4.mp3
                          repetition: 2
                      - title: Hangup
                        type: object
                        properties:
                          action:
                            type: string
                            enum:
                            - hangup
                            description: Hangup - Disconnects all active calls. This will terminate the session, triggering the session summary webhook.
                default:
                  validUntil: '2024-07-03T05:59:32.226Z'
                  callflow:
                  - action: makeCall
                    params:
                      source: '6512345678'
                      destination: '6590000000'
                  - action: say
                    params:
                      text: Hi, This is a test message from 8x8
                      voiceProfile: en-GB-Emma
                      repetition: 1
                      speed: 1
                  - action: hangup
        description: "- To send a Voice callflow Message using the 8x8 Voice Message API you need to POST a JSON object to the url defined above.\n- Additionally it is required to set either a language code or a voice profile in the request, to guarantee the correct pronunciation of the voice message. \n- The JSON object takes the following properties:\n"
      responses:
        '200':
          description: 'Should the request authenticate successfully and pass all validation, the response will contain an updated Voice Message Object. The following is an example response:'
          content:
            application/json:
              schema:
                title: CallflowResponse
                required:
                - sessionId
                - sessionStatus
                - callFlowRequestId
                - statusCode
                - statusMessage
                properties:
                  sessionId:
                    type: string
                    description: 'The unique id of the callflow session.

                      '
                  sessionStatus:
                    type: string
                    description: 'The status of the callflow session.

                      '
                  callFlowRequestId:
                    type: string
                    description: 'The unique id of the callflow request.

                      '
                  validUntil:
                    type: string
                    format: date-time
                    description: 'The time until which the callflow session is valid.

                      '
                  statusCode:
                    type: integer
                    description: 'The status code of the callflow session.

                      '
                  statusMessage:
                    type: string
                    description: 'The status message of the callflow session.

                      '
                type: object
                description: 'Response object for the callflow request.

                  '
                example:
                  sessionId: 03cc8cac-376b-11ef-a28b-0582ff0039d5
                  sessionStatus: CREATED
                  callFlowRequestId: 03cc3e8b-376b-11ef-a28b-4dd5d900ecb3
                  validUntil: '2024-07-01T05:50:23.550Z'
                  statusCode: 1
                  statusMessage: Created
              examples:
                response:
                  value:
                    sessionId: 03cc8cac-376b-11ef-a28b-0582ff0039d5
                    sessionStatus: CREATED
                    callFlowRequestId: 03cc3e8b-376b-11ef-a28b-4dd5d900ecb3
                    statusCode: 1
                    statusMessage: Created
        '400':
          description: ''
          content:
            application/json:
              schema:
                title: CallflowErrorResponse
                required:
                - sessionStatus
                - callFlowRequestId
                - statusCode
                - statusMessage
                properties:
                  sessionStatus:
                    type: string
                    description: 'The status of the callflow session.

                      '
                  callFlowRequestId:
                    type: string
                    description: 'The unique id of the callflow request.

                      '
                  statusCode:
                    type: integer
                    description: 'The status code of the callflow session.

                      '
                  statusMessage:
                    type: string
                    description: 'The status message of the callflow session.

                      '
              examples:
                response:
                  value:
                    sessionStatus: NOT_CREATED
                    callFlowRequestId: c6e6dee5-3846-11ef-9e95-b903e2ed7273
                    statusCode: -1007
                    statusMessage: '$.callflow[0].action should be one of: say,playFile,sayAndCapture'
        '401':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1callflows/post/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    sessionStatus: NOT_CREATED
                    callFlowRequestId: fd2fc658-3845-11ef-9e95-b903e2ed7273
                    statusCode: 401
                    statusMessage: Authentication header not found or token invalid
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1callflows/post/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    sessionStatus: NOT_CREATED
                    callFlowRequestId: 9e209996-3845-11ef-9e95-b903e2ed7273
                    statusCode: 404
                    statusMessage: 'SubAccount not found by Id : 8x8_Testing'
        '422':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1callflows/post/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    sessionStatus: NOT_CREATED
                    callFlowRequestId: 767ca1b8-3846-11ef-9e95-b903e2ed7273
                    statusCode: -1013
                    statusMessage: 'Invalid Callflow : First action should be a MakeCall action'
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1callflows/post/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    sessionStatus: NOT_CREATED
                    callFlowRequestId: 767ca1b8-3846-11ef-9e95-b903e2ed7273
                    statusCode: 500
                    statusMessage: Internal server error
      description: "**Note:** For all API requests that include a `source` parameter, CLID whitelisting is mandatory. Please contact your account manager or email cpaas-support@8x8.com if you have a voice account with 8x8 CPaaS.\n\n## Use Cases\n\nThe Callflows API enables you to build sophisticated voice solutions:\n\n**Interactive Voice Response (IVR)**\n\nCreate interactive menu systems with DTMF capture, conditional routing, and voice prompts.\n- [Simple IVR Guide](/connect/docs/voice/ivr/simple-ivr-guide) - Basic IVR implementation\n- [Advanced IVR Guide](/connect/docs/voice/ivr/advanced-ivr-guide) - Complex IVR with conditional logic\n\n**Voice Messaging**\n\nDeliver automated voice messages using text-to-speech (TTS) or pre-recorded audio files.\n- [Voice Messaging Guide](/connect/docs/voice/voice-messaging/voice-messaging-guide)\n\n**Custom Call Scenarios**\n\nBuild tailored call flows by combining multiple actions (makeCall, say, playFile, sayAndCapture, hangup) to meet your specific business requirements.\n\n---\n\n## API Examples\n\n### Example 1: IVR with DTMF Capture\n\n```json\n{\n  \"callflow\": [\n    {\n      \"action\": \"makeCall\",\n      \"params\": {\n        \"source\": \"+6588000000\",\n        \"destination\": \"+6590000000\"\n      }\n    },\n    {\n      \"action\": \"sayAndCapture\",\n      \"params\": {\n        \"promptMessage\": \"Press 1 for Sales, Press 2 for Support\",\n        \"voiceProfile\": \"en-US-Neural2-C\",\n        \"minDigits\": 1,\n        \"maxDigits\": 1,\n        \"digitTimeout\": 5000,\n        \"completeOnHash\": false\n      }\n    }\n  ]\n}\n```\n\n### Example 2: Voice Message (Text-to-Speech)\n\n```json\n{\n  \"callflow\": [\n    {\n      \"action\": \"makeCall\",\n      \"params\": {\n        \"source\": \"+6588000000\",\n        \"destination\": \"+6590000000\"\n      }\n    },\n    {\n      \"action\": \"say\",\n      \"params\": {\n        \"text\": \"Hello, this is a reminder about your appointment tomorrow at 2 PM.\",\n        \"voiceProfile\": \"en-GB-Emma\",\n        \"repetition\": 1,\n        \"speed\": 1\n      }\n    },\n    {\n      \"action\": \"hangup\"\n    }\n  ]\n}\n```\n\n### Example 3: Voice Message (Audio File)\n\n```json\n{\n  \"callflow\": [\n    {\n      \"action\": \"makeCall\",\n      \"params\": {\n        \"source\": \"+6588000000\",\n        \"destination\": \"+6590000000\"\n      }\n    },\n    {\n      \"action\": \"playFile\",\n      \"params\": {\n        \"fileUrl\": \"https://example.com/audio/notification.mp3\",\n        \"repetition\": 1\n      }\n    },\n    {\n      \"action\": \"hangup\"\n    }\n  ]\n}\n```"
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: '* 8x8 SMS API accepts an **ApiKey Bearer Token** authentication method.


        * You can generate  tokens from your customer portal  [https://connect.8x8.com/](https://connect.8x8.com/)


        * You need to include the following header in your requests: `Authorization: Bearer {apiKey}`


        > **Note**: Replace the `{apiKey}` placeholder with the key generated from the customer portal.

        ---

        If you haven''t created your account yet, please go to 8x8 website [https://connect.8x8.com](https://connect.8x8.com) to sign up.

        '