---
title: "Send advanced voice message"
method: POST
path: "/tts/3/advanced"
tags: ["channels", "voice", "voice-message", "voice-message-sending-operations"]
---

# Send advanced voice message

`POST /tts/3/advanced`

## Request

- Base URL: `https://api.infobip.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.infobip.com/tts/3/advanced`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `https://api.infobip.com/auth/1/oauth2/token`
  - API key in header `Authorization`
  - API key in header `Authorization`
  - HTTP basic

This method allows you to send advanced voice messages to one or more destination addresses.

## Request body

- 329f726ae6e36d1a92786c502bebf028e5aa08cc32a3a8e9f0bed0d82dbc7157AdvancedTtsApiRequest: Advanced voice message request object.
  - `bulkId` string: The ID which uniquely identifies the request.
  - `messages` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8AdvancedTtsApiMessage[], required: Array of messages to be sent, one object per every message
    - `from` string: Numeric sender ID in E.164 standard format (Example: 41793026727). This is caller ID that will be presented to the end user where applicable.
    - `destinations` 97cb4ba23432eb0e600ef0617ae1982d499839ef41226973c71dfb335b3071b8Destination[], required: Array of message destination addresses. Maximum number of destination addresses is 20k.
      - `to` string, required: Message destination addresses. Destination address must be in the E.164 standard format (Example: `41793026727`).
      - `messageId` string: The ID that uniquely identifies the message sent.
    - `audioFileUrl` string: An audio file can be delivered as a voice message to the recipients. An audio file must be uploaded online, so that the existing URL can be available for file download. Size of the audio file must be below 4 MB. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.
    - `text` string: Text of the message that will be sent. Message text can be up to 1400 characters long and cannot contain only punctuation. Adding _pauses_ between the words and extending the duration of the voice message is possible by using the comma character `“,”`. For example, if you want to have a 3 second pause after each word, then the text parameter should look like this `“one,,,,,,two,,,,,,three,,,,,,”`. Each comma creates a pause of 0.5 seconds. SSML (_Speech Synthesis Markup Language_) is supported and can be used to fully customize pronunciation of the provided text.
    - `language` string: If the message is in text format, the language in which the message is written must be defined for correct pronunciation. More about Text-to-speech functionality and supported TTS languages can be found [here](https://www.infobip.com/docs/voice-and-video/outbound-calls#text-to-speech-voice-over-broadcast). If not set, default language is `English [en]`. If voice is not set, then default voice for that specific language is used. In the case of English language, the voice is `[Joanna]`.
    - `voice` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8Voice: Used to define voice in which text would be synthesized. It has two parameters: _name_ and _gender_. When only _name_ is provided, then that exact voice with that name will be used to synthesize text. If only _gender_ is provided, then text is synthesized with first voice in given gender. If voice is not set, then default voice for that specific language is used.
      - `gender` string: Gender of the voice. Can be `male` or `female`.
      - `name` string: Name of the voice. Example: `Joanna`
    - `speechRate` number, double: The reproduction speed of speech in the resulting message. Effective only when using text. Supported range is from `0.5` (slow down speech) to `2` (speed up speech). Values less than `0.5` will be replaced with `0.5`, and values higher than `2` will be replaced with `2`. Default value is `1`.
    - `notifyUrl` string: The URL on your callback server on which the Delivery report will be sent.
    - `notifyContentType` string: Preferred Delivery report content type. Can be `application/json` or `application/xml`. [Read more](https://www.infobip.com/docs/api#channels/voice/get-voice-delivery-reports).
    - `notifyContentVersion` integer: Specifies the version of the Delivery report to be sent. Can be `1` ([deprecated version 1](#programmable-communications/voice/receive-voice-delivery-reports-deprecated)) or `2` ([current version 2](#programmable-communications/voice/receive-voice-delivery-reports)). The default is version 2. [Read more](https://www.infobip.com/docs/api#channels/voice/get-voice-delivery-reports).
    - `callbackData` string: Additional client's data that will be sent on the notifyUrl. The maximum value is 700 characters. Example: `Text containing some additional data needed in Delivery Report`.
    - `validityPeriod` integer: The message validity period shown in minutes. When the period expires, it will not be allowed for the message to be sent. A validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).
    - `sendAt` string, date-time: Used for scheduled Voice messages (message not to be sent immediately, but at scheduled time).
    - `repeatDtmf` string: Specify DTMF code that is used as an indicator to repeat the voice message to the end user. The # key cannot be collected, as it is reserved for user input termination. Message can be repeated up to 5 times.
    - `maxDtmf` integer: Defines the maximum number of DTMF codes entered by end user that would be collected.
    - `ringTimeout` integer: Ringing duration, unless there are no operator limitations. Default value is `45`. Note: There are no limitations on the Voice platform regarding this value, however, most of the operators have their own ring timeout limitations and it is advisable to keep the ringTimeout value up to `45` seconds.
    - `dtmfTimeout` integer: The waiting period for end user to enter DTMF digits. Default value is `10` seconds.
    - `callTimeout` integer: Maximum possible duration of the call to be set, shown in seconds.
    - `callTransfers` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8CallTransfer[]: Call transfers object enables transferring the ongoing call to another recipient(s) and establish a communication between your original recipient and additional one.
      - `callTransferMaxDuration` integer: Maximum duration of the transferred call, specified in seconds.
      - `equals` string: Criteria for establishing call transfer, if `dtmf` is evaluated.
      - `transferTo` string, required: Phone number of the recipient that will receive transferred call. Must be written in E.164 standard (Example: 41793026727).
      - `if` string, required: Specifies what to evaluate. Can be `dtmf` or `anyDtmf`.
    - `pause` integer: Period of time in seconds between end user answering the call and message starting to be played. Minimal value is `0` and maximum value is 10 seconds. Default value is `0`.
    - `retry` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8Retry: Used to define if the delivery of the Voice messages should be retried in case the first try doesn't succeed. Additional retries will be made according to the schedule defined by _minPeriod_ and _maxPeriod_ parameters and platform's internal retry logic. If the _minPeriod_ differs _maxPeriod_, delivery will be retried in the following manner: after 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours or until maxPeriod is reached. If the retry attempt for the _maxPeriod_ is reached, the _maxPeriod_ will be used for all subsequent retries. If the _minPeriod_ and the _maxPeriod_ are defined as equal values, the period of time between retries will be equal to this value. Message delivery will be retried until the successful delivery or message validity or _maxCount_ value is reached.
      - `minPeriod` integer, required: Defines the minimal waiting time (in minutes) after the previous failed attempt to try to deliver the message again. Supported values are 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours. If entered a value that isn't from the previous list but that's smaller than 24 hours, it is used the next bigger value from the list. If entered value that is bigger than 24 hours than it is used 24 hours.
      - `maxPeriod` integer, required: Defines the maximum waiting time (in minutes) after the previous failed attempt to try to deliver the message again. Supported values are 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours. If entered a value that isn't from the previous list but that's smaller than 24 hours, it is used the next bigger value from the list. If entered value that is bigger than 24 hours than it is used 24 hours.
      - `maxCount` integer, required: Specify the maximum number of retry attempts. Maximum value of the maxCount is `4`. If the value is higher than `4`, it will be set to `4`.
    - `sendingSpeed` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8SendingSpeed: Sending rate defined in number of messages sent per second, minute, hour or day. You may wish to use this to allow your systems or agents to handle large amounts of incoming traffic. Not setting a send speed limit can overwhelm your resources with incoming traffic. If this parameter is defined, _validityPeriod_ is ignored.
      - `speed` integer: Defines the number of messages that will be sent per specified time unit.
      - `timeUnit` string: Defines time unit used for calculating sending speed. Possible values: `second`, `minute`, `hour` and `day`.
    - `machineDetection` string: Used for enabling detection of answering machine after the call has been answered. It can be set to `hangup` or `continue`. When set to `hangup`, if a machine is detected call will hang up. When set to `continue`, if a machine is detected, then voice message starts playing into voice mail after the answering message is finished with its greeting. If machineDetection is used, there is a minimum of 4 seconds detection time, which can result in delay of playing the message. Answering machine detection is additionally charged. For more information please contact your account manager and check documentation on Answering Machine Detection.
    - `deliveryTimeWindow` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8DeliveryTimeWindow: Scheduling object that allows setting up detailed time windows in which the message can be sent. Consists of from, to and days properties. Days in the week are written as their full names: Monday-Sunday. Days parameter must be populated as a list, between two square brackets. `Example: ['MONDAY', 'TUESDAY', 'WEDNESDAY']`. From and to properties should be either both included, to allow finer time window granulation or both omitted, to include whole days in the delivery time window. From and to parameters are objects, that consist of hour and minute fields that hold integer values. For example, ` from: [ hour: 15, minute:45 ]`. For complete json, please check out our example. Note: delivery time window is set in UTC timezone.
      - `days` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8DeliveryDay[], required
      - `from` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8DeliveryTime, required
        - `hour` integer, required
        - `minute` integer, required
      - `to` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8DeliveryTime, required
        - `hour` integer, required
        - `minute` integer, required

## Response `200`

Success

- 97cb4ba23432eb0e600ef0617ae1982d499839ef41226973c71dfb335b3071b8StandardVoiceResponse: Voice response object
  - `bulkId` string: The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.
  - `messages` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8ResponseDetails[]: Array of sent messages, one object per every message.
    - `to` string: The message destination address.
    - `status` 287f18f04e9f129a7bc94ed3ae48e2480e2673b8fdf041ab5125fde9674634b8SingleMessageStatus: Indicates whether the message has been successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.
      - `groupId` integer: Status group ID.
      - `groupName` string: Status group name that describes which category the status code belongs to, e.g. PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED.
      - `id` integer: Status ID.
      - `name` string: Status name.
      - `description` string: Human-readable description of the status.
    - `messageId` string: The ID that uniquely identifies the message sent.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/infobip/apis/infobip-openapi-specification.md) - [All operations](https://skmtc.dev/infobip/apis/infobip-openapi-specification/llms.txt) - [OpenAPI document](https://skmtc.dev/infobip/apis/infobip-openapi-specification/revisions/9dcbbaf902de?raw)
