openapi: 3.0.3
info:
title: Bandwidth
description: Bandwidth's Communication APIs
contact:
name: Bandwidth
url: https://dev.bandwidth.com
email: letstalk@bandwidth.com
version: 1.0.0
security:
- Basic: []
tags:
- name: Messages
- name: Media
- name: Calls
- name: Conferences
- name: Recordings
- name: Statistics
- name: MFA
- name: Phone Number Lookup
paths:
/users/{accountId}/media:
get:
summary: List Media
description: Gets a list of your media files. No query parameters are supported.
operationId: listMedia
tags:
- Media
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/continuationToken'
responses:
'200':
$ref: '#/components/responses/listMediaResponse'
'400':
$ref: '#/components/responses/messagingBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'406':
$ref: '#/components/responses/messagingNotAcceptableError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
servers: &ref_0
- url: https://messaging.bandwidth.com/api/v2
description: Production
/users/{accountId}/media/{mediaId}:
get:
summary: Get Media
description: Downloads a media file you previously uploaded.
operationId: getMedia
tags:
- Media
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/mediaId'
responses:
'200':
$ref: '#/components/responses/getMediaResponse'
'400':
$ref: '#/components/responses/messagingBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'406':
$ref: '#/components/responses/messagingNotAcceptableError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
put:
summary: Upload Media
description: >-
Upload a file. You may add headers to the request in order to provide
some control to your media file.
If a file is uploaded with the same name as a file that already exists
under this account, the previous file will be overwritten.
A list of supported media types can be found
[here](https://support.bandwidth.com/hc/en-us/articles/360014128994-What-MMS-file-types-are-supported-).
operationId: uploadMedia
tags:
- Media
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/mediaId'
- $ref: '#/components/parameters/contentType'
- $ref: '#/components/parameters/cacheControl'
requestBody:
$ref: '#/components/requestBodies/uploadMediaRequest'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/messagingBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'406':
$ref: '#/components/responses/messagingNotAcceptableError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
delete:
summary: Delete Media
description: |-
Deletes a media file from Bandwidth API server. Make sure you don't have
any application scripts still using the media before you delete.
If you accidentally delete a media file you can immediately upload a new
file with the same name.
operationId: deleteMedia
tags:
- Media
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/mediaId'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/messagingBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'406':
$ref: '#/components/responses/messagingNotAcceptableError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
servers: *ref_0
/users/{accountId}/messages:
get:
summary: List Messages
description: Returns a list of messages based on query parameters.
operationId: listMessages
tags:
- Messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/messageId'
- $ref: '#/components/parameters/sourceTn'
- $ref: '#/components/parameters/destinationTn'
- $ref: '#/components/parameters/messageStatus'
- $ref: '#/components/parameters/messageDirection'
- $ref: '#/components/parameters/carrierName'
- $ref: '#/components/parameters/messageType'
- $ref: '#/components/parameters/errorCode'
- $ref: '#/components/parameters/fromDateTime'
- $ref: '#/components/parameters/toDateTime'
- $ref: '#/components/parameters/campaignId'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/pageToken'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/limitTotalCount'
responses:
'200':
$ref: '#/components/responses/listMessagesResponse'
'400':
$ref: '#/components/responses/messagingBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
post:
summary: Create Message
description: >-
Endpoint for sending text messages and picture messages using V2
messaging.
operationId: createMessage
tags:
- Messages
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/createMessageRequest'
responses:
'202':
$ref: '#/components/responses/createMessageResponse'
'400':
$ref: '#/components/responses/createMessageBadRequestError'
'401':
$ref: '#/components/responses/messagingUnauthorizedError'
'403':
$ref: '#/components/responses/messagingForbiddenError'
'404':
$ref: '#/components/responses/messagingNotFoundError'
'406':
$ref: '#/components/responses/messagingNotAcceptableError'
'415':
$ref: '#/components/responses/messagingInvalidMediaTypeError'
'429':
$ref: '#/components/responses/messagingTooManyRequestsError'
'500':
$ref: '#/components/responses/messagingInternalServerError'
callbacks:
inboundCallback:
$ref: '#/components/callbacks/inboundCallback'
statusCallback:
$ref: '#/components/callbacks/statusCallback'
servers: *ref_0
/accounts/{accountId}/calls:
post:
tags:
- Calls
summary: Create Call
description: >-
Creates an outbound phone call.
All calls are initially queued. Your outbound calls will initiated at a
specific dequeueing rate, enabling your application to "fire and forget"
when creating calls. Queued calls may not be modified until they are
dequeued and placed, but may be removed from your queue on demand.
Please note: Calls submitted to your queue will be placed
approximately in order, but exact ordering is not guaranteed.
operationId: createCall
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/createCallRequest'
responses:
'201':
$ref: '#/components/responses/createCallResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
get:
tags:
- Calls
summary: Get Calls
description: >-
Returns a max of 10000 calls, sorted by `createdTime` from oldest to
newest.
**NOTE:** If the number of calls in the account is bigger than
`pageSize`, a `Link` header (with format `<{url}>; rel="next"`) will be
returned in the response. The url can be used to retrieve the next page
of call records.
Also, call information is kept for 7 days after the calls are hung up.
If you attempt to retrieve information for a call that is older than 7
days, you will get an empty array [] in response.
operationId: listCalls
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/to'
- $ref: '#/components/parameters/from'
- $ref: '#/components/parameters/minStartTimeCalls'
- $ref: '#/components/parameters/maxStartTimeCalls'
- $ref: '#/components/parameters/disconnectCause'
- $ref: '#/components/parameters/pageSizeCalls'
- $ref: '#/components/parameters/pageToken1'
responses:
'200':
$ref: '#/components/responses/listCallsResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: &ref_1
- url: https://voice.bandwidth.com/api/v2
description: Production
/accounts/{accountId}/calls/{callId}:
get:
tags:
- Calls
summary: Get Call State Information
description: >-
Retrieve the current state of a specific call. This information is
near-realtime, so it may take a few minutes for your call to be
accessible using this endpoint.
**Note**: Call information is kept for 7 days after the calls are hung
up. If you attempt to retrieve information for a call that is older than
7 days, you will get an HTTP 404 response.
operationId: getCallState
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
responses:
'200':
$ref: '#/components/responses/getCallStateResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
post:
tags:
- Calls
summary: Update Call
description: >-
Interrupts and redirects a call to a different URL that should return a
BXML document.
operationId: updateCall
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
requestBody:
$ref: '#/components/requestBodies/updateCallRequest'
responses:
'200':
description: Call was successfully modified.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'409':
$ref: '#/components/responses/voiceConflictError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/bxml:
put:
tags:
- Calls
summary: Update Call BXML
description: Interrupts and replaces an active call's BXML document.
operationId: updateCallBxml
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
requestBody:
$ref: '#/components/requestBodies/updateCallBxmlRequest'
responses:
'204':
description: Call BXML was successfully replaced.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'409':
$ref: '#/components/responses/voiceConflictError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences:
get:
tags:
- Conferences
summary: Get Conferences
description: >-
Returns a max of 1000 conferences, sorted by `createdTime` from oldest
to newest.
**NOTE:** If the number of conferences in the account is bigger than
`pageSize`, a `Link` header (with format `<{url}>; rel="next"`) will be
returned in the response. The url can be used to retrieve the next page
of conference records.
operationId: listConferences
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/name'
- $ref: '#/components/parameters/minCreatedTime'
- $ref: '#/components/parameters/maxCreatedTime'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageToken1'
responses:
'200':
$ref: '#/components/responses/listConferencesResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}:
get:
tags:
- Conferences
summary: Get Conference Information
description: Returns information about the specified conference.
operationId: getConference
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
responses:
'200':
$ref: '#/components/responses/getConferenceResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
post:
tags:
- Conferences
summary: Update Conference
description: Update the conference state.
operationId: updateConference
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
requestBody:
$ref: '#/components/requestBodies/updateConferenceRequest'
responses:
'204':
description: Conference was successfully modified.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}/bxml:
put:
tags:
- Conferences
summary: Update Conference BXML
description: Update the conference BXML document.
operationId: updateConferenceBxml
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
requestBody:
$ref: '#/components/requestBodies/updateConferenceBxmlRequest'
responses:
'204':
description: Conference successfully modified.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}/members/{memberId}:
get:
tags:
- Conferences
summary: Get Conference Member
description: Returns information about the specified conference member.
operationId: getConferenceMember
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
- $ref: '#/components/parameters/memberId'
responses:
'200':
$ref: '#/components/responses/getConferenceMemberResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
put:
tags:
- Conferences
summary: Update Conference Member
description: Updates settings for a particular conference member.
operationId: updateConferenceMember
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
- $ref: '#/components/parameters/memberId'
requestBody:
$ref: '#/components/requestBodies/updateConferenceMemberRequest'
responses:
'204':
description: Conference member was successfully modified.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}/recordings:
get:
tags:
- Conferences
summary: Get Conference Recordings
description: >-
Returns a (potentially empty) list of metadata for the recordings that
took place during the specified conference.
operationId: listConferenceRecordings
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
responses:
'200':
$ref: '#/components/responses/listConferenceRecordingsResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}:
get:
tags:
- Conferences
summary: Get Conference Recording Information
description: Returns metadata for the specified recording.
operationId: getConferenceRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
- $ref: '#/components/parameters/recordingId'
responses:
'200':
$ref: '#/components/responses/getConferenceRecordingResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}/media:
get:
tags:
- Conferences
summary: Download Conference Recording
description: Downloads the specified recording file.
operationId: downloadConferenceRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/conferenceId'
- $ref: '#/components/parameters/recordingId'
responses:
'200':
$ref: '#/components/responses/downloadRecordingMediaResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/recordings:
get:
tags:
- Recordings
summary: Get Call Recordings
description: >-
Returns a list of metadata for the recordings associated with the
specified account. The list can be filtered by the optional from, to,
minStartTime,
and maxStartTime arguments. The list is capped at 1000 entries and may
be
empty if no recordings match the specified criteria.
operationId: listAccountCallRecordings
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/to'
- $ref: '#/components/parameters/from'
- $ref: '#/components/parameters/minStartTime'
- $ref: '#/components/parameters/maxStartTime'
responses:
'200':
$ref: '#/components/responses/listCallRecordingsResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/recording:
put:
tags:
- Recordings
summary: Update Recording
description: Pause or resume a recording on an active phone call.
operationId: updateCallRecordingState
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
requestBody:
$ref: '#/components/requestBodies/updateCallRecordingRequest'
responses:
'200':
description: Recording state was successfully modified.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/recordings:
get:
tags:
- Recordings
summary: List Call Recordings
description: |-
Returns a (potentially empty) list of metadata for the recordings
that took place during the specified call.
operationId: listCallRecordings
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
responses:
'200':
$ref: '#/components/responses/listCallRecordingsResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/recordings/{recordingId}:
get:
tags:
- Recordings
summary: Get Call Recording
description: Returns metadata for the specified recording.
operationId: getCallRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'200':
$ref: '#/components/responses/getCallRecordingResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
delete:
tags:
- Recordings
summary: Delete Recording
description: >-
Delete the recording information, media and transcription.
Note: After the deletion is requested and a `204` is returned, neither
the recording metadata nor the actual media nor its transcription will
be accessible anymore. However, the media of the specified recording is
not deleted immediately. This deletion process, while transparent and
irreversible, can take an additional 24 to 48 hours.
operationId: deleteRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'204':
description: Recording was deleted.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media:
get:
tags:
- Recordings
summary: Download Recording
description: Downloads the specified recording.
operationId: downloadCallRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'200':
$ref: '#/components/responses/downloadRecordingMediaResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
delete:
tags:
- Recordings
summary: Delete Recording Media
description: Deletes the specified recording's media.
operationId: deleteRecordingMedia
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'204':
description: The recording media was successfully deleted.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription:
get:
tags:
- Recordings
summary: Get Transcription
description: >-
Downloads the specified transcription.
If the transcribed recording was multi-channel, then there will be 2
transcripts.
The caller/called party transcript will be the first item while
[``](/docs/voice/bxml/playAudio) and
[``](/docs/voice/bxml/speakSentence) transcript will be
the second item.
During a [``](/docs/voice/bxml/transfer) the A-leg transcript
will be the first item while the B-leg transcript will be the second
item.
operationId: getCallTranscription
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'200':
$ref: '#/components/responses/getCallTranscriptionResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
post:
tags:
- Recordings
summary: Create Transcription Request
description: >-
Generate the transcription for a specific recording. Transcription
can succeed only for recordings of length greater than 500 milliseconds
and
less than 4 hours.
operationId: transcribeCallRecording
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
requestBody:
$ref: '#/components/requestBodies/transcribeRecordingRequest'
responses:
'204':
description: Transcription was successfully requested.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
delete:
tags:
- Recordings
summary: Delete Transcription
description: >-
Deletes the specified recording's transcription.
Note: After the deletion is requested and a `204` is returned, the
transcription will not be accessible anymore. However, it is not deleted
immediately. This deletion process, while transparent and irreversible,
can take an additional 24 to 48 hours.
operationId: deleteCallTranscription
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/callId'
- $ref: '#/components/parameters/recordingId'
responses:
'204':
description: The transcription was successfully deleted.
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/statistics:
get:
tags:
- Statistics
summary: Get Account Statistics
description: Returns details about the current state of the account.
operationId: getStatistics
parameters:
- $ref: '#/components/parameters/accountId'
responses:
'200':
$ref: '#/components/responses/getStatisticsResponse'
'400':
$ref: '#/components/responses/voiceBadRequestError'
'401':
$ref: '#/components/responses/voiceUnauthorizedError'
'403':
$ref: '#/components/responses/voiceForbiddenError'
'404':
$ref: '#/components/responses/voiceNotFoundError'
'405':
$ref: '#/components/responses/voiceNotAllowedError'
'415':
$ref: '#/components/responses/voiceUnsupportedMediaTypeError'
'429':
$ref: '#/components/responses/voiceTooManyRequestsError'
'500':
$ref: '#/components/responses/voiceInternalServerError'
servers: *ref_1
/accounts/{accountId}/code/voice:
post:
tags:
- MFA
summary: Voice Authentication Code
description: Send an MFA Code via a phone call.
operationId: generateVoiceCode
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/codeRequest'
responses:
'200':
$ref: '#/components/responses/voiceCodeResponse'
'400':
$ref: '#/components/responses/mfaBadRequestError'
'401':
$ref: '#/components/responses/mfaUnauthorizedError'
'403':
$ref: '#/components/responses/mfaForbiddenError'
'500':
$ref: '#/components/responses/mfaInternalServerError'
servers: &ref_2
- url: https://mfa.bandwidth.com/api/v1
description: Production
/accounts/{accountId}/code/messaging:
post:
tags:
- MFA
summary: Messaging Authentication Code
description: Send an MFA code via text message (SMS).
operationId: generateMessagingCode
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/codeRequest'
responses:
'200':
$ref: '#/components/responses/messagingCodeResponse'
'400':
$ref: '#/components/responses/mfaBadRequestError'
'401':
$ref: '#/components/responses/mfaUnauthorizedError'
'403':
$ref: '#/components/responses/mfaForbiddenError'
'500':
$ref: '#/components/responses/mfaInternalServerError'
servers: *ref_2
/accounts/{accountId}/code/verify:
post:
tags:
- MFA
summary: Verify Authentication Code
description: Verify a previously sent MFA code.
operationId: verifyCode
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/codeVerify'
responses:
'200':
$ref: '#/components/responses/verifyCodeResponse'
'400':
$ref: '#/components/responses/mfaBadRequestError'
'401':
$ref: '#/components/responses/mfaUnauthorizedError'
'403':
$ref: '#/components/responses/mfaForbiddenError'
'429':
$ref: '#/components/responses/mfaTooManyRequestsError'
'500':
$ref: '#/components/responses/mfaInternalServerError'
servers: *ref_2
/accounts/{accountId}/tnlookup:
post:
summary: Create Lookup
description: Create a Phone Number Lookup Request.
operationId: createLookup
tags:
- Phone Number Lookup
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
$ref: '#/components/requestBodies/createLookupRequest'
responses:
'202':
$ref: '#/components/responses/createLookupResponse'
'400':
$ref: '#/components/responses/tnLookupBadRequestError'
'401':
$ref: '#/components/responses/tnLookupUnauthorizedError'
'403':
$ref: '#/components/responses/tnLookupForbiddenError'
'415':
$ref: '#/components/responses/tnLookupMediaTypeError'
'429':
$ref: '#/components/responses/tnLookupTooManyRequestsError'
'500':
$ref: '#/components/responses/tnLookupInternalServerError'
servers: &ref_3
- url: https://numbers.bandwidth.com/api/v1
description: Production
/accounts/{accountId}/tnlookup/{requestId}:
get:
summary: Get Lookup Request Status
description: Get an existing Phone Number Lookup Request.
operationId: getLookupStatus
tags:
- Phone Number Lookup
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/requestId'
responses:
'200':
$ref: '#/components/responses/getLookupResponse'
'400':
$ref: '#/components/responses/tnLookupBadRequestError'
'401':
$ref: '#/components/responses/tnLookupUnauthorizedError'
'403':
$ref: '#/components/responses/tnLookupForbiddenError'
'404':
description: Not Found
'429':
$ref: '#/components/responses/tnLookupTooManyRequestsError'
'500':
$ref: '#/components/responses/tnLookupInternalServerError'
servers: *ref_3
components:
schemas:
priorityEnum:
type: string
description: |-
The priority specified by the user.
Not supported on MMS.
enum:
- default
- high
example: default
messageStatusEnum:
type: string
description: >-
The status of the message. One of RECEIVED QUEUED SENDING SENT FAILED
DELIVERED ACCEPTED UNDELIVERED.
enum:
- RECEIVED
- QUEUED
- SENDING
- SENT
- FAILED
- DELIVERED
- ACCEPTED
- UNDELIVERED
example: RECEIVED
listMessageDirectionEnum:
type: string
description: The direction of the message. One of INBOUND OUTBOUND.
enum:
- INBOUND
- OUTBOUND
messageDirectionEnum:
type: string
description: The direction of the message. One of in out.
enum:
- in
- out
messageTypeEnum:
type: string
description: The type of message. Either SMS or MMS.
enum:
- sms
- mms
example: sms
fieldError:
type: object
properties:
fieldName:
type: string
description: The name of the field that contains the error
example: from
description:
type: string
description: The error associated with the field
example: >-
'+invalid' must be replaced with a valid E164 formatted telephone
number
messagesList:
title: MessagesList
type: object
properties:
totalCount:
type: integer
description: >-
The total number of messages matched by the search. When the request
has limitTotalCount set to true this value is limited to 10,000.
example: 100
pageInfo:
$ref: '#/components/schemas/pageInfo'
messages:
type: array
items:
$ref: '#/components/schemas/listMessageItem'
listMessageItem:
title: listMessageItem
type: object
properties:
messageId:
type: string
description: The message id
example: 1589228074636lm4k2je7j7jklbn2
accountId:
type: string
description: The account id associated with this message.
example: '9900000'
sourceTn:
type: string
description: The source phone number of the message.
example: '+15554443333'
destinationTn:
type: string
description: The recipient phone number of the message.
example: '+15554442222'
messageStatus:
$ref: '#/components/schemas/messageStatusEnum'
messageDirection:
$ref: '#/components/schemas/listMessageDirectionEnum'
messageType:
$ref: '#/components/schemas/messageTypeEnum'
segmentCount:
type: integer
description: The number of segments the message was sent as.
example: 1
errorCode:
type: integer
description: The numeric error code of the message.
example: 9902
receiveTime:
type: string
format: date-time
description: The ISO 8601 datetime of the message.
example: 2020-04-07T14:03:07.000Z
carrierName:
type: string
nullable: true
description: >-
The name of the carrier. Not currently supported for MMS coming
soon.
example: other
messageSize:
type: integer
description: The size of the message including message content and headers.
nullable: true
example: 27
messageLength:
type: integer
description: The length of the message content.
example: 18
attachmentCount:
type: integer
description: The number of attachments the message has.
nullable: true
example: 1
recipientCount:
type: integer
description: The number of recipients the message has.
nullable: true
example: 1
campaignClass:
type: string
description: The campaign class of the message if it has one.
nullable: true
example: T
campaignId:
type: string
description: The campaign ID of the message if it has one.
nullable: true
example: CJEUMDK
pageInfo:
title: PageInfo
type: object
properties:
prevPage:
type: string
description: The link to the previous page for pagination.
example: >-
https://messaging.bandwidth.com/api/v2/users/accountId/messages?messageStatus=DLR_EXPIRED&nextPage=DLAPE902
nextPage:
type: string
description: The link to the next page for pagination.
example: >-
https://messaging.bandwidth.com/api/v2/users/accountId/messages?messageStatus=DLR_EXPIRED&prevPage=GL83PD3C
prevPageToken:
type: string
description: The isolated pagination token for the previous page.
example: DLAPE902
nextPageToken:
type: string
description: The isolated pagination token for the next page.
example: GL83PD3C
messagingRequestError:
title: MessagingRequestError
type: object
properties:
type:
type: string
description:
type: string
required:
- type
- description
createMessageRequestError:
title: CreateMessageRequestError
type: object
properties:
type:
type: string
description:
type: string
fieldErrors:
type: array
items:
$ref: '#/components/schemas/fieldError'
required:
- type
- description
media:
title: Media
type: object
properties:
content:
type: string
contentLength:
type: integer
mediaName:
type: string
tag:
title: Tag
type: object
properties:
key:
type: string
value:
type: string
deferredResult:
title: DeferredResult
type: object
properties:
result:
type: object
setOrExpired:
type: boolean
message:
title: Message
type: object
properties:
id:
type: string
description: The id of the message.
example: 1589228074636lm4k2je7j7jklbn2
owner:
type: string
description: The Bandwidth phone number associated with the message.
example: '+15554443333'
applicationId:
type: string
description: The application ID associated with the message.
example: 93de2206-9669-4e07-948d-329f4b722ee2
time:
type: string
format: date-time
description: The datetime stamp of the message in ISO 8601
example: 2022-09-14T18:20:16.000Z
segmentCount:
type: integer
description: >-
The number of segments the original message from the user is broken
into before sending over to carrier networks.
example: 2
direction:
$ref: '#/components/schemas/messageDirectionEnum'
to:
uniqueItems: true
type: array
items:
type: string
description: The phone number recipients of the message.
example:
- '+15552223333'
from:
type: string
description: The phone number the message was sent from.
example: '+15553332222'
media:
uniqueItems: true
type: array
items:
type: string
description: >-
The list of media URLs sent in the message. Including a `filename`
field in the `Content-Disposition` header of the media linked with a
URL will set the displayed file name. This is a best practice to
ensure that your media has a readable file name.
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
text:
type: string
description: The contents of the message.
example: Hello world
tag:
type: string
description: The custom string set by the user.
example: custom tag
priority:
$ref: '#/components/schemas/priorityEnum'
expiration:
type: string
format: date-time
description: The expiration date-time set by the user.
example: '2021-02-01T11:29:18-05:00'
messageRequest:
title: MessageRequest
type: object
required:
- applicationId
- to
- from
properties:
applicationId:
type: string
description: >-
The ID of the Application your from number is associated with in the
Bandwidth Phone Number Dashboard.
example: 93de2206-9669-4e07-948d-329f4b722ee2
to:
uniqueItems: true
type: array
description: The phone number(s) the message should be sent to in E164 format.
example:
- '+15554443333'
- '+15552223333'
items:
type: string
from:
type: string
description: >-
Either an alphanumeric sender ID or the sender's Bandwidth phone
number in E.164 format, which must be hosted within Bandwidth and
linked to the account that is generating the message.
Alphanumeric Sender IDs can contain up to 11 characters, upper-case
letters A-Z, lower-case letters a-z, numbers 0-9, space, hyphen -,
plus +, underscore _ and ampersand &. Alphanumeric Sender IDs must
contain at least one letter.
example: '+15551113333'
text:
type: string
description: The contents of the text message. Must be 2048 characters or less.
maxLength: 2048
example: Hello world
media:
type: array
items:
type: string
format: uri
maxLength: 4096
description: >-
A list of URLs to include as media attachments as part of the
message.
Each URL can be at most 4096 characters.
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
- https://dev.bandwidth.com/images/github_logo.png
tag:
type: string
description: >-
A custom string that will be included in callback events of the
message. Max 1024 characters.
example: custom string
priority:
$ref: '#/components/schemas/priorityEnum'
expiration:
type: string
format: date-time
description: >-
A string with the date/time value that the message will
automatically expire by. This must be a valid RFC-3339 value, e.g.,
2021-03-14T01:59:26Z or 2021-03-13T20:59:26-05:00. Must be a
date-time in the future.
Not supported on MMS.
example: '2021-02-01T11:29:18-05:00'
inboundMessageCallback:
description: Inbound Message Callback
type: object
properties:
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
type:
type: string
example: message-received
to:
type: string
example: '+15552223333'
description:
type: string
example: Incoming message received
message:
$ref: '#/components/schemas/inboundMessageCallbackMessage'
required:
- time
- type
- to
- description
- message
inboundMessageCallbackMessage:
description: Inbound Message Callback Message Schema
type: object
properties:
id:
type: string
example: 1661365814859loidf7mcwd4qacn7
owner:
type: string
example: '+15553332222'
applicationId:
type: string
example: 93de2206-9669-4e07-948d-329f4b722ee2
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
segmentCount:
type: integer
example: 1
direction:
$ref: '#/components/schemas/messageDirectionEnum'
to:
uniqueItems: true
type: array
items:
type: string
example:
- '+15552223333'
from:
type: string
example: '+15553332222'
text:
type: string
example: Hello world
tag:
type: string
example: custom string
media:
type: array
items:
type: string
format: uri
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
- https://dev.bandwidth.com/images/github_logo.png
priority:
$ref: '#/components/schemas/priorityEnum'
required:
- id
- owner
- applicationId
- time
- segmentCount
- direction
- to
- from
- text
messageSendingCallback:
type: object
description: Message Sending Callback
properties:
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
type:
type: string
example: message-sending
to:
type: string
example: '+15552223333'
description:
type: string
example: Message is sending to carrier
message:
$ref: '#/components/schemas/messageSendingCallbackMessage'
required:
- time
- type
- to
- description
- message
messageSendingCallbackMessage:
description: Message Sending Callback Message Schema
type: object
properties:
id:
type: string
example: 1661365814859loidf7mcwd4qacn7
owner:
type: string
example: '+15553332222'
applicationId:
type: string
example: 93de2206-9669-4e07-948d-329f4b722ee2
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
segmentCount:
type: integer
example: 1
direction:
$ref: '#/components/schemas/messageDirectionEnum'
to:
uniqueItems: true
type: array
items:
type: string
example:
- '+15552223333'
from:
type: string
example: '+15553332222'
text:
type: string
example: Hello world
tag:
type: string
example: custom string
media:
type: array
items:
type: string
format: uri
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
- https://dev.bandwidth.com/images/github_logo.png
priority:
$ref: '#/components/schemas/priorityEnum'
required:
- id
- owner
- applicationId
- time
- segmentCount
- direction
- to
- from
- text
- media
- priority
messageDeliveredCallback:
description: Message Delivered Callback
type: object
properties:
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
type:
type: string
example: message-delivered
to:
type: string
example: '+15552223333'
description:
type: string
example: Message delivered to carrier.
message:
$ref: '#/components/schemas/messageDeliveredCallbackMessage'
required:
- time
- type
- to
- description
- message
messageDeliveredCallbackMessage:
description: Message Delivered Callback Message Schema
type: object
properties:
id:
type: string
example: 1661365814859loidf7mcwd4qacn7
owner:
type: string
example: '+15553332222'
applicationId:
type: string
example: 93de2206-9669-4e07-948d-329f4b722ee2
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
segmentCount:
type: integer
example: 1
direction:
$ref: '#/components/schemas/messageDirectionEnum'
to:
uniqueItems: true
type: array
items:
type: string
example:
- '+15552223333'
from:
type: string
example: '+15553332222'
text:
type: string
example: Hello world
tag:
type: string
example: custom string
media:
type: array
items:
type: string
format: uri
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
- https://dev.bandwidth.com/images/github_logo.png
priority:
$ref: '#/components/schemas/priorityEnum'
required:
- id
- owner
- applicationId
- time
- segmentCount
- direction
- to
- from
- text
- tag
messageFailedCallback:
description: Message Failed Callback
type: object
properties:
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
type:
type: string
example: message-failed
to:
type: string
example: '+15552223333'
description:
type: string
example: rejected-unallocated-from-number
message:
$ref: '#/components/schemas/messageFailedCallbackMessage'
errorCode:
type: integer
example: 9902
required:
- time
- type
- to
- description
- message
- errorCode
messageFailedCallbackMessage:
description: Message Failed Callback Message Schema
type: object
properties:
id:
type: string
example: 1661365814859loidf7mcwd4qacn7
owner:
type: string
example: '+15553332222'
applicationId:
type: string
example: 93de2206-9669-4e07-948d-329f4b722ee2
time:
type: string
format: date-time
example: 2016-09-14T18:20:16.000Z
segmentCount:
type: integer
example: 1
direction:
$ref: '#/components/schemas/messageDirectionEnum'
to:
uniqueItems: true
type: array
items:
type: string
example:
- '+15552223333'
from:
type: string
example: '+15553332222'
text:
type: string
example: Hello world
tag:
type: string
example: custom string
media:
type: array
items:
type: string
format: uri
example:
- https://dev.bandwidth.com/images/bandwidth-logo.png
- https://dev.bandwidth.com/images/github_logo.png
priority:
$ref: '#/components/schemas/priorityEnum'
required:
- id
- owner
- applicationId
- time
- segmentCount
- direction
- to
- from
- text
- tag
- priority
callbackMethodEnum:
type: string
nullable: true
default: POST
enum:
- GET
- POST
description: >-
The HTTP method to use to deliver the callback. GET or POST. Default
value is POST.
example: POST
redirectMethodEnum:
type: string
nullable: true
default: POST
enum:
- GET
- POST
description: >-
The HTTP method to use for the request to `redirectUrl`. GET
or POST. Default value is POST.
Not allowed if `state` is
`completed`.
example: POST
recordingStateEnum:
type: string
enum:
- paused
- recording
description: |-
The recording state. Possible values:
`paused` to pause an active recording
`recording` to resume a paused recording
example: paused
callDirectionEnum:
type: string
enum:
- inbound
- outbound
description: The direction of the call.
example: inbound
fileFormatEnum:
type: string
enum:
- mp3
- wav
description: The format that the recording is stored in.
example: wav
callStateEnum:
nullable: true
type: string
default: active
enum:
- active
- completed
description: >-
The call state. Possible values:
`active` to redirect the
call (default)
`completed` to hang up the call if it is answered,
cancel
it if it is an unanswered outbound call, or reject it if it an
unanswered
inbound call
example: completed
conferenceStateEnum:
nullable: true
type: string
default: active
enum:
- active
- completed
description: >-
Setting the conference state to `completed` ends the conference and
ejects all members.
example: completed
machineDetectionModeEnum:
type: string
default: async
enum:
- sync
- async
description: >-
The machine detection mode. If set to 'async', the detection
result will be sent in a 'machineDetectionComplete' callback. If set to
'sync', the 'answer' callback will wait for the machine detection to
complete
and will include its result.
example: async
createCall:
type: object
required:
- answerUrl
- applicationId
- from
- to
properties:
to:
type: string
description: >-
The destination to call (must be an E.164 formatted number
(e.g. `+15555551212`) or a SIP URI (e.g.
`sip:user@server.example`)).
example: '+19195551234'
from:
type: string
description: >-
A Bandwidth phone number on your account the call should come
from (must be in E.164 format, like `+15555551212`, or be one of the
following
strings: `Restricted`, `Anonymous`, `Private`, or `Unavailable`).
example: '+19195554321'
displayName:
nullable: true
type: string
description: >-
The caller display name to use when the call is created.
May not exceed 256 characters nor contain control characters such as
new lines.
maxLength: 256
example: John Doe
uui:
nullable: true
type: string
example: >-
eyJhbGciOiJIUzI1NiJ9.WyJoaSJd.-znkjYyCkgz4djmHUPSXl9YrJ6Nix_XvmlwKGFh5ERM;encoding=jwt,aGVsbG8gd29ybGQ;encoding=base64
description: >-
A comma-separated list of 'User-To-User' headers to be sent
in the INVITE when calling a SIP URI. Each value must end with an
'encoding'
parameter as described in RFC
7433. Only 'jwt' and 'base64' encodings are allowed. The entire
value
cannot exceed 350 characters, including parameters and separators.
applicationId:
type: string
description: The id of the application associated with the `from` number.
example: 1234-qwer-5679-tyui
answerUrl:
type: string
format: uri
description: >-
The full URL to send the Answer
event to when the called party answers. This endpoint should return
the
first BXML document to be executed in
the
call.
Must use `https` if specifying `username` and `password`.
maxLength: 2048
example: https://www.myCallbackServer.example/webhooks/answer
answerMethod:
$ref: '#/components/schemas/callbackMethodEnum'
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
answerFallbackUrl:
nullable: true
type: string
format: uri
description: >-
A fallback url which, if provided, will be used to retry the
`answer` webhook delivery in case `answerUrl` fails to respond
Must use `https` if specifying `fallbackUsername` and
`fallbackPassword`.
maxLength: 2048
example: https://www.myFallbackServer.example/webhooks/answer
answerFallbackMethod:
$ref: '#/components/schemas/callbackMethodEnum'
fallbackUsername:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
fallbackPassword:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
disconnectUrl:
nullable: true
type: string
format: uri
description: >-
The URL to send the Disconnect event to when
the call ends. This event does not expect a BXML response.
maxLength: 2048
example: https://www.myCallbackServer.example/webhooks/disconnect
disconnectMethod:
$ref: '#/components/schemas/callbackMethodEnum'
callTimeout:
nullable: true
type: number
format: double
description: >-
The timeout (in seconds) for the callee to answer the call
after it starts ringing. If the call does not start ringing within
30s,
the call will be cancelled regardless of this value. Can be any
numeric
value (including decimals) between 1 and 300.
minimum: 1
maximum: 300
default: 30
example: 30
callbackTimeout:
nullable: true
type: number
format: double
description: >-
This is the timeout (in seconds) to use when delivering webhooks
for the call. Can be any numeric value (including decimals) between
1
and 25.
minimum: 1
maximum: 25
default: 15
example: 15
machineDetection:
$ref: '#/components/schemas/machineDetectionConfiguration'
priority:
nullable: true
type: integer
minimum: 1
maximum: 5
default: 5
description: >-
The priority of this call over other calls from your account. For
example, if during a call
your application needs to place a new call and bridge it with the
current
call, you might want to create the call with priority 1 so that it
will
be the next call picked off your queue, ahead of other less time
sensitive
calls. A lower value means higher priority, so a priority 1 call
takes
precedence over a priority 2 call.
example: 5
tag:
nullable: true
type: string
description: >-
A custom string that will be sent with all webhooks for this
call unless overwritten by a future ``
verb or `tag` attribute on another verb, or cleared.
May be cleared by setting `tag=""`
Max length 256 characters.
maxLength: 256
example: arbitrary text here
createCallResponse:
type: object
required:
- accountId
- answerMethod
- answerUrl
- applicationId
- callId
- callUrl
- disconnectMethod
- from
- to
properties:
applicationId:
type: string
example: 04e88489-df02-4e34-a0ee-27a91849555f
description: The id of the application associated with the `from` number.
accountId:
type: string
example: '9900000'
description: The bandwidth account ID associated with the call.
callId:
type: string
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
description: Programmable Voice API Call ID.
to:
type: string
example: '+19195551234'
description: Recipient of the outgoing call.
from:
type: string
example: '+19195554321'
description: Phone number that created the outbound call.
enqueuedTime:
nullable: true
type: string
format: date-time
description: The time at which the call was accepted into the queue.
example: '2022-06-16T13:15:07.160Z'
callUrl:
type: string
format: uri
example: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
description: The URL to update this call's state.
callTimeout:
type: number
format: double
example: 30
description: >-
The timeout (in seconds) for the callee to answer the call after it
starts ringing.
callbackTimeout:
type: number
format: double
example: 15
description: >-
This is the timeout (in seconds) to use when delivering webhooks for
the call.
tag:
nullable: true
type: string
example: My custom tag value
description: Custom tag value.
answerMethod:
$ref: '#/components/schemas/callbackMethodEnum'
answerUrl:
type: string
format: uri
example: https://myServer.example/bandwidth/webhooks/answer
description: URL to deliver the `answer` event webhook.
answerFallbackMethod:
$ref: '#/components/schemas/callbackMethodEnum'
answerFallbackUrl:
nullable: true
type: string
format: uri
example: https://myFallbackServer.example/bandwidth/webhooks/answer
description: Fallback URL to deliver the `answer` event webhook.
disconnectMethod:
$ref: '#/components/schemas/callbackMethodEnum'
disconnectUrl:
nullable: true
type: string
format: uri
example: https://myServer.example/bandwidth/webhooks/disconnect
description: URL to deliver the `disconnect` event webhook.
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
fallbackUsername:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
fallbackPassword:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
priority:
nullable: true
type: integer
example: 5
description: The priority of this call over other calls from your account.
callState:
type: object
properties:
applicationId:
type: string
description: The application id associated with the call.
example: 04e88489-df02-4e34-a0ee-27a91849555f
accountId:
type: string
description: The account id associated with the call.
example: '9900000'
callId:
type: string
description: The programmable voice API call ID.
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
parentCallId:
nullable: true
type: string
description: >-
The A-leg call id, set only if this call is the B-leg of a
[``](/docs/voice/bxml/transfer).
example: c-25ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
to:
type: string
description: >-
The phone number that received the call, in E.164 format (e.g.
+15555555555), or if the call was to a SIP URI, the SIP URI.
example: '+19195551234'
from:
type: string
description: >-
The phone number that made the call, in E.164 format (e.g.
+15555555555).
example: '19195554321'
direction:
$ref: '#/components/schemas/callDirectionEnum'
state:
description: >-
The current state of the call. Current possible values are
`queued`, `initiated`, `answered` and `disconnected`. Additional
states
may be added in the future, so your application must be tolerant of
unknown
values.
type: string
example: disconnected
stirShaken:
nullable: true
type: object
description: >-
For inbound calls, the Bandwidth STIR/SHAKEN implementation will
verify the information provided in the inbound invite request
`Identity` header.
The verification status is stored in the call state `stirShaken`
property as follows.
| Property | Description |
|:------------------|:------------|
| verstat | (optional) The verification status indicating whether
the verification was successful or not. Possible values are
`TN-Verification-Passed` or `TN-Verification-Failed`. |
| attestationIndicator | (optional) The attestation level verified
by Bandwidth. Possible values are `A` (full), `B` (partial) or `C`
(gateway). |
| originatingId | (optional) A unique origination identifier. |
Note that these are common properties but that the `stirShaken`
object is free form and can contain other key-value pairs.
More information: [Understanding
STIR/SHAKEN](https://www.bandwidth.com/regulations/stir-shaken).
additionalProperties:
type: string
example:
verstat: TN-Verification-Passed
attestationIndicator: A
originatingId: abc123
identity:
nullable: true
type: string
description: >-
The value of the `Identity` header from the inbound invite
request. Only present for inbound calls and if the account is
configured
to forward this header.
example: >-
eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9idy1zaGFrZW4tY2VydC1wdWIuczMuYW1hem9uYXdzLmNvbS9iYW5kd2lkdGgtc2hha2VuLWNlcnRfMjAyMzA3MTYucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxOTg0MjgyMDI4MCJdfSwiaWF0IjoxNjU2NTM0MzM2LCJvcmlnIjp7InRuIjoiMTkxOTQ0NDI2ODMifSwib3JpZ2lkIjoiNDk0NTlhOGEtNDJmNi0zNTFjLTkzNjEtYWRmNTdhOWUwOGNhIn0.56un9sRw_uH-sbJvnUsqdevlVxbOVjn8MVlGTlBMicjaZuRRwxfiNp-C9zYCMKTTCbc-QdYPN05F61XNVN4D3w;info=;alg=ES256;ppt=shaken
enqueuedTime:
nullable: true
type: string
format: date-time
description: The time this call was placed in queue.
example: '2022-06-16T13:15:07.160Z'
startTime:
nullable: true
type: string
format: date-time
description: >-
The time the call was initiated, in ISO 8601 format. `null` if the
call is still in your queue.
example: '2022-06-16T13:15:07.160Z'
answerTime:
nullable: true
type: string
format: date-time
description: >-
Populated once the call has been answered, with the time in ISO 8601
format.
example: '2022-06-16T13:15:18.126Z'
endTime:
nullable: true
type: string
format: date-time
description: Populated once the call has ended, with the time in ISO 8601 format.
example: '2022-06-16T13:15:18.314Z'
disconnectCause:
nullable: true
type: string
description: >-
| Cause | Description |
|:------|:------------|
| `hangup`| One party hung up the call, a
[``](../../bxml/verbs/hangup.md) verb was executed, or there
was no more BXML to execute; it indicates that the call ended
normally. |
| `busy` | Callee was busy. |
| `timeout` | Call wasn't answered before the `callTimeout` was
reached. |
| `cancel` | Call was cancelled by its originator while it was
ringing. |
| `rejected` | Call was rejected by the callee. |
| `callback-error` | BXML callback couldn't be delivered to your
callback server. |
| `invalid-bxml` | Invalid BXML was returned in response to a
callback. |
| `application-error` | An unsupported action was tried on the call,
e.g. trying to play a .ogg audio. |
| `account-limit` | Account rate limits were reached. |
| `node-capacity-exceeded` | System maximum capacity was reached. |
| `error` | Some error not described in any of the other causes
happened on the call. |
| `unknown` | Unknown error happened on the call. |
Note: This list is not exhaustive and other values can appear in the
future.
errorMessage:
nullable: true
type: string
description: >-
Populated only if the call ended with an error, with text explaining
the reason.
example: null
errorId:
nullable: true
type: string
description: >-
Populated only if the call ended with an error, with a Bandwidth
internal id that references the error event.
example: null
lastUpdate:
type: string
format: date-time
description: The last time the call had a state update, in ISO 8601 format.
example: '2022-06-16T13:15:18.314Z'
updateCall:
type: object
properties:
state:
$ref: '#/components/schemas/callStateEnum'
redirectUrl:
description: |-
The URL to send the [Redirect](/docs/voice/bxml/redirect) event
to which will provide new BXML.
Required if `state` is `active`.
Not allowed if `state` is `completed`.
nullable: true
type: string
format: uri
example: https://myServer.example/bandwidth/webhooks/redirect
redirectMethod:
$ref: '#/components/schemas/redirectMethodEnum'
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
redirectFallbackUrl:
nullable: true
type: string
format: uri
description: |-
A fallback url which, if provided, will be used to retry the
redirect callback delivery in case `redirectUrl` fails to respond.
example: https://myFallbackServer.example/bandwidth/webhooks/redirect
redirectFallbackMethod:
$ref: '#/components/schemas/redirectMethodEnum'
fallbackUsername:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
fallbackPassword:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
tag:
nullable: true
type: string
description: >-
A custom string that will be sent with this and all future
callbacks unless overwritten by a future `tag` attribute or
[``](/docs/voice/bxml/tag)
verb, or cleared.
May be cleared by setting `tag=""`.
Max length 256 characters.
Not allowed if `state` is `completed`.
maxLength: 256
example: My Custom Tag
updateCallRecording:
type: object
required:
- state
properties:
state:
$ref: '#/components/schemas/recordingStateEnum'
accountStatistics:
type: object
properties:
currentCallQueueSize:
type: integer
description: The number of calls currently enqueued.
example: 0
maxCallQueueSize:
type: integer
description: >-
The maximum size of the queue before outgoing calls start being
rejected.
example: 900
callRecordingMetadata:
type: object
properties:
applicationId:
$ref: '#/components/schemas/applicationId'
accountId:
$ref: '#/components/schemas/accountId'
callId:
$ref: '#/components/schemas/callId'
parentCallId:
$ref: '#/components/schemas/parentCallId'
recordingId:
$ref: '#/components/schemas/recordingId'
to:
$ref: '#/components/schemas/to'
from:
$ref: '#/components/schemas/from'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
duration:
$ref: '#/components/schemas/duration'
direction:
$ref: '#/components/schemas/callDirectionEnum'
channels:
$ref: '#/components/schemas/channels'
startTime:
$ref: '#/components/schemas/startTime'
endTime:
$ref: '#/components/schemas/endTime'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
status:
$ref: '#/components/schemas/status'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
transcription:
$ref: '#/components/schemas/transcriptionMetadata'
conference:
type: object
properties:
id:
type: string
description: The Bandwidth-generated conference ID.
example: conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9
name:
type: string
description: The name of the conference, as specified by your application.
example: my-conference-name
createdTime:
type: string
format: date-time
description: The time the conference was initiated, in ISO 8601 format.
example: '2022-06-17T22:19:40.375Z'
completedTime:
nullable: true
type: string
format: date-time
description: The time the conference was terminated, in ISO 8601 format.
example: '2022-06-17T22:20:00.000Z'
conferenceEventUrl:
nullable: true
type: string
format: uri
description: The URL to send the conference-related events.
example: https://myServer.example/bandwidth/webhooks/conferenceEvent
conferenceEventMethod:
$ref: '#/components/schemas/callbackMethodEnum'
tag:
nullable: true
type: string
description: >-
The custom string attached to the conference that will be sent with
callbacks.
example: my custom tag
activeMembers:
type: array
nullable: true
items:
$ref: '#/components/schemas/conferenceMember'
description: >-
A list of active members of the conference. Omitted if this
is a response to the [Get Conferences
endpoint](/apis/voice#tag/Conferences/operation/listConferences).
updateConference:
type: object
properties:
status:
$ref: '#/components/schemas/conferenceStateEnum'
redirectUrl:
nullable: true
type: string
format: uri
description: >-
The URL to send the
[conferenceRedirect](/docs/voice/webhooks/conferenceRedirect)
event which will provide new BXML. Not allowed if `state` is
`completed`,
but required if `state` is `active`.
example: https://myServer.example/bandwidth/webhooks/conferenceRedirect
redirectMethod:
$ref: '#/components/schemas/redirectMethodEnum'
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
redirectFallbackUrl:
nullable: true
type: string
format: uri
description: >-
A fallback url which, if provided, will be used to retry the
`conferenceRedirect` webhook delivery in case `redirectUrl` fails to
respond. Not
allowed if `state` is `completed`.
example: >-
https://myFallbackServer.example/bandwidth/webhooks/conferenceRedirect
redirectFallbackMethod:
$ref: '#/components/schemas/redirectMethodEnum'
fallbackUsername:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
fallbackPassword:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
conferenceMember:
type: object
properties:
callId:
$ref: '#/components/schemas/callId'
conferenceId:
$ref: '#/components/schemas/conferenceId'
memberUrl:
type: string
description: >-
A URL that may be used to retrieve information about or update
the state of this conference member. This is the URL of this
member's
[Get Conference Member](/apis/voice/#operation/getConferenceMember)
endpoint
and [Modify Conference
Member](/apis/voice/#operation/updateConferenceMember)
endpoint.
example: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/conferences/conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9/members/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
mute:
type: boolean
description: >-
Whether or not this member is currently muted. Members who are muted
are still able to hear other participants.
If used in a PUT request, updates this member's mute status. Has no
effect if omitted.
example: false
hold:
type: boolean
description: >-
Whether or not this member is currently on hold. Members who are on
hold are not able to hear or speak in the conference.
If used in a PUT request, updates this member's hold status. Has no
effect if omitted.
example: false
callIdsToCoach:
nullable: true
type: array
items:
type: string
description: >-
If this member had a value set for `callIdsToCoach` in its
[Conference](/docs/voice/bxml/conference) verb or this list was
added with a previous PUT request to modify the member, this is that
list of calls.
If present in a PUT request, modifies the calls that this member is
coaching. Has no effect if omitted. See the documentation for the
[Conference](/docs/voice/bxml/conference) verb for more details
about coaching.
Note that this will not add the matching calls to the conference;
each call must individually execute a Conference verb to join.
example:
- c-25ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
updateConferenceMember:
type: object
properties:
mute:
type: boolean
description: >-
Whether or not this member is currently muted. Members who are muted
are still able to hear other participants.
Updates this member's mute status. Has no effect if omitted.
example: false
hold:
type: boolean
description: >-
Whether or not this member is currently on hold. Members who are on
hold are not able to hear or speak in the conference.
Updates this member's hold status. Has no effect if omitted.
example: false
callIdsToCoach:
nullable: true
type: array
items:
type: string
description: >-
If this member had a value set for `callIdsToCoach` in its
[Conference](/docs/voice/bxml/conference) verb or this list was
added with a previous PUT request to modify the member, this is that
list of calls.
Modifies the calls that this member is coaching. Has no effect if
omitted. See the documentation for the
[Conference](/docs/voice/bxml/conference) verb for more details
about coaching.
Note that this will not add the matching calls to the conference;
each call must individually execute a Conference verb to join.
example:
- c-25ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
conferenceRecordingMetadata:
type: object
properties:
accountId:
$ref: '#/components/schemas/accountId'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
recordingId:
$ref: '#/components/schemas/recordingId'
duration:
$ref: '#/components/schemas/duration'
channels:
$ref: '#/components/schemas/channels'
startTime:
$ref: '#/components/schemas/startTime'
endTime:
$ref: '#/components/schemas/endTime'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
status:
$ref: '#/components/schemas/status'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
machineDetectionConfiguration:
type: object
description: >-
The machine detection request used to perform machine detection on the
call.
properties:
mode:
$ref: '#/components/schemas/machineDetectionModeEnum'
detectionTimeout:
nullable: true
type: number
format: double
description: >-
The timeout used for the whole operation, in seconds. If no
result is determined in this period, a callback with a `timeout`
result
is sent.
default: 15
example: 15
silenceTimeout:
nullable: true
type: number
format: double
description: >-
If no speech is detected in this period, a callback with a 'silence'
result is sent.
default: 10
example: 10
speechThreshold:
nullable: true
type: number
format: double
description: >-
When speech has ended and a result couldn't be determined based
on the audio content itself, this value is used to determine if the
speaker
is a machine based on the speech duration. If the length of the
speech
detected is greater than or equal to this threshold, the result will
be
'answering-machine'. If the length of speech detected is below this
threshold,
the result will be 'human'.
default: 10
example: 10
speechEndThreshold:
nullable: true
type: number
format: double
description: >-
Amount of silence (in seconds) before assuming the callee has
finished speaking.
default: 5
example: 5
machineSpeechEndThreshold:
nullable: true
type: number
format: double
description: >-
When an answering machine is detected, the amount of silence (in
seconds) before assuming the message has finished playing.
If not provided it will default to the speechEndThreshold value.
example: 5
delayResult:
nullable: true
type: boolean
description: >-
If set to 'true' and if an answering machine is detected, the
'answering-machine' callback will be delayed until the machine is
done
speaking, or an end of message tone is detected, or until the
'detectionTimeout' is exceeded. If false, the 'answering-machine'
result is sent immediately.
default: false
example: false
callbackUrl:
nullable: true
description: >-
The URL to send the 'machineDetectionComplete' webhook when the
detection is completed. Only for 'async' mode.
type: string
format: uri
maxLength: 2048
example: https://myServer.example/bandwidth/webhooks/machineDetectionComplete
callbackMethod:
$ref: '#/components/schemas/callbackMethodEnum'
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
fallbackUrl:
nullable: true
type: string
format: uri
description: >-
A fallback URL which, if provided, will be used to retry the
machine detection complete webhook delivery in case `callbackUrl`
fails
to respond
maxLength: 2048
example: >-
https://myFallbackServer.example/bandwidth/webhooks/machineDetectionComplete
fallbackMethod:
$ref: '#/components/schemas/callbackMethodEnum'
fallbackUsername:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
fallbackPassword:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
transcribeRecording:
type: object
properties:
callbackUrl:
type: string
format: uri
description: >-
The URL to send the
[TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable)
event to. You should not include sensitive or
personally-identifiable
information in the callbackUrl field! Always use the proper username
and
password fields for authorization.
example: https://myServer.example/bandwidth/webhooks/transcriptionAvailable
callbackMethod:
$ref: '#/components/schemas/callbackMethodEnum'
username:
type: string
nullable: true
description: Basic auth username.
maxLength: 1024
example: mySecretUsername
password:
type: string
nullable: true
description: Basic auth password.
maxLength: 1024
example: mySecretPassword1!
tag:
$ref: '#/components/schemas/tag1'
callbackTimeout:
nullable: true
type: number
format: double
minimum: 1
maximum: 25
default: 15
description: >-
This is the timeout (in seconds) to use when delivering the
webhook to `callbackUrl`. Can be any numeric value (including
decimals)
between 1 and 25.
example: 5.5
detectLanguage:
type: boolean
nullable: true
description: >-
A boolean value to indicate that the recording may not be in
English, and the transcription service will need to detect the
dominant language the recording is in and transcribe accordingly.
Current supported languages are English, French, and Spanish.
default: false
example: true
transcriptionList:
type: object
properties:
transcripts:
type: array
items:
$ref: '#/components/schemas/transcription'
transcriptionMetadata:
nullable: true
type: object
description: If the recording was transcribed, metadata about the transcription
properties:
id:
type: string
description: The unique transcription ID
example: t-387bd648-18f3-4823-9d16-746bca0003c9
status:
$ref: '#/components/schemas/status'
completedTime:
type: string
description: The time that the transcription was completed
example: '2022-06-13T18:46:29.715Z'
url:
type: string
format: uri
description: The URL of the [transcription](#operation/getCallTranscription)
example: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85/recordings/r-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85/transcription
voiceApiError:
type: object
properties:
type:
type: string
description:
type: string
id:
nullable: true
type: string
answerCallback:
type: object
description: >-
The Answer event is sent to the answerUrl specified in the createCall
request when an outbound call is answered.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
machineDetectionResult:
$ref: '#/components/schemas/machineDetectionResult'
bridgeCompleteCallback:
type: object
description: >-
If the target call leaves the , then this callback is sent to
the bridgeCompleteUrl, and the BXML returned in it is executed on the
call. If this webhook is sent, the Bridge Target Complete webhook is NOT
sent. This callback is also sent if any problem occurs that prevents the
calls to be bridged.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
cause:
$ref: '#/components/schemas/cause'
errorMessage:
$ref: '#/components/schemas/errorMessage'
errorId:
$ref: '#/components/schemas/errorId'
bridgeTargetCompleteCallback:
type: object
description: >-
If the originating call leaves the , then this callback is sent
to the bridgeTargetCompleteUrl, and the BXML returned in it is executed
on the target call. If this webhook is sent, the Bridge Complete webhook
is NOT sent.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
conferenceCreatedCallback:
type: object
description: >-
The Conference Created event is fired whenever a new conference that
specified a callbackUrl is created. The response may be either empty or
a BXML document. Only the following verbs are valid for conferences:
PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording,
ResumeRecording. Audio verbs will be heard by all members of the
conference. Recordings capture audio from all members who are not muted
or on hold, as well as any audio verbs that are played into the
conference.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
tag:
$ref: '#/components/schemas/tag1'
conferenceRedirectCallback:
type: object
description: >-
The Conference Redirect event is fired whenever an existing conference
is modified via a POST request made to the /conferences/{conferenceId}
endpoint. The response may be either empty or a BXML document. Only the
following verbs are valid for conferences: PlayAudio, SpeakSentence,
StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio
verbs will be heard by all members of the conference. Recordings capture
audio from all members who are not muted or on hold, as well as any
audio verbs that are played into the conference.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
tag:
$ref: '#/components/schemas/tag1'
conferenceMemberJoinCallback:
type: object
description: >-
The Conference Member Join event is fired whenever a caller joins a
conference that specified a callbackUrl. The response may be either
empty or a BXML document. Only the following verbs are valid for
conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording,
PauseRecording, ResumeRecording. Audio verbs will be heard by all
members of the conference. Recordings capture audio from all members who
are not muted or on hold, as well as any audio verbs that are played
into the conference.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
callId:
$ref: '#/components/schemas/callId'
tag:
$ref: '#/components/schemas/tag1'
conferenceMemberExitCallback:
type: object
description: >-
The Conference Member Exit event is fired whenever a caller exits a
conference that specified a callbackUrl. The response may be either
empty or a BXML document. Only the following verbs are valid for
conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording,
PauseRecording, ResumeRecording. Audio verbs will be heard by all
members of the conference. Recordings capture audio from all members who
are not muted or on hold, as well as any audio verbs that are played
into the conference.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
callId:
$ref: '#/components/schemas/callId'
tag:
$ref: '#/components/schemas/tag1'
conferenceCompletedCallback:
type: object
description: >-
The Conference Completed event is fired when the last member leaves the
conference. The response to this event may not contain BXML.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
tag:
$ref: '#/components/schemas/tag1'
conferenceRecordingAvailableCallback:
type: object
description: >-
The Conference Recording Available event is sent after a conference
recording has been processed. It indicates that the recording is
available for download.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
conferenceId:
$ref: '#/components/schemas/conferenceId'
name:
$ref: '#/components/schemas/name'
accountId:
$ref: '#/components/schemas/accountId'
recordingId:
$ref: '#/components/schemas/recordingId'
channels:
$ref: '#/components/schemas/channels'
startTime:
$ref: '#/components/schemas/startTime'
endTime:
$ref: '#/components/schemas/endTime'
duration:
$ref: '#/components/schemas/duration'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
tag:
$ref: '#/components/schemas/tag1'
status:
$ref: '#/components/schemas/status'
disconnectCallback:
type: object
description: The Disconnect event is fired when a call ends, for any reason.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
callId:
$ref: '#/components/schemas/callId'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
endTime:
$ref: '#/components/schemas/endTime'
cause:
$ref: '#/components/schemas/cause'
errorMessage:
$ref: '#/components/schemas/errorMessage'
errorId:
$ref: '#/components/schemas/errorId'
tag:
$ref: '#/components/schemas/tag1'
dtmfCallback:
type: object
description: >-
The DTMF event is sent for every digit detected after a
verb is executed. You may not respond to this event with BXML.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
callId:
$ref: '#/components/schemas/callId'
direction:
$ref: '#/components/schemas/callDirectionEnum'
digit:
$ref: '#/components/schemas/digit'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
parentCallId:
$ref: '#/components/schemas/parentCallId'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
tag:
$ref: '#/components/schemas/tag1'
gatherCallback:
type: object
description: >-
The gather event is sent after a verb is executed. Its purpose
is to report the gathered digits to the calling application.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
digits:
$ref: '#/components/schemas/digits'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
parentCallId:
$ref: '#/components/schemas/parentCallId'
terminatingDigit:
$ref: '#/components/schemas/terminatingDigit'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
tag:
$ref: '#/components/schemas/tag1'
initiateCallback:
type: object
description: >-
The Initiate event is fired when an inbound call is received for a
Telephone Number on your Account. It is sent to the URL specified in the
application associated with the location (sip-peer) that the called
telephone number belongs to.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
startTime:
$ref: '#/components/schemas/startTime'
diversion:
$ref: '#/components/schemas/diversion'
stirShaken:
$ref: '#/components/schemas/stirShaken'
machineDetectionCompleteCallback:
type: object
description: >-
This event is sent to the url informed when requesting a machine
detection operation. It contains the machine detection operation result,
which can be: human, answering-machine, silence, timeout, error. This
event is not sent when sync answering machine detection mode is chosen.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
machineDetectionResult:
$ref: '#/components/schemas/machineDetectionResult'
recordingCompleteCallback:
type: object
description: >-
The Record Complete event is sent after a verb has executed if
the call is still active. The BXML returned by this callback is executed
next. When the recording is available for download, a Recording
Available event will be sent.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
parentCallId:
$ref: '#/components/schemas/parentCallId'
recordingId:
$ref: '#/components/schemas/recordingId'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
endTime:
$ref: '#/components/schemas/endTime'
duration:
$ref: '#/components/schemas/duration'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
channels:
$ref: '#/components/schemas/channels'
tag:
$ref: '#/components/schemas/tag1'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
recordingAvailableCallback:
type: object
description: >-
The Recording Available event is sent after a recording has been
processed. It indicates that the recording is available for download.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
parentCallId:
$ref: '#/components/schemas/parentCallId'
recordingId:
$ref: '#/components/schemas/recordingId'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
endTime:
$ref: '#/components/schemas/endTime'
duration:
$ref: '#/components/schemas/duration'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
channels:
$ref: '#/components/schemas/status'
tag:
$ref: '#/components/schemas/tag1'
status:
$ref: '#/components/schemas/status'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
redirectCallback:
type: object
description: >-
The Redirect event is fired when a verb is executed. Its
purpose is to get the next set of verbs from the calling application.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
parentCallId:
$ref: '#/components/schemas/parentCallId'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
transcriptionAvailableCallback:
type: object
description: >-
The Transcription Available event is sent when the recording
transcription is available to be downloaded.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
mediaUrl:
$ref: '#/components/schemas/mediaUrl'
parentCallId:
$ref: '#/components/schemas/parentCallId'
recordingId:
$ref: '#/components/schemas/recordingId'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
endTime:
$ref: '#/components/schemas/endTime'
duration:
$ref: '#/components/schemas/duration'
fileFormat:
$ref: '#/components/schemas/fileFormatEnum'
tag:
$ref: '#/components/schemas/tag1'
transcription:
$ref: '#/components/schemas/transcription'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
transferAnswerCallback:
type: object
description: >-
When processing a verb, this event is sent when a called
party (B-leg) answers. The event is sent to the endpoint specified in
the transferAnswerUrl attribute of the tag that answered.
BXML returned by this callback will be executed for the called party
only. After all BXML has been executed, the called party will be bridged
to the original call. Most BXML verbs are allowed in response to a
transferAnswer event, but some are not allowed.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
transferCompleteCallback:
type: object
description: >-
This event is sent to the transferCompleteUrl of the A-leg's
verb when the transferred call (B-leg) completes. In a simultaneous
ringing scenario, only one B-leg succeeds and this event corresponds to
that successful leg. If none of the calls were answered, the
transferComplete event corresponds to one of the legs.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
tag:
$ref: '#/components/schemas/tag1'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
cause:
$ref: '#/components/schemas/cause'
errorMessage:
$ref: '#/components/schemas/errorMessage'
errorId:
$ref: '#/components/schemas/errorId'
transferDisconnectCallback:
type: object
description: >-
This event is sent to the transferDisconnectUrl of each
tag when its respective call leg ends for any reason. The event is sent
in the normal case, when the transferred leg is answered and later hung
up, but is also sent if the new leg was never answered in the first
place, if it was rejected, and if the original call leg hung up before
the transferred leg.
properties:
eventType:
$ref: '#/components/schemas/eventType'
eventTime:
$ref: '#/components/schemas/eventTime'
accountId:
$ref: '#/components/schemas/accountId'
applicationId:
$ref: '#/components/schemas/applicationId'
from:
$ref: '#/components/schemas/from'
to:
$ref: '#/components/schemas/to'
direction:
$ref: '#/components/schemas/callDirectionEnum'
callId:
$ref: '#/components/schemas/callId'
callUrl:
$ref: '#/components/schemas/callUrl'
parentCallId:
$ref: '#/components/schemas/parentCallId'
enqueuedTime:
$ref: '#/components/schemas/enqueuedTime'
startTime:
$ref: '#/components/schemas/startTime'
answerTime:
$ref: '#/components/schemas/answerTime'
endTime:
$ref: '#/components/schemas/endTime'
tag:
$ref: '#/components/schemas/tag1'
transferCallerId:
$ref: '#/components/schemas/transferCallerId'
transferTo:
$ref: '#/components/schemas/transferTo'
cause:
$ref: '#/components/schemas/cause'
errorMessage:
$ref: '#/components/schemas/errorMessage'
errorId:
$ref: '#/components/schemas/errorId'
eventType:
type: string
description: >-
The event type, value can be one of the following: answer,
bridgeComplete, bridgeTargetComplete, conferenceCreated,
conferenceRedirect, conferenceMemberJoin, conferenceMemberExit,
conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf,
gather, initiate, machineDetectionComplete, recordingComplete,
recordingAvailable, redirect, transcriptionAvailable, transferAnswer,
transferComplete, transferDisconnect.
example: bridgeComplete
eventTime:
type: string
format: date-time
description: >-
The approximate UTC date and time when the event was generated by the
Bandwidth server, in ISO 8601 format. This may not be exactly the time
of event execution.
example: '2022-06-17T22:19:40.375Z'
accountId:
type: string
description: The user account associated with the call.
example: '920012'
applicationId:
type: string
description: The id of the application associated with the call.
example: 04e88489-df02-4e34-a0ee-27a91849555f
to:
type: string
description: >-
The phone number that received the call, in E.164 format (e.g.
+15555555555).
example: '+15555555555'
from:
type: string
description: >-
The provided identifier of the caller: can be a phone number in E.164
format (e.g. +15555555555) or one of Private, Restricted, Unavailable,
or Anonymous.
example: '+15555555555'
conferenceId:
type: string
description: The unique, Bandwidth-generated ID of the conference that was recorded
example: conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9
name:
type: string
description: The user-specified name of the conference that was recorded
example: my-conference-name
recordingId:
type: string
description: The unique ID of this recording
example: r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833
duration:
type: string
description: The duration of the recording in ISO-8601 format
example: PT13.67S
channels:
type: integer
format: int32
description: >-
Always `1` for conference recordings; multi-channel recordings are not
supported on conferences.
example: 1
digit:
type: string
description: The digit collected in the call.
example: '2'
digits:
type: string
description: >-
(optional) The digits, letters, and/or symbols entered by the user. The
string is empty if a timeout occurred before any buttons were pressed.
example: '123'
terminatingDigit:
type: string
description: >-
(optional) The digit the user pressed to end the gather. Empty string
value if no terminating digit was pressed.
example: '#'
startTime:
type: string
format: date-time
description: Time the call was started, in ISO 8601 format.
example: '2022-06-17T22:19:40.375Z'
enqueuedTime:
type: string
format: date-time
description: >-
(optional) If call queueing is enabled and this is an outbound call,
time the call was queued, in ISO 8601 format.
example: '2022-06-17T22:20:00.000Z'
nullable: true
answerTime:
type: string
format: date-time
description: Time the call was answered, in ISO 8601 format.
example: '2022-06-17T22:20:00.000Z'
nullable: true
endTime:
type: string
format: date-time
description: The time that the recording ended in ISO-8601 format
example: '2022-06-17T22:20:00.000Z'
status:
type: string
description: >-
The current status of the process. For recording, current possible
values are 'processing', 'partial', 'complete', 'deleted', and 'error'.
For transcriptions, current possible values are 'none', 'processing',
'available', 'error', 'timeout', 'file-size-too-big', and
'file-size-too-small'. Additional states may be added in the future, so
your application must be tolerant of unknown values.
example: completed
transferCallerId:
type: string
description: >-
The phone number used as the from field of the B-leg call, in E.164
format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or
Unavailable.
example: '+15555555555'
transferTo:
type: string
description: >-
The phone number used as the to field of the B-leg call, in E.164 format
(e.g. +15555555555).
example: +15555555555)
mediaUrl:
nullable: true
type: string
format: uri
description: >-
The URL that can be used to download the recording. Only present if the
recording is finished and may be downloaded.
example: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/conferences/conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9/recordings/r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833/media
callId:
type: string
description: The call id associated with the event.
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
callUrl:
type: string
description: The URL of the call associated with the event.
example: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
parentCallId:
type: string
description: >-
(optional) If the event is related to the B leg of a , the
call id of the original call leg that executed the .
Otherwise, this field will not be present.
example: c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d
tag1:
type: string
description: >-
(optional) The tag specified on call creation. If no tag was specified
or it was previously cleared, this field will not be present.
example: exampleTag
nullable: true
cause:
type: string
description: >-
Reason the call failed - hangup, busy, timeout, cancel, rejected,
callback-error, invalid-bxml, application-error, account-limit,
node-capacity-exceeded, error, or unknown.
example: busy
errorMessage:
type: string
description: >-
Text explaining the reason that caused the call to fail in case of
errors.
example: >-
Call c-2a913f94-6a486f3a-3cae-4034-bcc3-f0c9fa77ca2f is already bridged
with another call
nullable: true
errorId:
type: string
description: Bandwidth's internal id that references the error event.
example: 4642074b-7b58-478b-96e4-3a60955c6765
nullable: true
machineDetectionResult:
type: object
description: >-
(optional) if machine detection was requested in sync mode, the result
will be specified here. Possible values are the same as the async
counterpart: Machine Detection Complete
properties:
value:
type: string
description: >-
Possible values are answering-machine, human, silence, timeout, or
error.
example: answering-machine
duration:
type: string
description: The amount of time it took to determine the result.
example: PT4.9891287S
nullable: true
diversion:
type: object
properties:
reason:
type: string
description: >-
The reason for the diversion. Common values: unknown, user-busy,
no-answer, unavailable, unconditional, time-of-day, do-not-disturb,
deflection, follow-me, out-of-service, away.
example: unavailable
privacy:
type: string
description: off or full
example: 'off'
screen:
type: string
description: >-
No if the number was provided by the user, yes if the number was
provided by the network
example: 'no'
counter:
type: string
description: The number of diversions that have occurred
example: '2'
limit:
type: string
description: The maximum number of diversions allowed for this session
example: '3'
unknown:
type: string
description: >-
The normal list of values is not exhaustive. Your application must
be tolerant of unlisted keys and unlisted values of those keys.
example: unknownValue
origTo:
type: string
description: >-
Always present. Indicates the last telephone number that the call
was diverted from.
example: '+15558884444'
transcription:
type: object
properties:
text:
type: string
description: The transcribed text
example: Nice talking to you, friend!
confidence:
type: number
format: double
description: >-
The confidence on the recognized content, ranging from `0.0` to
`1.0` with `1.0` being the highest confidence.
example: 0.9
stirShaken:
type: object
properties:
verstat:
type: string
description: >-
(optional) The verification status indicating whether the
verification was successful or not. Possible values are
TN-Verification-Passed and TN-Verification-Failed.
example: Tn-Verification-Passed
attestationIndicator:
type: string
description: >-
(optional) The attestation level verified by Bandwidth. Possible
values are A (full), B (partial) or C (gateway).
example: A
originatingId:
type: string
description: (optional) A unique origination identifier.
example: 99759086-1335-11ed-9bcf-5f7d464e91af
codeRequest:
type: object
properties:
to:
type: string
description: The phone number to send the mfa code to.
pattern: ^\+[1-9]\d{1,14}$
example: '+19195551234'
from:
type: string
description: The application phone number, the sender of the mfa code.
pattern: ^\+[1-9]\d{1,14}$
maxLength: 32
example: '+19195554321'
applicationId:
type: string
description: The application unique ID, obtained from Bandwidth.
maxLength: 50
example: 66fd98ae-ac8d-a00f-7fcd-ba3280aeb9b1
scope:
type: string
description: >-
An optional field to denote what scope or action the mfa code is
addressing. If not supplied, defaults to "2FA".
maxLength: 25
example: 2FA
message:
type: string
description: >-
The message format of the mfa code. There are three values that the
system will replace "{CODE}", "{NAME}", "{SCOPE}". The "{SCOPE}"
and "{NAME} value template are optional, while "{CODE}" must be
supplied. As the name would suggest, code will be replace with the
actual mfa code. Name is replaced with the application name,
configured during provisioning of mfa. The scope value is the same
value sent during the call and partitioned by the server.
maxLength: 2048
example: Your temporary {NAME} {SCOPE} code is {CODE}
digits:
type: integer
description: >-
The number of digits for your mfa code. The valid number ranges
from 2 to 8, inclusively.
minimum: 4
maximum: 8
example: 6
required:
- to
- from
- applicationId
- message
- digits
voiceCodeResponse:
type: object
properties:
callId:
type: string
description: Programmable Voice API Call ID.
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
messagingCodeResponse:
type: object
properties:
messageId:
type: string
description: Messaging API Message ID.
example: 9e0df4ca-b18d-40d7-a59f-82fcdf5ae8e6
verifyCodeRequest:
type: object
properties:
to:
type: string
description: The phone number to send the mfa code to.
pattern: ^\+[1-9]\d{1,14}$
example: '+19195551234'
scope:
type: string
description: >-
An optional field to denote what scope or action the mfa code is
addressing. If not supplied, defaults to "2FA".
example: 2FA
expirationTimeInMinutes:
type: number
description: >-
The time period, in minutes, to validate the mfa code. By setting
this to 3 minutes, it will mean any code generated within the last 3
minutes are still valid. The valid range for expiration time is
between 0 and 15 minutes, exclusively and inclusively, respectively.
minimum: 1
maximum: 15
example: 3
code:
type: string
description: The generated mfa code to check if valid.
minLength: 4
maxLength: 8
example: '123456'
required:
- to
- expirationTimeInMinutes
- code
verifyCodeResponse:
type: object
properties:
valid:
type: boolean
description: Whether or not the supplied code is valid.
example: true
mfaRequestError:
type: object
properties:
error:
type: string
description: A message describing the error with your request.
example: 400 Request is malformed or invalid
requestId:
type: string
description: The associated requestId from AWS.
example: 354cc8a3-6701-461e-8fa7-8671703dd898
mfaUnauthorizedRequestError:
type: object
properties:
message:
type: string
description: Unauthorized
example: Unauthorized
mfaForbiddenRequestError:
type: object
properties:
message:
type: string
description: >-
The message containing the reason behind the request being
forbidden.
example: Missing Authentication Token
lookupStatusEnum:
type: string
description: >-
The status of the request (IN_PROGRESS, COMPLETE, PARTIAL_COMPLETE, or
FAILED).
enum:
- IN_PROGRESS
- COMPLETE
- PARTIAL_COMPLETE
- FAILED
example: COMPLETE
lookupRequest:
type: object
description: Create phone number lookup request.
properties:
tns:
type: array
items:
type: string
required:
- tns
createLookupResponse:
type: object
description: >-
The request has been accepted for processing but not yet finished and in
a terminal state (COMPLETE, PARTIAL_COMPLETE, or FAILED).
properties:
requestId:
type: string
description: The phone number lookup request ID from Bandwidth.
status:
$ref: '#/components/schemas/lookupStatusEnum'
lookupStatus:
type: object
description: >-
If requestId exists, the result for that request is returned. See the
Examples for details on the various responses that you can receive.
Generally, if you see a Response Code of 0 in a result for a TN,
information will be available for it. Any other Response Code will
indicate no information was available for the TN.
properties:
requestId:
type: string
description: The requestId.
example: 004223a0-8b17-41b1-bf81-20732adf5590
status:
$ref: '#/components/schemas/lookupStatusEnum'
result:
type: array
description: The carrier information results for the specified telephone number.
items:
$ref: '#/components/schemas/lookupResult'
failedTelephoneNumbers:
type: array
description: The telephone numbers whose lookup failed.
items:
type: string
example:
- '+191955512345'
lookupResult:
type: object
description: Carrier information results for the specified telephone number.
properties:
Response Code:
type: integer
description: Our vendor's response code.
example: 0
Message:
type: string
description: Message associated with the response code.
example: NOERROR
E.164 Format:
type: string
description: The telephone number in E.164 format.
example: '+19195551234'
Formatted:
type: string
description: The formatted version of the telephone number.
example: (919) 555-1234
Country:
type: string
description: The country of the telephone number.
example: US
Line Type:
type: string
description: The line type of the telephone number.
example: Mobile
Line Provider:
type: string
description: The messaging service provider of the telephone number.
example: Verizon Wireless
Mobile Country Code:
type: string
description: The first half of the Home Network Identity (HNI).
example: '310'
Mobile Network Code:
type: string
description: The second half of the HNI.
example: '010'
tnLookupRequestError:
type: object
properties:
message:
type: string
description: A description of what validation error occurred.
example: example error message
responses:
createMessageResponse:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/message'
listMessagesResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/messagesList'
getMediaResponse:
description: OK
content:
application/octet-stream:
schema:
type: string
description: Successful Operation
format: binary
listMediaResponse:
description: OK
headers:
Continuation-Token:
description: Continuation token used to retrieve subsequent media.
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/media'
messagingBadRequestError:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingNotAcceptableError:
description: Not Acceptable
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
createMessageBadRequestError:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/createMessageRequestError'
messagingUnauthorizedError:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingForbiddenError:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingNotFoundError:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingInvalidMediaTypeError:
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingTooManyRequestsError:
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
messagingInternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/messagingRequestError'
createCallResponse:
description: Call Successfully Created
headers:
Location:
description: The URL for further interactions with this call
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/createCallResponse'
examples:
createCall Response:
$ref: '#/components/examples/createCallResponseExample'
getCallStateResponse:
description: Call found
content:
application/json:
schema:
$ref: '#/components/schemas/callState'
listCallsResponse:
description: Calls retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/callState'
getStatisticsResponse:
description: Statistics Found
content:
application/json:
schema:
$ref: '#/components/schemas/accountStatistics'
listCallRecordingsResponse:
description: Recordings retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/callRecordingMetadata'
getCallRecordingResponse:
description: Recording found
content:
application/json:
schema:
$ref: '#/components/schemas/callRecordingMetadata'
downloadRecordingMediaResponse:
description: Media found
content:
audio/vnd.wave:
schema:
type: string
format: binary
audio/mpeg:
schema:
type: string
format: binary
getCallTranscriptionResponse:
description: Transcription found
content:
application/json:
schema:
$ref: '#/components/schemas/transcriptionList'
listConferencesResponse:
description: Conferences retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/conference'
examples:
listConferences Response:
$ref: '#/components/examples/listConferencesResponseExample'
getConferenceResponse:
description: Conferences retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/conference'
getConferenceMemberResponse:
description: Conference member found
content:
application/json:
schema:
$ref: '#/components/schemas/conferenceMember'
listConferenceRecordingsResponse:
description: Conference recordings retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/conferenceRecordingMetadata'
getConferenceRecordingResponse:
description: Conference recording found
content:
application/json:
schema:
$ref: '#/components/schemas/conferenceRecordingMetadata'
voiceBadRequestError:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
badRequestErrorExample:
$ref: '#/components/examples/voiceBadRequestErrorExample'
voiceUnauthorizedError:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
unauthorizedErrorExample:
$ref: '#/components/examples/voiceUnauthorizedErrorExample'
voiceForbiddenError:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
forbiddenErrorExample:
$ref: '#/components/examples/voiceForbiddenErrorExample'
voiceNotFoundError:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
notFoundErrorExample:
$ref: '#/components/examples/voiceNotFoundErrorExample'
voiceNotAllowedError:
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
notAllowedErrorExample:
$ref: '#/components/examples/voiceNotAllowedErrorExample'
voiceConflictError:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
conflictErrorExample:
$ref: '#/components/examples/voiceConflictErrorExample'
voiceUnsupportedMediaTypeError:
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
tooManyRequestsErrorExample:
$ref: '#/components/examples/voiceUnsupportedMediaTypeErrorExample'
voiceTooManyRequestsError:
description: Too Many Requests
headers:
Retry-After:
description: When you should try your request again.
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
tooManyRequestsErrorExample:
$ref: '#/components/examples/voiceTooManyRequestsErrorExample'
voiceInternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/voiceApiError'
examples:
internalServerErrorExample:
$ref: '#/components/examples/voiceInternalServerErrorExample'
voiceCodeResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/voiceCodeResponse'
messagingCodeResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/messagingCodeResponse'
verifyCodeResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/verifyCodeResponse'
mfaBadRequestError:
description: Bad Request
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRequestError'
mfaUnauthorizedError:
description: Unauthorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/mfaUnauthorizedRequestError'
mfaForbiddenError:
description: Forbidden
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/mfaForbiddenRequestError'
mfaTooManyRequestsError:
description: Too Many Requests
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRequestError'
mfaInternalServerError:
description: Internal Server Error
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/mfaRequestError'
createLookupResponse:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/createLookupResponse'
examples:
lookupResponseExample:
$ref: '#/components/examples/lookupInProgressExample'
getLookupResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/lookupStatus'
examples:
lookupInProgressExample:
$ref: '#/components/examples/lookupInProgressExample'
lookupFailedExample:
$ref: '#/components/examples/lookupFailedExample'
lookupSingleNumberCompleteExample:
$ref: '#/components/examples/lookupSingleNumberCompleteExample'
lookupMultipleNumbersCompleteExample:
$ref: '#/components/examples/lookupMultipleNumbersCompleteExample'
lookupMultipleNumbersPartialCompleteExample:
$ref: >-
#/components/examples/lookupMultipleNumbersPartialCompleteExample
lookupSingleNumberCompleteNoInfoExample:
$ref: '#/components/examples/lookupSingleNumberCompleteNoInfoExample'
tnLookupBadRequestError:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
badRequest:
summary: Example Bad Request Error
value:
message: 'Some tns do not match e164 format: 1234'
tnLookupUnauthorizedError:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
unauthorized:
summary: Example Unauthorized Error
value:
message: Unauthorized
tnLookupForbiddenError:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
forbidden:
summary: Example Forbidden Error
value:
message: >-
Authorization header requires 'Credential' parameter.
Authorization header requires 'Signature' parameter.
Authorization header requires 'SignedHeaders' parameter.
Authorization header requires existence of either a
'X-Amz-Date' or a 'Date' header. Authorization=Basic
Y2tvZloPTGhHgywYIzGlcGVlcGvvcGovYTIGIt=='
tnLookupMediaTypeError:
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
mediaType:
summary: Example Unsupported Media Type Error
value:
message: Content-Type must be application/json.
tnLookupTooManyRequestsError:
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
mediaType:
summary: Example Too Many Requests Error
value:
message: Too many requests.
tnLookupInternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/tnLookupRequestError'
examples:
mediaType:
summary: Example Internal Server Error Error
value:
message: Request has not been passed further.
parameters:
accountId:
in: path
name: accountId
required: true
schema:
type: string
description: Your Bandwidth Account ID.
example: '9900000'
mediaId:
in: path
name: mediaId
required: true
description: Media ID to retrieve.
example: 14762070468292kw2fuqty55yp2b2/0/bw.png
schema:
type: string
contentType:
in: header
name: Content-Type
style: simple
explode: false
description: The media type of the entity-body.
example: audio/wav
schema:
type: string
cacheControl:
in: header
name: Cache-Control
style: simple
explode: false
description: >-
General-header field is used to specify directives that MUST be obeyed
by all caching mechanisms along the request/response chain.
example: no-cache
schema:
type: string
continuationToken:
in: header
name: Continuation-Token
description: Continuation token used to retrieve subsequent media.
example: >-
1XEi2tsFtLo1JbtLwETnM1ZJ+PqAa8w6ENvC5QKvwyrCDYII663Gy5M4s40owR1tjkuWUif6qbWvFtQJR5/ipqbUnfAqL254LKNlPy6tATCzioKSuHuOqgzloDkSwRtX0LtcL2otHS69hK343m+SjdL+vlj71tT39
schema:
type: string
messageId:
in: query
name: messageId
required: false
description: >-
The ID of the message to search for. Special characters need to be
encoded using URL encoding. Message IDs could come in different formats,
e.g., 9e0df4ca-b18d-40d7-a59f-82fcdf5ae8e6 and
1589228074636lm4k2je7j7jklbn2 are valid message ID formats. Note that
you must include at least one query parameter.
example: 9e0df4ca-b18d-40d7-a59f-82fcdf5ae8e6
schema:
type: string
sourceTn:
in: query
name: sourceTn
required: false
description: >-
The phone number that sent the message. Accepted values are: a single
full phone number a comma separated list of full phone numbers (maximum
of 10) or a single partial phone number (minimum of 5 characters e.g.
'%2B1919').
example: '%2B15554443333'
schema:
type: string
destinationTn:
in: query
name: destinationTn
required: false
description: >-
The phone number that received the message. Accepted values are: a
single full phone number a comma separated list of full phone numbers
(maximum of 10) or a single partial phone number (minimum of 5
characters e.g. '%2B1919').
example: '%2B15554443333'
schema:
type: string
messageStatus:
in: query
name: messageStatus
required: false
description: >-
The status of the message. One of RECEIVED QUEUED SENDING SENT FAILED
DELIVERED ACCEPTED UNDELIVERED.
schema:
$ref: '#/components/schemas/messageStatusEnum'
messageDirection:
in: query
name: messageDirection
required: false
description: The direction of the message. One of INBOUND OUTBOUND.
schema:
$ref: '#/components/schemas/listMessageDirectionEnum'
carrierName:
in: query
name: carrierName
required: false
description: >-
The name of the carrier used for this message. Possible values include
but are not limited to Verizon and TMobile. Special characters need to
be encoded using URL encoding (i.e. AT&T should be passed as AT%26T).
example: Verizon
schema:
type: string
messageType:
in: query
name: messageType
required: false
description: The type of message. Either sms or mms.
schema:
$ref: '#/components/schemas/messageTypeEnum'
errorCode:
in: query
name: errorCode
required: false
description: The error code of the message.
example: 9902
schema:
type: integer
fromDateTime:
in: query
name: fromDateTime
required: false
description: >-
The start of the date range to search in ISO 8601 format. Uses the
message receive time. The date range to search in is currently 14 days.
example: 2022-09-14T18:20:16.000Z
schema:
type: string
toDateTime:
in: query
name: toDateTime
required: false
description: >-
The end of the date range to search in ISO 8601 format. Uses the message
receive time. The date range to search in is currently 14 days.
example: 2022-09-14T18:20:16.000Z
schema:
type: string
campaignId:
in: query
name: campaignId
required: false
description: The campaign ID of the message.
example: CJEUMDK
schema:
type: string
sort:
in: query
name: sort
required: false
description: >-
The field and direction to sort by combined with a colon. Direction is
either asc or desc.
example: sourceTn:desc
schema:
type: string
pageToken:
in: query
name: pageToken
required: false
description: A base64 encoded value used for pagination of results.
example: gdEewhcJLQRB5
schema:
type: string
limit:
in: query
name: limit
required: false
description: >-
The maximum records requested in search result. Default 100. The sum of
limit and after cannot be more than 10000.
schema:
type: integer
example: 50
limitTotalCount:
in: query
name: limitTotalCount
required: false
description: >-
When set to true, the response's totalCount field will have a maximum
value of 10,000. When set to false, or excluded, this will give an
accurate totalCount of all messages that match the provided filters. If
you are experiencing latency, try using this parameter to limit your
results.
example: true
schema:
type: boolean
callId:
name: callId
in: path
required: true
schema:
type: string
description: Programmable Voice API Call ID.
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
recordingId:
name: recordingId
in: path
required: true
schema:
type: string
description: Programmable Voice API Recording ID.
example: r-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
conferenceId:
name: conferenceId
in: path
required: true
schema:
type: string
description: Programmable Voice API Conference ID.
example: conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9
memberId:
name: memberId
in: path
required: true
schema:
type: string
description: Programmable Voice API Conference Member ID.
example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
to:
name: to
in: query
required: false
schema:
type: string
description: Filter results by the `to` field.
example: '%2b19195551234'
from:
name: from
in: query
required: false
schema:
type: string
description: Filter results by the `from` field.
example: '%2b19195554321'
name:
name: name
in: query
required: false
schema:
type: string
description: Filter results by the `name` field.
example: my-custom-name
minCreatedTime:
name: minCreatedTime
in: query
required: false
schema:
type: string
description: >-
Filter results to conferences which have a `createdTime` after or at
`minCreatedTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
maxCreatedTime:
name: maxCreatedTime
in: query
required: false
schema:
type: string
description: >-
Filter results to conferences which have a `createdTime` before or at
`maxCreatedTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
minStartTime:
name: minStartTime
in: query
required: false
schema:
type: string
description: >-
Filter results to recordings which have a `startTime` after or including
`minStartTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
maxStartTime:
name: maxStartTime
in: query
required: false
schema:
type: string
description: >-
Filter results to recordings which have a `startTime` before
`maxStartTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
pageSize:
name: pageSize
in: query
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 1000
default: 1000
description: Specifies the max number of conferences that will be returned.
example: 500
minStartTimeCalls:
name: minStartTime
in: query
required: false
schema:
type: string
description: >-
Filter results to calls which have a `startTime` after or including
`minStartTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
maxStartTimeCalls:
name: maxStartTime
in: query
required: false
schema:
type: string
description: >-
Filter results to calls which have a `startTime` before or including
`maxStartTime` (in ISO8601 format).
example: '2022-06-21T19:13:21Z'
pageSizeCalls:
name: pageSize
in: query
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 10000
default: 1000
description: Specifies the max number of calls that will be returned.
example: 500
pageToken1:
name: pageToken
in: query
required: false
schema:
type: string
description: >-
Not intended for explicit use. To use pagination, follow the links in
the `Link` header of the response, as indicated in the endpoint
description.
disconnectCause:
name: disconnectCause
in: query
required: false
schema:
type: string
description: Filter results to calls with specified call Disconnect Cause.
example: hangup
requestId:
name: requestId
in: path
required: true
schema:
type: string
description: The phone number lookup request ID from Bandwidth.
example: 004223a0-8b17-41b1-bf81-20732adf5590
requestBodies:
createMessageRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/messageRequest'
required: true
uploadMediaRequest:
content:
application/json:
schema:
type: string
format: binary
application/ogg:
schema:
type: string
format: binary
application/pdf:
schema:
type: string
format: binary
application/rtf:
schema:
type: string
format: binary
application/zip:
schema:
type: string
format: binary
application/x-tar:
schema:
type: string
format: binary
application/xml:
schema:
type: string
format: binary
application/gzip:
schema:
type: string
format: binary
application/x-bzip2:
schema:
type: string
format: binary
application/x-gzip:
schema:
type: string
format: binary
application/smil:
schema:
type: string
format: binary
application/javascript:
schema:
type: string
format: binary
audio/mp4:
schema:
type: string
format: binary
audio/mpeg:
schema:
type: string
format: binary
audio/ogg:
schema:
type: string
format: binary
audio/flac:
schema:
type: string
format: binary
audio/webm:
schema:
type: string
format: binary
audio/wav:
schema:
type: string
format: binary
audio/amr:
schema:
type: string
format: binary
audio/3gpp:
schema:
type: string
format: binary
image/bmp:
schema:
type: string
format: binary
image/gif:
schema:
type: string
format: binary
image/jpeg:
schema:
type: string
format: binary
image/pjpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
image/svg+xml:
schema:
type: string
format: binary
image/tiff:
schema:
type: string
format: binary
image/webp:
schema:
type: string
format: binary
image/x-icon:
schema:
type: string
format: binary
text/css:
schema:
type: string
format: binary
text/csv:
schema:
type: string
format: binary
text/calendar:
schema:
type: string
format: binary
text/plain:
schema:
type: string
format: binary
text/javascript:
schema:
type: string
format: binary
text/vcard:
schema:
type: string
format: binary
text/vnd.wap.wml:
schema:
type: string
format: binary
text/xml:
schema:
type: string
format: binary
video/avi:
schema:
type: string
format: binary
video/mp4:
schema:
type: string
format: binary
video/mpeg:
schema:
type: string
format: binary
video/ogg:
schema:
type: string
format: binary
video/quicktime:
schema:
type: string
format: binary
video/webm:
schema:
type: string
format: binary
video/x-ms-wmv:
schema:
type: string
format: binary
required: true
createCallRequest:
description: JSON object containing information to create an outbound call
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/createCall'
updateCallRequest:
description: >-
JSON object containing information to redirect an existing call to a new
BXML document
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateCall'
updateCallBxmlRequest:
required: true
content:
application/xml:
schema:
type: string
description: A valid BXML document to replace the call's current BXML.
examples:
speakSentence:
summary: Speak Sentence
value: |-
This is a test sentence.
redirectUrl:
summary: Redirect
value: |-
updateCallRecordingRequest:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateCallRecording'
transcribeRecordingRequest:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/transcribeRecording'
updateConferenceRequest:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateConference'
updateConferenceBxmlRequest:
required: true
content:
application/xml:
schema:
type: string
description: A valid BXML document to replace the call's current BXML.
examples:
stopRecording:
summary: Stop Recording
value: |-
updateConferenceMemberRequest:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateConferenceMember'
codeRequest:
description: MFA code request body.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codeRequest'
codeVerify:
description: MFA code verify request body.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/verifyCodeRequest'
createLookupRequest:
description: Phone number lookup request.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/lookupRequest'
examples:
singleNumberRequestExample:
$ref: '#/components/examples/singleNumberRequestExample'
multipleNumberRequestExample:
$ref: '#/components/examples/multipleNumberRequestExample'
securitySchemes:
Basic:
type: http
scheme: basic
description: |-
Basic authentication is a simple authentication scheme built into the
HTTP protocol. To use it, send your HTTP requests with an Authorization
header that contains the word Basic followed by a space and a
base64-encoded string `username:password`Example: `Authorization: Basic
ZGVtbZpwQDU1dzByZA==`
callbacks:
inboundCallback:
'{inboundCallbackUrl}':
post:
requestBody:
required: true
description: Inbound Message Callback Payload
content:
application/json:
schema:
$ref: '#/components/schemas/inboundMessageCallback'
responses:
'200':
description: OK
statusCallback:
'{statusCallbackUrl}':
post:
requestBody:
required: true
description: Status Callback Payload
content:
application/json:
schema:
type: object
oneOf:
- $ref: '#/components/schemas/messageSendingCallback'
- $ref: '#/components/schemas/messageDeliveredCallback'
- $ref: '#/components/schemas/messageFailedCallback'
responses:
'200':
description: OK
examples:
createCallResponseExample:
summary: Example of a createCall Response
value:
applicationId: 04e88489-df02-4e34-a0ee-27a91849555f
accountId: '9900000'
callId: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
to: '+19195551234'
from: '+19195554312'
enqueuedTime: '2022-06-16T13:15:07.160Z'
callUrl: >-
https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85
callTimeout: 30
callbackTimeout: 15
tag: My custom tag value
answerMethod: POST
answerUrl: https://myServer.example/bandwidth/webhooks/answer
answerFallbackMethod: POST
disconnectMethod: POST
disconnectUrl: https://myServer.example/bandwidth/webhooks/disconnect
username: mySecretUsername
password: '*****'
fallbackUsername: mySecretUsername
fallbackPassword: '*****'
priority: 5
listConferencesResponseExample:
summary: Example of a listConferences Response
value:
- id: conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9
name: my-conference-name
createdTime: '2022-06-17T22:19:40.375Z'
completedTime: '2022-06-17T22:20:00.000Z'
conferenceEventUrl: https://myServer.example/bandwidth/webhooks/conferenceEvent
conferenceEventMethod: POST
tag: my custom tag
voiceBadRequestErrorExample:
summary: Example of a Bad Request (400) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceUnauthorizedErrorExample:
summary: Example of an Unauthorized (401) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceForbiddenErrorExample:
summary: Example of a Forbidden (403) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceNotFoundErrorExample:
summary: Example of a Not Found (404) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceNotAllowedErrorExample:
summary: Example of a Not Allowed (405) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceConflictErrorExample:
summary: Example of a Conflict (409) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceUnsupportedMediaTypeErrorExample:
summary: Example of an Unsupported Media Type (415) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceTooManyRequestsErrorExample:
summary: Example of a Too Many Requests (429) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
voiceInternalServerErrorExample:
summary: Example of an Internal Server (500) Error
value:
type: validation
description: 'Invalid answerUrl: only http and https are allowed.'
singleNumberRequestExample:
summary: Example Number Lookup Request for One Number
value:
tns:
- '+19195551234'
multipleNumberRequestExample:
summary: Example Number Lookup Request for Multiple Numbers
value:
tns:
- '+19195551234'
- '+19195554321'
lookupInProgressExample:
summary: Example Lookup In Progress Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: IN_PROGRESS
lookupFailedExample:
summary: Example Lookup Failed Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: FAILED
failedTelephoneNumbers:
- '+191955512345'
lookupSingleNumberCompleteExample:
summary: Example Single Number Lookup Complete Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: COMPLETE
result:
- Response Code: 0
Message: NOERROR
E.164 Format: '+19195551234'
Formatted: (919) 555-1234
Country: US
Line Type: Mobile
Line Provider: Verizon Wireless
Mobile Country Code: '310'
Mobile Network Code: '010'
lookupMultipleNumbersCompleteExample:
summary: Example Multiple Numbers Lookup Complete Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: COMPLETE
result:
- Response Code: 0
Message: NOERROR
E.164 Format: '+19195551234'
Formatted: (919) 555-1234
Country: US
Line Type: Mobile
Line Provider: Verizon Wireless
Mobile Country Code: '310'
Mobile Network Code: '010'
- Response Code: 0
Message: NOERROR
E.164 Format: '+19195554321'
Formatted: (919) 555-4321
Country: US
Line Type: Mobile
Line Provider: T-Mobile USA
Mobile Country Code: '310'
Mobile Network Code: '160'
lookupMultipleNumbersPartialCompleteExample:
summary: Example Multiple Numbers Lookup Partial Complete Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: PARTIAL_COMPLETE
result:
- Response Code: 0
Message: NOERROR
E.164 Format: '+19195551234'
Formatted: (919) 555-1234
Country: US
Line Type: Mobile
Line Provider: Verizon Wireless
Mobile Country Code: '310'
Mobile Network Code: '010'
failedTelephoneNumbers:
- '+191955512345'
lookupSingleNumberCompleteNoInfoExample:
summary: Example Single Number Lookup Complete with No Information Response
value:
requestId: 004223a0-8b17-41b1-bf81-20732adf5590
status: COMPLETE
result:
- Response Code: 3
Message: NXDOMAIN
E.164 Format: '+19195550000'
Formatted: (919) 555-0000
Country: US