Vonage Dispatch API

The Dispatch API API from Vonage — 1 operation(s) for dispatch api.

Operations 1

POST / Create a workflow #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-new-message-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-smsxml-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-sms-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-error-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-error-xml-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-get-call-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-get-calls-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-start-talk-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-update-call-request-transfer-ncco-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-create-call-request-answer-url-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-update-call-request-transfer-answer-url-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-verify-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-search-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-psd2-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-request-error-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-control-error-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-check-error-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-list-fragments-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-list-templates-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-template-fragment-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-template-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-code-submit-success-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-silent-auth-confirmation-success-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-number-details-update-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-number-details-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-available-numbers-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-inbound-numbers-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-application-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-video-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-user-channels-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-voice-region-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-application-response-collection-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-user-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-channel-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-member-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-conversation-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-conversation-user-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-start-stream-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-media-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-any-async-request-params-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-layout-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-add-stream-to-archive-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-max-bitrate-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-remove-stream-from-archive-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-create-workflow-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-redact-transaction-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-audit-event-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-audit-resp-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-xml-advanced-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-xml-standard-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-json-advanced-sync-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-json-advanced-roaming-unknown-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-json-standard-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-ni-response-xml-basic-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-aggregated-insight-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-retrieval-location-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-polygon-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-circle-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-account-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-subaccount-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-transfer-balance-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-transfer-credit-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-transfer-number-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-transfer-balance-or-credit-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-new-subaccount-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-pricing-country-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-pricing-countries-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-room-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-upload-url-for-theme-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-theme-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-hal-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-update-room-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/vonage/refs/heads/main/json-schema/vonage-recording-schema.json

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/vonage:vonage-dispatch-api-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

vonage-dispatch-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 0.4.0
  title: Dispatch API
  x-metaTitle: Vonage Dispatch API Reference | Vonage API Documentation
  x-metaDescription: Find quick answers to questions about the Vonage Dispatch API in this reference guide. Learn more in Vonage's API documentation.
  description: The Dispatch API enables the developer to specify a multiple message workflow.
  contact:
    name: Vonage DevRel
    email: devrel@vonage.com
    url: https://developer.nexmo.com/
  x-label: Deprecated
servers:
- url: https://api.nexmo.com/v0.1/dispatch
tags:
- name: Dispatch API
paths:
  /:
    post:
      security:
      - bearerAuth: []
      - basicAuth: []
      summary: Create a workflow
      operationId: createWorkflow
      requestBody:
        x-hide-request: true
        description: Please note that last message does not have failover attribute inside it. All other messages must contain a failover attribute.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createWorkflow'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      callbacks:
        message-status:
          '{$request.body#/callback}':
            post:
              summary: Message Status
              operationId: message-status
              x-example-path: /webhooks/message-status
              description: status of the message read or delivered etc.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/MessageStatus'
              responses:
                '200':
                  description: Your server returns this code if it accepts the callback
        final-report:
          '{$request.body#/callback}':
            post:
              summary: The Final Report
              operationId: final-report
              x-example-path: /webhooks/final-report
              description: The final workflow callback is sent when The condition_status was met within the expiry_time. If we take the example API call above. If we received a delivered status at 300 seconds (within the expiry_time) the workflow would be marked as completed. We would not send an SMS. We would then send the final callback. The final message in the failover is delivered. If the message Errors on the last step we will send the final callback. Please note GET is not currently supported. You will notice we have an href to a resource in some of the callbacks. These will fail to load but we wanted to maintain the same structure so that we can seamlessly integrate GET later.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/finalReport'
              responses:
                '200':
                  description: Your server returns this code if it accepts the callback
      tags:
      - Dispatch API
components:
  schemas:
    MessageStatus:
      description: The callbacks for the message status are the same as defined in the Messaging API. The only difference will be that dispatch_uuid and link will be appended.
      type: object
      properties:
        message_uuid:
          type: string
          example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
        to:
          $ref: '#/components/schemas/ToProperty'
        from:
          $ref: '#/components/schemas/FromProperty'
        timestamp:
          $ref: '#/components/schemas/TimestampProperty'
        status:
          type: string
          example: delivered
          description: The status of the message.
          enum:
          - submitted
          - delivered
          - read
          - rejected
          - undeliverable
        error:
          type: object
          properties:
            code:
              type: integer
              example: 1300
              description: The error code. See [our errors list](/api-errors/messages) for a list of possible errors
            reason:
              type: string
              example: Not part of the provider network
              description: Text describing the error. See [our errors list](/api-errors/messages) for a list of possible errors
        usage:
          type: object
          properties:
            currency:
              type: string
              example: EUR
              description: The charge currency in ISO 4217 format.
              enum:
              - EUR
            price:
              type: string
              example: '0.0333'
              description: The charge amount as a stringified number.
        _links:
          type: object
          properties:
            workflow:
              type: object
              properties:
                dispatch_uuid:
                  type: string
                  example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
                href:
                  description: Please note GET is not currently supported
                  type: string
                  example: /workflows/aaaaaaaa-bbbb-cccc-dddd-0123456789ab
    Response:
      required:
      - dispatch_uuid
      type: object
      properties:
        dispatch_uuid:
          description: The parent ID for workflow request.
          type: string
          example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
    finalReport:
      type: object
      properties:
        dispatch_uuid:
          type: string
          example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
        template:
          type: string
          enum:
          - failover
          example: failover
        status:
          type: string
          enum:
          - completed
          - error
          example: completed
        timestamp:
          $ref: '#/components/schemas/TimestampProperty'
        usage:
          type: object
          description: This is the total cost of your Workflow request. Please note if a preceding message in the workflow request is delivered after the final message in the workflow is delivered it may not reflect the true total cost of the workflow.
          x-nexmo-developer-collection-description-shown: true
          properties:
            price:
              description: The charge amount as a stringified number.
              type: string
              example: '0.02'
            currency:
              description: The charge currency in ISO 4217 format.
              type: string
              enum:
              - EUR
              example: EUR
        _links:
          type: object
          properties:
            messages:
              type: array
              items:
                type: object
                properties:
                  message_uuid:
                    type: string
                    example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
                  href:
                    description: Please note GET is not currently supported
                    type: string
                    example: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
                  channel:
                    type: string
                    enum:
                    - messenger
                    - viber_sevice_msg
                    - sms
                    - whatsapp
                    - mms
                    example: viber_service_msg
                  usage:
                    type: object
                    properties:
                      currency:
                        type: string
                        example: EUR
                        description: The charge currency in ISO 4217 format.
                        enum:
                        - EUR
                      price:
                        type: string
                        example: '0.0333'
                        description: The charge amount as a stringified number.
                  status:
                    type: string
                    enum:
                    - submitted
                    - delivered
                    - read
                    - rejected
                    - undeliverable
    FileProperty:
      type: object
      properties:
        url:
          type: string
          description: The URL of the file attachment. `messenger` supports a wide range of attachments including .zip, .csv and .pdf. `whatsapp` supports .pdf, .doc(x), .ppt(x) and .xls(x).
          minLength: 1
          maxLength: 2000
          example: https://example.com/file.zip
        caption:
          type: string
          description: Additional text to accompany the image. Supported by WhatsApp and MMS.
          minLength: 1
          maxLength: 3000
          example: Additional text to accompany the image.
    createWorkflow:
      type: object
      properties:
        template:
          description: The template that the Dispatch API will execute. For the initial version of the API the only available value will be failover
          type: string
          enum:
          - failover
          example: failover
        workflow:
          description: Contains a message object that must reflect the current /messages resource. All parameters within the content object reflect the /messages docs.
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/sendWithFailoverMessage'
            - $ref: '#/components/schemas/sendMessage'
    VideoProperty:
      type: object
      properties:
        url:
          type: string
          description: 'The URL of the video attachment.


            **messenger** supports .mp4


            **whatsapp** supports .mp4 and .3gpp. Note, only H.264 video codec and AAC audio codec is supported.

            '
          minLength: 1
          maxLength: 2000
          example: https://example.com/video.mp4
    ToProperty:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          description: The type of message that you want to send.
          example: sms
          enum:
          - sms
          - viber_service_msg
          - messenger
          - whatsapp
        id:
          description: 'The ID of the message recipient.


            **Messenger**: This value should be the `from.id` value you received in the inbound messenger event.


            **SMS**: or **Viber**: or **WhatsApp** This value is not required.

            '
          type: string
          minLength: 1
          maxLength: 50
          example: 0123456789012345
        number:
          type: string
          minLength: 1
          maxLength: 50
          example: '447700900000'
          description: '**SMS**: or **MMS**: or **Viber**: or **WhatsApp** The phone number of the message recipient in the [E.164](https://en.wikipedia.org/wiki/E.164) format. Don''t use a leading + or 00 when entering a phone number, start with the country code, for example, 447700900000.


            **Messenger**: This value is not required.

            '
    FromProperty:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          description: The type of message that you want to send.
          example: sms
          enum:
          - sms
          - viber_service_msg
          - messenger
          - whatsapp
        id:
          description: 'Your ID for the platform that you are sending from.


            **Messenger**: This value should be the `to.id` value you received in the inbound messenger event.


            **Viber**: This is your Service Message ID given to you by your Vonage Account Manager. To find out more please visit [vonage.com](https://www.vonage.com/communications-apis/messages/).


            **SMS**: **MMS**: or **WhatsApp** This value is not required.

            '
          type: string
          minLength: 1
          maxLength: 50
          example: 0123456789012345
        number:
          type: string
          minLength: 1
          maxLength: 50
          example: '447700900000'
          description: '**SMS**: or **MMS**: The phone number of the message sender in the [E.164](https://en.wikipedia.org/wiki/E.164) format.


            **WhatsApp**: This is your WhatsApp Business Number given to you by your Vonage Account Manager. To find out more please visit [vonage.com](https://www.vonage.com/communications-apis/messages/).


            **Messenger**: or **Viber**: This value is not required.

            '
    MessageProperty:
      type: object
      required:
      - content
      properties:
        content:
          type: object
          required:
          - type
          properties:
            type:
              description: 'The type of message that you are sending.


                **Messenger**: supports `text`, `image`, `audio`, `video` and `file`.


                **Viber Business Messages**: supports `image` and `text`.


                **WhatsApp**: supports `template`, `text`, `image`, `audio`, `video` and `file`.


                **SMS**: supports `text`.

                '
              type: string
              enum:
              - text
              - image
              - audio
              - video
              - file
              - template
              - custom
              example: text
            text:
              description: 'The text of the message.


                **Messenger**: Is limited to 640 characters


                **SMS** or **Viber**: Is 1000 characters


                **WhatsApp**: is 4096 characters

                '
              type: string
              minLength: 1
              maxLength: 4096
              example: 'Vonage Verification code: 64873. Valid for 10 minutes.'
            image:
              $ref: '#/components/schemas/ImageProperty'
            audio:
              $ref: '#/components/schemas/AudioProperty'
            video:
              $ref: '#/components/schemas/VideoProperty'
            file:
              $ref: '#/components/schemas/FileProperty'
            template:
              $ref: '#/components/schemas/TemplateProperty'
        viber_service_msg:
          type: object
          properties:
            category:
              description: The use of different category tags enables the business to send messages for different use cases. For Viber Business Messages the first message sent from a business to a user must be personal, informative and a targeted message - not promotional. By default Vonage sends the `transaction` category to Viber Business Messages.
              type: string
              example: transaction
              enum:
              - transaction
              - promotion
            ttl:
              description: Only valid for Viber Business Messages. Set the time-to-live of message to be delivered in seconds. i.e. if the message is not delivered in 600 seconds then delete the message.
              type: integer
              example: 600
              minimum: 30
              maximum: 86400
        messenger:
          type: object
          properties:
            category:
              description: The use of different category tags enables the business to send messages for different use cases. For Facebook Messenger they need to comply with their [Messaging Types policy]( https://developers.facebook.com/docs/messenger-platform/send-messages#messaging_types). Vonage maps our `category` to their `messaging_type`. If `message_tag` is used, then an additional `tag` for that type is mandatory. By default Vonage sends the `response` category to Facebook Messenger.
              type: string
              example: message_tag
              enum:
              - response
              - update
              - message_tag
            tag:
              description: ‘A full list of the possible tags is available on [developers.facebook.com](https://developers.facebook.com/docs/messenger-platform/send-messages/message-tags)'
              type: string
              example: ticket_update
        whatsapp:
          type: object
          properties:
            policy:
              description: 'Please note that WhatsApp will deprecate `fallback` policy in January 2020. There are two policies that you can specify when sending a Message Template: `deterministic` and `fallback`. `deterministic` — Deliver the Message Template in exactly the language and locale asked for. `fallback` — Deliver the Message Template in the language that matches users language/locale setting on device. If one can not be found, deliver using the specified fallback language.'
              type: string
              example: deterministic
              enum:
              - fallback
              - deterministic
            locale:
              description: We are using the industry standard, BCP 47, for locales. So in your API call to the /messages API you will need to put “en-GB” and this will refer to the “en_GB” template for WhatsApp. A full list of the possible locales is available on [developers.facebook.com](https://developers.facebook.com/docs/whatsapp/message-templates/creation#translations).
              type: string
              example: en-GB
    AudioProperty:
      type: object
      properties:
        url:
          type: string
          description: The URL of the audio attachment. `messenger` supports .mp3. `whatsapp` supports .aac, .m4a, .amr, .mp3 and .opus.
          minLength: 1
          maxLength: 2000
          example: https://example.com/audio.mp3
    TemplateProperty:
      type: object
      properties:
        name:
          type: string
          description: The name of the template.
          example: whatsapp:hsm:technology:vonage:verify
        parameters:
          type: array
          items:
            type: object
            properties:
              default:
                type: string
                description: The parameters are an array. The first value being `{{1}}` in the template.
                example: '1234'
    TimestampProperty:
      type: string
      format: ISO 8601
      description: The datetime of when the event occurred.
      example: '2020-01-01T14:00:00.000Z'
    ImageProperty:
      type: object
      properties:
        url:
          type: string
          description: The URL of the image attachment. `messenger` and `mms` supports .jpg, .jpeg, .png and .gif. `viber_service_msg` supports .jpg .jpeg, and .png. `whatsapp` supports .jpg .jpeg, and .png.
          minLength: 1
          maxLength: 2000
          example: https://example.com/image.jpg
        caption:
          type: string
          description: Additional text to accompany the image. Supported by WhatsApp and MMS.
          minLength: 1
          maxLength: 3000
          example: Additional text to accompany the image.
    FailoverProperty:
      description: Please note that last message does not have failover attribute inside it. All other messages must contain a failover attribute.
      type: object
      properties:
        expiry_time:
          description: In seconds. Minimum value is 15 and maximum value is 86,400 seconds (1 day).
          type: integer
          example: 600
          minimum: 15
          maximum: 86400
        condition_status:
          description: Set the status the message must reach in the expiry_time before failing over. Options are delivered or read.
          type: string
          example: delivered
          enum:
          - delivered
          - read
    sendMessage:
      type: object
      description: Send Message
      required:
      - to
      - from
      - message
      properties:
        to:
          $ref: '#/components/schemas/ToProperty'
        from:
          $ref: '#/components/schemas/FromProperty'
        message:
          $ref: '#/components/schemas/MessageProperty'
    sendWithFailoverMessage:
      type: object
      description: Send With Failover Message
      required:
      - to
      - from
      - message
      properties:
        to:
          $ref: '#/components/schemas/ToProperty'
        from:
          $ref: '#/components/schemas/FromProperty'
        message:
          $ref: '#/components/schemas/MessageProperty'
        failover:
          $ref: '#/components/schemas/FailoverProperty'
    Error:
      description: The error format is standardized to the 4xx/5xx range with a code and a human readable explanation.
      required:
      - type
      - title
      - detail
      - instance
      type: object
      properties:
        type:
          type: string
          example: https://www.nexmo.com/messages/Errors#InvalidParams
        detail:
          type: string
          example: Your request parameters did not validate.
        instance:
          type: string
          example: null
        invalid_parameters:
          type: object
          properties:
            name:
              type: string
              example: Invalid `from` parameter
            reason:
              type: string
              example: Invalid `from` parameter
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    basicAuth:
      type: http
      scheme: basic