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: [] - OAuth2: [] tags: - name: Messages - name: Media - name: Multi-Channel - name: Calls - name: Conferences - name: Recordings - name: Statistics - name: Transcriptions - name: MFA - name: Phone Number Lookup - name: Toll-Free Verification - name: Endpoints 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 at [Bandwidth Support](https://www.bandwidth.com/support/en/articles/12823220-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. **Rate Limit:** This endpoint is rate limited to 3500 requests per 5 minutes per Source IP address. Exceeding the limit returns HTTP 429 with a `Retry-After` header. 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/fromBwLatency' - $ref: '#/components/parameters/bwQueued' - $ref: '#/components/parameters/product' - $ref: '#/components/parameters/location' - $ref: '#/components/parameters/carrierQueued' - $ref: '#/components/parameters/fromCarrierLatency' - $ref: '#/components/parameters/callingNumberCountryA3' - $ref: '#/components/parameters/calledNumberCountryA3' - $ref: '#/components/parameters/fromSegmentCount' - $ref: '#/components/parameters/toSegmentCount' - $ref: '#/components/parameters/fromMessageSize' - $ref: '#/components/parameters/toMessageSize' - $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' '405': $ref: '#/components/responses/messagingMethodNotAllowedError' '415': $ref: '#/components/responses/messagingInvalidMediaTypeError' '429': $ref: '#/components/responses/listMessagesTooManyRequestsError' '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' '405': $ref: '#/components/responses/messagingMethodNotAllowedError' '406': $ref: '#/components/responses/messagingNotAcceptableError' '415': $ref: '#/components/responses/messagingInvalidMediaTypeError' '429': $ref: '#/components/responses/messagingTooManyRequestsError' '500': $ref: '#/components/responses/messagingInternalServerError' callbacks: statusCallback: $ref: '#/components/callbacks/statusCallback' servers: *ref_0 /users/{accountId}/messages/multiChannel: post: summary: Create Multi-Channel Message description: Endpoint for sending Multi-Channel messages. operationId: createMultiChannelMessage parameters: - $ref: '#/components/parameters/accountId' tags: - Multi-Channel requestBody: $ref: '#/components/requestBodies/createMultiChannelMessageRequest' responses: '202': $ref: '#/components/responses/createMultiChannelMessageResponse' '400': $ref: '#/components/responses/multiChannelBadRequestError' '401': $ref: '#/components/responses/multiChannelUnauthorizedError' '403': $ref: '#/components/responses/multiChannelForbiddenError' '404': $ref: '#/components/responses/multiChannelNotFoundError' '405': $ref: '#/components/responses/multiChannelMethodNotAllowedError' '406': $ref: '#/components/responses/multiChannelNotAcceptableError' '415': $ref: '#/components/responses/multiChannelInvalidMediaTypeError' '429': $ref: '#/components/responses/multiChannelTooManyRequestsError' '500': $ref: '#/components/responses/multiChannelInternalServerError' callbacks: statusCallback: $ref: '#/components/callbacks/statusCallback' x-badges: - name: Beta color: '#076EA8' 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': $ref: '#/components/responses/updateCallResponse' '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': $ref: '#/components/responses/updateRecordingResponse' '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 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: getRecordingTranscription parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/callId' - $ref: '#/components/parameters/recordingId' responses: '200': $ref: '#/components/responses/getRecordingTranscriptionResponse' '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: deleteRecordingTranscription 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}/calls/{callId}/transcriptions: get: tags: - Transcriptions summary: List Real-time Transcriptions description: >- List the transcriptions created on this call via [startTranscription](/docs/voice/bxml/startTranscription). operationId: listRealTimeTranscriptions parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/callId' responses: '200': $ref: '#/components/responses/listTranscriptionsResponse' '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}/transcriptions/{transcriptionId}: get: tags: - Transcriptions summary: Get Real-time Transcription description: >- Retrieve the specified transcription that was created on this call via [startTranscription](/docs/voice/bxml/startTranscription). operationId: getRealTimeTranscription parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/callId' - $ref: '#/components/parameters/transcriptionId' 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' delete: tags: - Transcriptions summary: Delete Real-time Transcription description: >- Delete the specified transcription that was created on this call via [startTranscription](/docs/voice/bxml/startTranscription). Note: After the deletion is requested and a `200` 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: deleteRealTimeTranscription parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/callId' - $ref: '#/components/parameters/transcriptionId' responses: '200': $ref: '#/components/responses/deleteCallTranscriptionResponse' '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}/phoneNumberLookup: post: summary: Create Synchronous Number Lookup description: >- Creates a synchronous phone number lookup request. Maximum of 100 telephone numbers per request. operationId: createSyncLookup tags: - Phone Number Lookup parameters: - $ref: '#/components/parameters/accountId1' requestBody: $ref: '#/components/requestBodies/createSyncLookupRequest' responses: '200': $ref: '#/components/responses/createSyncLookupResponse' default: $ref: '#/components/responses/tnLookupDefaultResponse' servers: &ref_3 - url: https://api.bandwidth.com/v2 description: Production /accounts/{accountId}/phoneNumberLookup/bulk: post: summary: Create Asynchronous Bulk Number Lookup description: >- Creates an asynchronous bulk phone number lookup request. Maximum of 15,000 telephone numbers per request. Use the [Get Asynchronous Bulk Number Lookup](#tag/Phone-Number-Lookup/operation/getAsyncBulkLookup) endpoint to check the status of the request and view the results. operationId: createAsyncBulkLookup tags: - Phone Number Lookup parameters: - $ref: '#/components/parameters/accountId1' requestBody: $ref: '#/components/requestBodies/createAsyncBulkLookupRequest' responses: '202': $ref: '#/components/responses/createAsyncBulkLookupResponse' default: $ref: '#/components/responses/tnLookupDefaultResponse' servers: *ref_3 /accounts/{accountId}/phoneNumberLookup/bulk/{requestId}: get: summary: Get Asynchronous Bulk Number Lookup description: >- Get an existing [Asynchronous Bulk Number Lookup](#tag/Phone-Number-Lookup/operation/createAsyncBulkLookup). Use this endpoint to check the status of the request and view the results. operationId: getAsyncBulkLookup tags: - Phone Number Lookup parameters: - $ref: '#/components/parameters/accountId1' - $ref: '#/components/parameters/requestId' responses: '200': $ref: '#/components/responses/getAsyncBulkLookupResponse' default: $ref: '#/components/responses/tnLookupDefaultResponse' servers: *ref_3 /accounts/{accountId}/tollFreeVerification: post: tags: - Toll-Free Verification summary: Request Toll-Free Verification description: Submit a request for verification of a toll-free phone number. operationId: requestTollFreeVerification parameters: - $ref: '#/components/parameters/accountId' requestBody: $ref: '#/components/requestBodies/requestTollFreeVerificationRequest' responses: '202': description: Accepted '400': $ref: '#/components/responses/tfvPostBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' callbacks: tfVerificationStatus: $ref: '#/components/callbacks/tfVerificationStatus' servers: &ref_4 - url: https://api.bandwidth.com/api/v2 description: Production /accounts/{accountId}/phoneNumbers/{phoneNumber}/tollFreeVerification: get: tags: - Toll-Free Verification summary: Get Toll-Free Verification Status description: >- Gets the verification status for a phone number that is provisioned to your account. Submission information will be appended to the response if it is available. operationId: getTollFreeVerificationStatus parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/tfPhoneNumberPathParam' responses: '200': $ref: '#/components/responses/getTollFreeVerificationStatusResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' put: tags: - Toll-Free Verification summary: Update Toll-Free Verification Request description: >- Updates a toll-free verification request. Submissions are only eligible for resubmission for 7 days within being processed and if resubmission is allowed (resubmitAllowed field is true). operationId: updateTollFreeVerificationRequest parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/tfPhoneNumberPathParam' requestBody: $ref: '#/components/requestBodies/updateTollFreeVerificationRequestRequest' responses: '202': $ref: '#/components/responses/verifyPutResponse' '400': $ref: '#/components/responses/tfvPostBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' callbacks: tfVerificationStatus: $ref: '#/components/callbacks/tfVerificationStatus' delete: description: Delete a toll-free verification submission for a toll-free number. operationId: deleteVerificationRequest parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/tfPhoneNumberPathParam' responses: '204': $ref: '#/components/responses/noContentResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' summary: Delete a Toll-Free Verification Submission tags: - Toll-Free Verification servers: *ref_4 /accounts/{accountId}/tollFreeVerification/webhooks/subscriptions: get: tags: - Toll-Free Verification summary: List Webhook Subscriptions description: >- Lists all webhook subscriptions that are registered to receive status updates for the toll-free verification requests submitted under this account (password will not be returned through this API If `basicAuthentication` is defined, the `password` property of that object will be null). operationId: listWebhookSubscriptions parameters: - $ref: '#/components/parameters/accountId' responses: '200': $ref: '#/components/responses/listWebhookSubscriptionsResponse' '400': $ref: '#/components/responses/tfvPostBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' post: tags: - Toll-Free Verification summary: Create Webhook Subscription description: >- Create a new webhook subscription (this webhook will be called for every update on every submission). In addition to a `callbackUrl`, this subscription can provide optional HTTP basic authentication credentials (a username and a password). The returned subscription object will contain an ID that can be used to modify or delete the subscription at a later time. operationId: createWebhookSubscription parameters: - $ref: '#/components/parameters/accountId' requestBody: $ref: '#/components/requestBodies/webhookSubscriptionRequest' responses: '201': $ref: '#/components/responses/createWebhookSubscriptionResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' servers: *ref_4 /accounts/{accountId}/tollFreeVerification/webhooks/subscriptions/{id}: delete: tags: - Toll-Free Verification summary: Delete Webhook Subscription description: Delete a webhook subscription by ID. operationId: deleteWebhookSubscription parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/webhookSubscriptionIdPathParam' responses: '204': $ref: '#/components/responses/noContentResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' put: tags: - Toll-Free Verification summary: Update Webhook Subscription description: >- Update an existing webhook subscription (`callbackUrl` and `basicAuthentication` can be updated). operationId: updateWebhookSubscription parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/webhookSubscriptionIdPathParam' requestBody: $ref: '#/components/requestBodies/webhookSubscriptionRequest' responses: '200': $ref: '#/components/responses/updateWebhookSubscriptionResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' servers: *ref_4 /tollFreeVerification/useCases: get: tags: - Toll-Free Verification summary: List Toll-Free Use Cases description: Lists valid toll-free use cases. operationId: listTollFreeUseCases responses: '200': $ref: '#/components/responses/listTollFreeUseCasesResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' servers: *ref_4 /accounts/{accountId}/endpoints: get: tags: - Endpoints summary: List Endpoints description: Returns a list of endpoints associated with the specified account. operationId: listEndpoints parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/endpointType' - $ref: '#/components/parameters/endpointStatus' - $ref: '#/components/parameters/afterCursor' - $ref: '#/components/parameters/limit1' responses: '200': $ref: '#/components/responses/listEndpointsResponse' '400': $ref: '#/components/responses/badRequestErrorResponse' '401': $ref: '#/components/responses/unauthorizedErrorResponse' '403': $ref: '#/components/responses/forbiddenErrorResponse' '404': $ref: '#/components/responses/notFoundErrorResponse' '405': $ref: '#/components/responses/methodNotAllowedErrorResponse' '415': $ref: '#/components/responses/unsupportedMediaTypeErrorResponse' '429': $ref: '#/components/responses/tooManyRequestsErrorResponse' '500': $ref: '#/components/responses/serviceUnavailableErrorResponse' post: tags: - Endpoints summary: Create Endpoint description: Creates a new Endpoint for the specified account. operationId: createEndpoint parameters: - $ref: '#/components/parameters/accountId' requestBody: $ref: '#/components/requestBodies/createEndpointRequest' responses: '201': $ref: '#/components/responses/createEndpointResponse' '400': $ref: '#/components/responses/badRequestErrorResponse' '401': $ref: '#/components/responses/unauthorizedErrorResponse' '403': $ref: '#/components/responses/forbiddenErrorResponse' '404': $ref: '#/components/responses/notFoundErrorResponse' '405': $ref: '#/components/responses/methodNotAllowedErrorResponse' '415': $ref: '#/components/responses/unsupportedMediaTypeErrorResponse' '429': $ref: '#/components/responses/tooManyRequestsErrorResponse' '500': $ref: '#/components/responses/serviceUnavailableErrorResponse' callbacks: endpointEventCallback: $ref: '#/components/callbacks/endpointEvent' servers: &ref_5 - url: https://api.bandwidth.com/v2 description: Production /accounts/{accountId}/endpoints/{endpointId}: get: tags: - Endpoints summary: Get Endpoint description: Returns information about the specified endpoint. operationId: getEndpoint parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/endpointId' responses: '200': $ref: '#/components/responses/getEndpointResponse' '400': $ref: '#/components/responses/badRequestErrorResponse' '401': $ref: '#/components/responses/unauthorizedErrorResponse' '403': $ref: '#/components/responses/forbiddenErrorResponse' '404': $ref: '#/components/responses/notFoundErrorResponse' '405': $ref: '#/components/responses/methodNotAllowedErrorResponse' '415': $ref: '#/components/responses/unsupportedMediaTypeErrorResponse' '429': $ref: '#/components/responses/tooManyRequestsErrorResponse' '500': $ref: '#/components/responses/serviceUnavailableErrorResponse' delete: tags: - Endpoints summary: Delete Endpoint description: >- Deletes the specified endpoint. If the endpoint is actively streaming media, the media stream will be terminated. operationId: deleteEndpoint parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/endpointId' responses: '204': description: No Content '400': $ref: '#/components/responses/badRequestErrorResponse' '401': $ref: '#/components/responses/unauthorizedErrorResponse' '403': $ref: '#/components/responses/forbiddenErrorResponse' '404': $ref: '#/components/responses/notFoundErrorResponse' '405': $ref: '#/components/responses/methodNotAllowedErrorResponse' '415': $ref: '#/components/responses/unsupportedMediaTypeErrorResponse' '429': $ref: '#/components/responses/tooManyRequestsErrorResponse' '500': $ref: '#/components/responses/serviceUnavailableErrorResponse' servers: *ref_5 /accounts/{accountId}/endpoints/{endpointId}/bxml: put: tags: - Endpoints summary: Update Endpoint BXML description: Updates the BXML for the specified endpoint. operationId: updateEndpointBxml parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/endpointId' requestBody: $ref: '#/components/requestBodies/updateEndpointBxmlRequest' responses: '204': description: No Content '400': $ref: '#/components/responses/badRequestErrorResponse' '401': $ref: '#/components/responses/unauthorizedErrorResponse' '403': $ref: '#/components/responses/forbiddenErrorResponse' '404': $ref: '#/components/responses/notFoundErrorResponse' '405': $ref: '#/components/responses/methodNotAllowedErrorResponse' '415': $ref: '#/components/responses/unsupportedMediaTypeErrorResponse' '429': $ref: '#/components/responses/tooManyRequestsErrorResponse' '500': $ref: '#/components/responses/serviceUnavailableErrorResponse' servers: *ref_5 components: schemas: applicationId: type: string description: >- The ID of the Application your from number or senderId is associated with in the Bandwidth App. example: 93de2206-9669-4e07-948d-329f4b722ee2 priorityEnum: type: string description: >- Specifies the message's sending priority with respect to other messages in your account. For best results and optimal throughput, reserve the 'high' priority setting for critical messages only. 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 example: INBOUND messageDirectionEnum: type: string description: The direction of the message. One of in out. enum: - in - out example: in messageTypeEnum: type: string description: The type of message. Either SMS or MMS. enum: - sms - mms - rcs example: sms productTypeEnum: type: string description: The type of product associated with the message. enum: - LOCAL_A2P - P2P - SHORT_CODE_REACH - TOLL_FREE - HOSTED_SHORT_CODE - ALPHA_NUMERIC - RBM_MEDIA - RBM_RICH - RBM_CONVERSATIONAL example: P2P 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: $ref: '#/components/schemas/segmentCount' 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 bwLatency: type: integer description: >- The Bandwidth latency of the message in seconds. Only available for accounts with the Advanced Quality Metrics feature enabled. nullable: true example: 20 carrierLatency: type: integer description: >- The carrier latency of the message in seconds. Only available for OUTBOUND messages from accounts with the Advanced Quality Metrics feature enabled. nullable: true example: 20 callingNumberCountryA3: type: string description: The A3 country code of the calling number. nullable: true example: USA calledNumberCountryA3: type: string description: The A3 country code of the called number. nullable: true example: USA product: type: string description: The messaging product associated with the message. nullable: true example: P2P location: type: string description: The location ID associated with this message. nullable: true example: 123ID 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 id: type: string description: The ID of the message. example: 1589228074636lm4k2je7j7jklbn2 media: title: Media type: object properties: content: type: string contentLength: type: integer example: 1024 mediaName: type: string example: image.png segmentCount: type: integer description: >- The number of segments the user's message is broken into before sending over carrier networks. example: 1 tag: title: Tag type: string description: >- A custom string that will be included in callback events of the message. Max 1024 characters. example: custom string 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. example: '2021-02-01T11:29:18-05:00' carrierName: type: string description: >- The name of the Authorized Message Provider (AMP) that handled this message. In the US, this is the carrier that the message was sent to. This field is present only when this account feature has been enabled. example: AT&T 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: $ref: '#/components/schemas/applicationId' time: type: string format: date-time description: The datetime stamp of the message in ISO 8601 example: 2024-12-02T20:15:57.278Z segmentCount: $ref: '#/components/schemas/segmentCount' 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: $ref: '#/components/schemas/tag' priority: $ref: '#/components/schemas/priorityEnum' expiration: $ref: '#/components/schemas/expiration' messageRequest: title: MessageRequest type: object required: - applicationId - to - from properties: applicationId: $ref: '#/components/schemas/applicationId' 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: $ref: '#/components/schemas/messageText' media: $ref: '#/components/schemas/messageMedia' tag: $ref: '#/components/schemas/tag' priority: $ref: '#/components/schemas/priorityEnum' expiration: $ref: '#/components/schemas/expiration' messageText: type: string description: The contents of the text message. Must be 2048 characters or less. maxLength: 2048 example: Hello world messageMedia: 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 createMultiChannelMessageResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/link' example: [] data: $ref: '#/components/schemas/multiChannelMessageResponseData' errors: type: array items: $ref: '#/components/schemas/errorObject' example: [] multiChannelError: type: object properties: links: type: array items: $ref: '#/components/schemas/link' example: [] data: type: object nullable: true example: null errors: type: array items: $ref: '#/components/schemas/errorObject' link: type: object properties: rel: type: string href: type: string errorObject: type: object properties: type: description: A concise summary of the error used for categorization. type: string description: description: A detailed explanation of the error. type: string source: $ref: '#/components/schemas/errorSource' required: - type - description - source errorSource: title: Error Source type: object description: Specifies relevant sources of the error, if any. properties: parameter: type: string description: The relevant URI query parameter causing the error field: type: string description: The request body field that led to the error header: type: string description: The header field that contributed to the error reference: type: string description: A resource ID or path linked to the error multiChannelMessageChannelEnum: description: The channel of the multi-channel message. type: string enum: - RBM - SMS - MMS example: RBM multiChannelSenderId: type: string description: The sender ID of the message. This could be an alphanumeric sender ID. example: BandwidthRBM multiChannelDestination: type: string description: The phone number the message should be sent to in E164 format. example: '+15552223333' multiChannelDestinations: uniqueItems: true type: array description: The destination phone number(s) of the message, in E164 format. example: - '+15554443333' items: type: string rbmMessageContentText: title: RBM Text type: object properties: text: type: string description: >- The text associated with the message. Must be 3270 characters or less maxLength: 3270 example: Hello world suggestions: $ref: '#/components/schemas/multiChannelFullActions' required: - text rbmMediaHeightEnum: type: string description: The height of the media. enum: - SHORT - MEDIUM - TALL example: SHORT rbmMessageContentFile: title: RBM Rich Media File type: object properties: fileUrl: type: string format: uri description: The URL of the media file. 100MB is the maximum file size. example: https://dev.bandwidth.com/images/bandwidth-logo.png maxLength: 1000 thumbnailUrl: type: string format: uri description: The URL of the thumbnail image. Applies only to video file media. example: https://dev.bandwidth.com/images/bandwidth-logo.png maxLength: 1000 required: - fileUrl mmsMessageContentFile: title: MMS Media File type: object properties: fileUrl: type: string format: uri description: >- The URL of a media attachment. For MMS, the API limits file size to 3.5MB. Specific carriers and channels may have a smaller limit that could cause a large file to fail, see more at [Bandwidth Support](https://www.bandwidth.com/support/en/articles/12823216-what-are-the-mms-file-size-limits) for more details. example: https://dev.bandwidth.com/images/bandwidth-logo.png maxLength: 1000 required: - fileUrl rbmMessageMedia: title: RBM Media type: object properties: media: type: array items: $ref: '#/components/schemas/rbmMessageContentFile' suggestions: $ref: '#/components/schemas/multiChannelFullActions' required: - media rbmCardContent: type: object properties: title: type: string description: The title of the card. Must be 200 characters or less. maxLength: 200 example: Bandwidth description: type: string description: The description of the card. Must be 2000 characters or less. maxLength: 2000 example: Bandwidth is a communications platform as a service (CPaaS) company. media: allOf: - $ref: '#/components/schemas/rbmMessageContentFile' - type: object properties: height: $ref: '#/components/schemas/rbmMediaHeightEnum' required: - height suggestions: description: >- An array of suggested actions for the recipient that will be displayed on the rich card. type: array items: $ref: '#/components/schemas/multiChannelAction' maxItems: 4 rbmStandaloneCard: title: Standalone Card type: object properties: orientation: $ref: '#/components/schemas/standaloneCardOrientationEnum' thumbnailImageAlignment: $ref: '#/components/schemas/thumbnailAlignmentEnum' cardContent: $ref: '#/components/schemas/rbmCardContent' suggestions: $ref: '#/components/schemas/multiChannelFullActions' required: - orientation - thumbnailImageAlignment - cardContent standaloneCardOrientationEnum: type: string enum: - HORIZONTAL - VERTICAL example: VERTICAL thumbnailAlignmentEnum: type: string description: >- The alignment of the thumbnail image in the card. Only applicable if the card using horizontal orientation. enum: - LEFT - RIGHT example: LEFT rbmMessageCarouselCard: title: Carousel type: object properties: cardWidth: $ref: '#/components/schemas/cardWidthEnum' cardContents: type: array items: $ref: '#/components/schemas/rbmCardContent' maxItems: 10 suggestions: $ref: '#/components/schemas/multiChannelFullActions' required: - cardContents - cardWidth cardWidthEnum: type: string enum: - SMALL - MEDIUM example: SMALL smsMessageContent: title: SMS Text type: object properties: text: $ref: '#/components/schemas/messageText' required: - text mmsMessageContent: title: MMS Message type: object properties: text: $ref: '#/components/schemas/messageText' media: type: array items: $ref: '#/components/schemas/mmsMessageContentFile' rbmMessageContentRichCard: title: RBM Rich Card oneOf: - $ref: '#/components/schemas/rbmStandaloneCard' - $ref: '#/components/schemas/rbmMessageCarouselCard' rbmActionTypeEnum: type: string enum: - REPLY - DIAL_PHONE - SHOW_LOCATION - CREATE_CALENDAR_EVENT - OPEN_URL - REQUEST_LOCATION example: REPLY rbmOpenUrlEnum: type: string description: >- Specifies how the URL should be opened on a mobile device. - `BROWSER` Opens the URL in the device's default browser. If application is not set or the device doesn't support WebView, this option is used by default. - `WEBVIEW` Opens the URL in an in-app WebView. enum: - BROWSER - WEBVIEW example: WEBVIEW rbmWebViewEnum: type: string description: >- Defines the layout of the WebView on a mobile device. It must be defined when application is set to `WEBVIEW` - `FULL` WebView takes the full screen. - `HALF` WebView takes half of the screen. - `TALL` WebView takes three-quarters of the screen. enum: - FULL - HALF - TALL rbmActionText: title: Text type: string description: Displayed text for user to click maxLength: 25 example: Hello world rbmActionPostbackData: title: Post Back Data type: string format: byte description: Base64 payload the customer receives when the reply is clicked. maxLength: 2048 example: SGVsbG8gd29ybGQ= rbmActionBase: type: object properties: type: $ref: '#/components/schemas/rbmActionTypeEnum' text: $ref: '#/components/schemas/rbmActionText' postbackData: $ref: '#/components/schemas/rbmActionPostbackData' required: - text - postbackData - type rbmActionDial: allOf: - $ref: '#/components/schemas/rbmActionBase' - title: Dial Phone type: object properties: phoneNumber: type: string description: The phone number to dial. Must be E164 format. example: '+15552223333' required: - phoneNumber rbmActionViewLocation: allOf: - $ref: '#/components/schemas/rbmActionBase' - title: Show Location type: object properties: latitude: type: string format: double description: The latitude of the location. example: '37.7749' longitude: type: string format: double description: The longitude of the location. example: '-122.4194' label: type: string description: The label of the location. example: San Francisco maxLength: 100 required: - latitude - longitude multiChannelActionCalendarEvent: allOf: - $ref: '#/components/schemas/rbmActionBase' - title: Calendar Event type: object properties: title: type: string description: The title of the event. example: Meeting with John maxLength: 100 startTime: type: string format: date-time description: The start time of the event. example: 2022-09-14T18:20:16.000Z endTime: type: string format: date-time description: The end time of the event. example: 2022-09-14T18:20:16.000Z description: type: string description: The description of the event. example: Discuss the new project maxLength: 500 required: - title - startTime - endTime rbmActionOpenUrl: allOf: - $ref: '#/components/schemas/rbmActionBase' - title: Open URL type: object properties: url: type: string format: uri description: The URL to open in browser. example: https://dev.bandwidth.com maxLength: 2048 application: $ref: '#/components/schemas/rbmOpenUrlEnum' webviewViewMode: $ref: '#/components/schemas/rbmWebViewEnum' required: - url multiChannelFullActions: type: array description: An array of suggested actions for the recipient. items: $ref: '#/components/schemas/multiChannelAction' maxItems: 11 multiChannelAction: anyOf: - $ref: '#/components/schemas/rbmActionBase' - $ref: '#/components/schemas/rbmActionDial' - $ref: '#/components/schemas/rbmActionViewLocation' - $ref: '#/components/schemas/multiChannelActionCalendarEvent' - $ref: '#/components/schemas/rbmActionOpenUrl' discriminator: propertyName: type mapping: REPLY: '#/components/schemas/rbmActionBase' DIAL_PHONE: '#/components/schemas/rbmActionDial' SHOW_LOCATION: '#/components/schemas/rbmActionViewLocation' CREATE_CALENDAR_EVENT: '#/components/schemas/multiChannelActionCalendarEvent' OPEN_URL: '#/components/schemas/rbmActionOpenUrl' REQUEST_LOCATION: '#/components/schemas/rbmActionBase' multiChannelChannelListObjectBase: type: object properties: from: $ref: '#/components/schemas/multiChannelSenderId' applicationId: $ref: '#/components/schemas/applicationId' channel: $ref: '#/components/schemas/multiChannelMessageChannelEnum' required: - from - applicationId - channel multiChannelChannelListRBMObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListObjectBase' - type: object properties: content: description: The content of the message. oneOf: - $ref: '#/components/schemas/rbmMessageContentText' - $ref: '#/components/schemas/rbmMessageMedia' - $ref: '#/components/schemas/rbmMessageContentRichCard' required: - content multiChannelChannelListSMSObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListObjectBase' - type: object properties: content: $ref: '#/components/schemas/smsMessageContent' required: - content multiChannelChannelListMMSObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListObjectBase' - type: object properties: content: $ref: '#/components/schemas/mmsMessageContent' required: - content multiChannelChannelListRBMResponseObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListRBMObject' - $ref: '#/components/schemas/multiChannelChannelListOwnerObject' multiChannelChannelListSMSResponseObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListSMSObject' - $ref: '#/components/schemas/multiChannelChannelListOwnerObject' multiChannelChannelListMMSResponseObject: allOf: - $ref: '#/components/schemas/multiChannelChannelListMMSObject' - $ref: '#/components/schemas/multiChannelChannelListOwnerObject' multiChannelChannelListRequestObject: anyOf: - $ref: '#/components/schemas/multiChannelChannelListRBMObject' - $ref: '#/components/schemas/multiChannelChannelListSMSObject' - $ref: '#/components/schemas/multiChannelChannelListMMSObject' discriminator: propertyName: channel mapping: RBM: '#/components/schemas/multiChannelChannelListRBMObject' SMS: '#/components/schemas/multiChannelChannelListSMSObject' MMS: '#/components/schemas/multiChannelChannelListMMSObject' multiChannelChannelListOwnerObject: type: object properties: owner: type: string description: >- The Bandwidth senderId associated with the message. Identical to 'from'. required: - owner multiChannelChannelListResponseObject: anyOf: - $ref: '#/components/schemas/multiChannelChannelListRBMResponseObject' - $ref: '#/components/schemas/multiChannelChannelListSMSResponseObject' - $ref: '#/components/schemas/multiChannelChannelListMMSResponseObject' discriminator: propertyName: channel mapping: RBM: '#/components/schemas/multiChannelChannelListRBMResponseObject' SMS: '#/components/schemas/multiChannelChannelListSMSResponseObject' MMS: '#/components/schemas/multiChannelChannelListMMSResponseObject' multiChannelMessageRequest: description: Multi-Channel Message Request type: object properties: to: $ref: '#/components/schemas/multiChannelDestination' channelList: type: array description: >- A list of message bodies. The messages will be attempted in the order they are listed. Once a message sends successfully, the others will be ignored. items: $ref: '#/components/schemas/multiChannelChannelListRequestObject' maxItems: 4 tag: $ref: '#/components/schemas/tag' priority: $ref: '#/components/schemas/priorityEnum' expiration: $ref: '#/components/schemas/expiration' required: - to - channelList multiChannelMessageResponseData: description: The data returned in a multichannel message response. type: object properties: id: $ref: '#/components/schemas/id' time: description: The time the message was received by the Bandwidth API. type: string format: date-time example: 2025-01-01T18:20:16.000Z direction: $ref: '#/components/schemas/messageDirectionEnum' to: $ref: '#/components/schemas/multiChannelDestinations' channelList: type: array description: >- A list of message bodies. The messages will be attempted in the order they are listed. Once a message sends successfully, the others will be ignored. items: $ref: '#/components/schemas/multiChannelChannelListResponseObject' maxItems: 4 tag: $ref: '#/components/schemas/tag' priority: $ref: '#/components/schemas/priorityEnum' expiration: $ref: '#/components/schemas/expiration' required: - id - time - direction - to - channelList multiChannelMessageContent: description: The structure of the content field of a multichannel message. type: object properties: text: type: string media: $ref: '#/components/schemas/rbmMessageContentFile' rbmSuggestionResponse: type: object properties: text: type: string description: The text associated with the suggestion response. example: Yes, I would like to proceed postbackData: $ref: '#/components/schemas/rbmActionPostbackData' rbmLocationResponse: type: object properties: latitude: type: string format: double description: The latitude of the client's location. example: '37.7749' longitude: type: string format: double description: The longitude of the client's location. example: '-122.4194' callback: description: >- Callbacks are divided into two types based on direction of the related message: - `statusCallback` indicates status of an outbound MT SMS, MMS, or RBM message. - `inboundCallback` indicates an inbound MO message or a multichannel message client's response to a suggestion or location request. type: object oneOf: - $ref: '#/components/schemas/statusCallback' - $ref: '#/components/schemas/inboundCallback' discriminator: propertyName: type mapping: message-sending: '#/components/schemas/statusCallback' message-sent: '#/components/schemas/statusCallback' message-delivered: '#/components/schemas/statusCallback' message-failed: '#/components/schemas/statusCallback' message-read: '#/components/schemas/statusCallback' message-received: '#/components/schemas/inboundCallback' request-location-response: '#/components/schemas/inboundCallback' suggestion-response: '#/components/schemas/inboundCallback' statusCallback: type: object description: >- Represents a status callback for an outbound MT SMS or MMS or RBM message. properties: time: type: string format: date-time example: 2024-12-02T20:15:57.278Z eventTime: type: string description: >- Represents the time at which the message was read, for `message-read` callbacks. format: date-time example: 2024-12-02T20:15:58.278Z type: $ref: '#/components/schemas/statusCallbackTypeEnum' to: type: string description: >- The destination phone number the message was sent to. For status callbacks, this the the Bandwidth user's client phone number. example: '+15552223333' description: type: string description: A detailed description of the event described by the callback. example: Message delivered to carrier. message: $ref: '#/components/schemas/statusCallbackMessage' errorCode: type: integer description: Optional error code, applicable only when type is `message-failed`. example: 4405 carrierName: $ref: '#/components/schemas/carrierName' required: - time - type - to - description - message inboundCallback: type: object description: Represents an inbound callback. properties: time: type: string format: date-time example: 2024-12-02T20:15:57.278Z type: $ref: '#/components/schemas/inboundCallbackTypeEnum' to: type: string description: > The destination phone number the message was sent to. For inbound callbacks, this is the Bandwidth number or alphanumeric identifier that received the message. example: '+15552223333' description: type: string description: A detailed description of the event described by the callback. example: Incoming message received message: $ref: '#/components/schemas/inboundCallbackMessage' carrierName: $ref: '#/components/schemas/carrierName' required: - time - type - to - description - message statusCallbackTypeEnum: type: string description: >- The possible status callbacks when sending an MT SMS or MMS or RBM message: - `message-sending` indicates that Bandwidth is sending the message to the upstream provider. - `message-delivered` indicates that the message was successfully sent. - `message-failed` indicates that the message could not be sent to the intended recipient. - `message-read` indicates that the RBM message was read by the recipient. enum: - message-sending - message-delivered - message-failed - message-read example: message-delivered inboundCallbackTypeEnum: type: string description: >- The possible inbound callback types originating from MO messages or multichannel message client responses: - `message-received` indicates an MO message from a Bandwidth user's client to a Bandwidth number. - `request-location-response` indicates a response to a location request sent by the Bandwidth user's client after receiving an RBM message. - `suggestion-response` indicates a response to a suggestion sent by the Bandwidth user's client after receiving an RBM message. enum: - message-received - request-location-response - suggestion-response example: message-received statusCallbackMessage: description: Message payload schema within a callback type: object properties: id: type: string description: A unique identifier of the message. example: 1661365814859loidf7mcwd4qacn7 owner: type: string description: >- The Bandwidth phone number or alphanumeric identifier associated with the message. example: '+15553332222' applicationId: $ref: '#/components/schemas/applicationId' time: type: string format: date-time example: 2024-12-02T20:15:57.666Z segmentCount: $ref: '#/components/schemas/segmentCount' direction: $ref: '#/components/schemas/messageDirectionEnum' to: description: The phone number recipients of the message. uniqueItems: true type: array items: type: string example: - '+15552223333' from: type: string description: >- The Bandwidth phone number or alphanumeric identifier the message was sent from. example: '+15553332222' text: type: string example: Hello world tag: $ref: '#/components/schemas/tag' media: type: array description: Optional media, not applicable for sms 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' channel: $ref: '#/components/schemas/multiChannelMessageChannelEnum' required: - id - owner - applicationId - time - segmentCount - direction - to - from inboundCallbackMessage: allOf: - $ref: '#/components/schemas/statusCallbackMessage' - type: object properties: content: $ref: '#/components/schemas/multiChannelMessageContent' suggestionResponse: $ref: '#/components/schemas/rbmSuggestionResponse' locationResponse: $ref: '#/components/schemas/rbmLocationResponse' required: - id - owner - applicationId - time - segmentCount - direction - to - from 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 callTranscriptionDetectedLanguageEnum: type: string enum: - en-US - es-US - fr-FR description: The detected language for this transcription. example: en-US callTranscriptionTrackEnum: type: string enum: - inbound - outbound description: Which `track` this transcription is derived from. example: inbound 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`) even if `privacy` is set to true. example: '+15555551212' privacy: nullable: true type: boolean description: >- Hide the calling number. The `displayName` field can be used to customize the displayed name. example: false 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. If `privacy` is true, only the following values are valid: `Restricted`, `Anonymous`, `Private`, or `Unavailable`. 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', 'base64' and 'hex' 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 4096 characters. maxLength: 4096 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-Validation-Passed` or `TN-Validation-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-Validation-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 4096 characters. Not allowed if `state` is `completed`. maxLength: 4096 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/applicationId1' 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/recordingTranscriptionMetadata' recordingName: $ref: '#/components/schemas/recordingName' 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 format: uri 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-apis/voice/#tag/Conferences/operation/getConferenceMember) endpoint and [Modify Conference Member](/apis/voice-apis/voice/#tag/Conferences/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' recordingName: $ref: '#/components/schemas/recordingName' machineDetectionConfiguration: type: object description: >- The machine detection request used to perform machine detection on the call. Currently, there is an issue where decimal values are not getting processed correctly. Please use whole number values. We are working to resolve this issue. Please contact Bandwidth Support if you need more information. 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 recordingTranscriptions: type: object properties: transcripts: type: array items: $ref: '#/components/schemas/transcription' callTranscriptionMetadataList: type: array items: $ref: '#/components/schemas/callTranscriptionMetadata' example: - transcriptionId: t-3f758f24-c7a2fc78-7c91-401a-8b2e-e542f9c40d6b transcriptionName: live_transcription transcriptionUrl: >- https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-fef240ff-5cfc9091-8069-4863-a8c0-a4dcbbf1f1a4/transcriptions/t-3f758f24-c7a2fc78-7c91-401a-8b2e-e542f9c40d6b callTranscriptionMetadata: type: object properties: transcriptionId: type: string description: The programmable voice API transcription ID. example: t-3f758f24-c7a2fc78-7c91-401a-8b2e-e542f9c40d6b transcriptionName: type: string description: >- The programmable voice API transcription name. This name could be provided by the user when creating the transcription. example: live_transcription transcriptionUrl: type: string description: >- A URL that may be used to retrieve the transcription itself. This points to the [Get Call Transcription](/apis/voice-apis/voice/#tag/Transcriptions/operation/getRealTimeTranscription) endpoint. example: >- https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-fef240ff-5cfc9091-8069-4863-a8c0-a4dcbbf1f1a4/transcriptions/t-3f758f24-c7a2fc78-7c91-401a-8b2e-e542f9c40d6b callTranscriptionResponse: type: object properties: accountId: type: string description: The user account associated with the call. example: '9900000' callId: type: string description: The call id associated with the event. example: c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 transcriptionId: type: string description: The programmable voice API transcription ID. example: t-3f758f24-c7a2fc78-7c91-401a-8b2e-e542f9c40d6b tracks: type: array items: $ref: '#/components/schemas/callTranscription' example: - detectedLanguage: en-US track: inbound transcript: Hello World! This is an example. confidence: 0.9 callTranscription: type: object properties: detectedLanguage: $ref: '#/components/schemas/callTranscriptionDetectedLanguageEnum' track: $ref: '#/components/schemas/callTranscriptionTrackEnum' transcript: type: string description: The transcription itself. example: Hello World! This is an example. confidence: type: number format: double minimum: 0 maximum: 1 description: >- How confident the transcription engine was in transcribing the associated audio (from `0` to `1`). example: 0.9 recordingTranscriptionMetadata: 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 format: date-time 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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' uui: $ref: '#/components/schemas/uui' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/channels' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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/applicationId1' 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: '9900000' applicationId1: 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. Must be a phone number in E.164 format (e.g. +15555555555). 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). 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 recordingName: type: string description: A name to identify this recording. example: my-recording-name callUrl: type: string format: uri 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-Validation-Passed and TN-Validation-Failed. example: Tn-Validation-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 uui: type: string description: >- The value of the `User-To-User` header to send within the initial `INVITE`. Must include the encoding parameter as specified in RFC 7433. Only `base64`, `jwt` and `hex` encoding are currently allowed. This value, including the encoding specifier, may not exceed 256 characters. example: bXktdXVp maxLength: 256 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: 1589228074636lm4k2je7j7jklbn2 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 completedLookupStatusEnum: type: string enum: - COMPLETE - PARTIAL_COMPLETE - FAILED example: COMPLETE inProgressLookupStatusEnum: type: string enum: - IN_PROGRESS - COMPLETE - PARTIAL_COMPLETE - FAILED example: COMPLETE deactivationEventEnum: type: string description: > [DNI-Only](#section/DNI-Only). `DEACTIVATED` if the carrier reported a deactivation event for this phone number. enum: - DEACTIVATED latestMessageDeliveryStatusEnum: type: string description: >- [DNI-Only](#section/DNI-Only). The current delivery status of the phone number. - ACTIVE: A message was successfully sent to the number (delivery code 0). - DEACTIVATED: A message was not delivered to a number (delivery code 720) - UNKNOWN: Bandwidth cannot find an delivery status entry for the number. - NOT_ENABLED: The phone number is not enabled for messaging, so there is no delivery status information. enum: - ACTIVE - DEACTIVATED - UNKNOWN - NOT_ENABLED lineTypeEnum: type: string enum: - FIXED - VOIP-FIXED - MOBILE - VOIP example: MOBILE requestId: type: string format: uuid description: The phone number lookup request ID from Bandwidth. example: 004223a0-8b17-41b1-bf81-20732adf5590 linkSchema: title: Link type: object properties: href: type: string description: URI of the link. example: /relative/uri rel: type: string description: Specifies the relationship between this link and the resource. example: aRelatedResource method: type: string description: HTTP method to be used. example: GET lookupErrorSchema: type: object required: - code - type - description properties: code: type: string description: Validation error code example: NO-MATCH description: type: string description: Description of validation error example: Example error description type: type: string description: Type of validation error example: NumberInventory meta: type: object properties: phoneNumbers: type: array items: type: string description: Phone number experiencing the error. example: - '+13992077164' - '+19196104424' message: type: string description: Message describing the error example: Invalid TNs code: type: integer description: Error code associated with the message example: 1001 syncLookupRequest: type: object properties: phoneNumbers: description: Telephone numbers in E.164 format. type: array minimum: 1 maximum: 100 items: type: string pattern: ^\+[1-9]\d{1,14}$ rcsAgent: type: string description: >- Override the default RCS sender/agent ID used when checking RCS capabilities. When provided, this value is used as the `sender` in the RCS capability-check request instead of the account default. Must be 1–40 characters and contain only letters, digits, underscores, or hyphens. pattern: ^[A-Za-z0-9_-]{1,40}$ example: MyCustomRcsAgent required: - phoneNumbers asyncLookupRequest: type: object properties: phoneNumbers: description: Telephone numbers in E.164 format. type: array minimum: 1 maximum: 15000 items: type: string pattern: ^\+[1-9]\d{1,14}$ required: - phoneNumbers createSyncLookupResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/linkSchema' example: [] data: type: object description: The phone number lookup response data properties: requestId: $ref: '#/components/schemas/requestId' status: $ref: '#/components/schemas/completedLookupStatusEnum' results: type: array description: >- The carrier information results for the specified telephone numbers. items: $ref: '#/components/schemas/lookupResult' errors: type: array items: $ref: '#/components/schemas/lookupErrorSchema' createAsyncBulkLookupResponse: type: object properties: links: type: array description: Links for pagination (if applicable) items: $ref: '#/components/schemas/linkSchema' data: type: object description: The phone number lookup response data properties: requestId: $ref: '#/components/schemas/requestId' status: $ref: '#/components/schemas/inProgressLookupStatusEnum' errors: type: array items: $ref: '#/components/schemas/lookupErrorSchema' getAsyncBulkLookupResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/linkSchema' example: [] data: type: object description: The phone number lookup response data properties: requestId: $ref: '#/components/schemas/requestId' status: $ref: '#/components/schemas/inProgressLookupStatusEnum' results: type: array description: >- The carrier information results for the specified telephone number. items: $ref: '#/components/schemas/lookupResult' errors: type: array items: $ref: '#/components/schemas/lookupErrorSchema' lookupErrorResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/linkSchema' example: [] data: type: object description: The phone number lookup response data errors: type: array items: $ref: '#/components/schemas/lookupErrorSchema' rcsErrorEnum: type: string description: >- [RCS-Only](#section/RCS-Only). Error encountered during RCS capability lookup. Appears as the `code` field in the top-level `errors` array. **RCS service pass-through codes:** - `REQUEST_FAILED`: The RCS service returned this error code. - `UNKNOWN_CODE`: The RCS service returned this error code. - `INVALID_DESTINATION_ADDRESS`: The RCS service returned this error code. - `UNKNOWN_STATUS: `: The RCS service returned an unrecognized status code, where `` is the raw value. **Service-level errors:** - `MISSING_FROM_RESPONSE`: The phone number was absent from the RCS service response. - `RCS_SERVICE_UNAVAILABLE`: An exception was thrown during the async RCS service call. - `RCS_SERVICE_DISABLED`: RCS lookup is disabled in configuration. - `EMPTY_RESPONSE`: The RCS service returned a null or empty response body. example: RCS_SERVICE_UNAVAILABLE lookupResult: type: object description: Carrier information results for the specified telephone number. properties: phoneNumber: type: string description: The telephone number in E.164 format. example: '+10072904498' lineType: $ref: '#/components/schemas/lineTypeEnum' messagingProvider: type: string description: The messaging service provider of the telephone number. example: Verizon Wireless voiceProvider: type: string description: The voice service provider of the telephone number. example: Verizon Wireless countryCodeA3: type: string description: >- The country code of the telephone number in ISO 3166-1 alpha-3 format. example: USA deactivationReporter: type: string description: > [DNI-Only](#section/DNI-Only). The carrier that reported a deactivation event for this phone number. deactivationDate: type: string format: date-time-local description: >- [DNI-Only](#section/DNI-Only). The datetime the carrier reported a deactivation event. example: 2025-06-20 18:35 deactivationEvent: $ref: '#/components/schemas/deactivationEventEnum' latestMessageDeliveryStatus: $ref: '#/components/schemas/latestMessageDeliveryStatusEnum' initialMessageDeliveryStatusDate: type: string format: date description: >- [DNI-Only](#section/DNI-Only). The date the phone number entered the status described in `latestMessageDeliveryStatus`. Think of this as the "start time" for that status. Value resets every time the `latestMessageDeliveryStatus` changes. example: '2025-06-20' latestMessageDeliveryStatusDate: type: string format: date description: >- [DNI-Only](#section/DNI-Only). The date bandwidth last received delivery status information for this phone number. Use this field to understand how up-to-date the `latestMessageDeliveryStatus` is. Value resets every time the `latestMessageDeliveryStatus` changes. example: '2025-06-21' rcsEnabled: type: boolean description: > [RCS-Only](#section/RCS-Only). Indicates whether the phone number is capable of receiving RCS messages. Value will be null if account has RCS, but no value was returned. Absent when account does not have RCS. example: true accountId1: type: string description: User's account ID. example: '1234567' tfPhoneNumber: type: string description: Toll-free telephone number in E.164 format. minLength: 12 maxLength: 12 nullable: false pattern: ^\+1(800|833|844|855|866|877|888)[2-9]\d{6}$ example: '+18005555555' tfvWebhookErrors: type: array description: Details of the errors that were encountered when processing the request. items: type: string example: 'optInWorkflowImageURLs: Entries must be a valid array of objects.' tfvCallbackStatusEnum: type: string enum: - VERIFIED - UNVERIFIED example: VERIFIED tfvUnverifiedStatus: type: string default: UNVERIFIED example: UNVERIFIED declineReasonDescription: type: string description: Explanation for why a verification request was declined. nullable: false example: >- Invalid Information - Can't Validate URL - Website is not accessible / not available denialStatusCode: description: Reason code for denial. type: integer example: 511 resubmitAllowed: description: >- Whether a Toll-Free Verification request qualifies for resubmission via PUT. example: true type: boolean blocked: description: >- Whether a Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked. example: true type: boolean blockedReason: description: >- The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked. example: Toll-free number was used to send spam messages type: string privacyPolicyUrl: description: The Toll-Free Verification request privacy policy URL. maxLength: 500 example: http://your-company.com/privacyPolicy type: string termsAndConditionsUrl: description: The Toll-Free Verification request terms and conditions policy URL. maxLength: 500 example: http://your-company.com/termsAndConditions type: string businessDba: description: The company 'Doing Business As'. maxLength: 500 example: Another Company Name Inc. type: string businessRegistrationNumber: type: string description: > Government-issued business identifying number. **Note: As of October 19th, 2026 this field will be required when `businessEntityType` is _not_ `SOLE_PROPRIETOR`. If this field is provided, `businessRegistrationType` and `businessRegistrationIssuingCountry` are also required.** nullable: true maxLength: 500 example: 12-3456789 businessRegistrationTypeEnum: type: string description: > The type of business registration number. **Note: As of October 19th, 2026 this field will be required when `businessRegistrationNumber` is provided.** enum: - EIN - CBN - NEQ - PROVINCIAL_NUMBER - CRN - VAT - ACN - ABN - BRN - SIREN - SIRET - NZBN - UST_IDNR - CIF - NIF - CNPJ - UID - OTHER example: EIN nullable: true businessRegistrationIssuingCountry: type: string description: >- The country issuing the business registration in ISO-3166-1 alpha-3 format. Alpha-2 format is accepted by the API, but alpha-3 is highly encouraged. **Note: As of October 19th, 2026 this field will be required when `businessRegistrationNumber` is provided.** | Registration Type | Supported Countries | |----------------------|------------------------------------| | EIN | USA | | CBN | CAN | | NEQ | CAN | | PROVINCIAL_NUMBER | CAN | | CRN | GBR, HKG | | VAT | GBR, IRL, BRA, NLD | | ACN | AUS | | ABN | AUS | | BRN | HKG | | SIREN | FRA | | SIRET | FRA | | NZBN | NZL | | UST_IDNR | DEU | | CIF | ESP | | NIF | ESP | | CNPJ | BRA | | UID | CHE | | OTHER | Must Provide Country Code | example: USA nullable: true businessEntityTypeEnum: type: string description: > The type of registered business. **Note: As of October 19th, 2026 submissions using a value other than `SOLE_PROPRIETOR` must provide a value for `businessRegistrationNumber`, `businessRegistrationType`, and `businessRegistrationIssuingCountry`. Submissions using `SOLE_PROPRIETOR` must _omit_ `businessRegistrationNumber`, `businessRegistrationType`, and `businessRegistrationIssuingCountry`. Failure to adhere to these constraints will result in a 400 Bad Request rejection.** enum: - SOLE_PROPRIETOR - PRIVATE_PROFIT - PUBLIC_PROFIT - NON_PROFIT - GOVERNMENT example: PRIVATE_PROFIT nullable: false helpMessageResponse: type: string description: A message that gets sent to users requesting help. nullable: true maxLength: 500 example: Please contact support for assistance. ageGatedContent: type: boolean description: Indicates whether the content is age-gated. example: false additionalDenialReason: properties: statusCode: $ref: '#/components/schemas/denialStatusCode' reason: $ref: '#/components/schemas/declineReasonDescription' resubmitAllowed: $ref: '#/components/schemas/resubmitAllowed' required: - statusCode - reason - resubmitAllowed type: object internalTicketNumber: type: string description: >- Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads. example: acde070d-8c4c-4f0d-9d8a-162843c10333 internalTicketNumberForWebhook: type: string description: >- Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number. example: acde070d-8c4c-4f0d-9d8a-162843c10333 businessContactPhoneNumber: description: Contact telephone number type: string minLength: 1 maxLength: 500 nullable: false example: '+19192654500' verificationRequest: type: object required: - businessAddress - businessContact - messageVolume - phoneNumbers - useCase - useCaseSummary - productionMessageContent - optInWorkflow - businessEntityType properties: businessAddress: $ref: '#/components/schemas/address' businessContact: $ref: '#/components/schemas/contact' messageVolume: type: integer description: Estimated monthly volume of messages from the toll-free number. minimum: 10 maximum: 10000000 example: 10000 phoneNumbers: type: array minItems: 1 maxItems: 10 items: $ref: '#/components/schemas/tfPhoneNumber' useCase: $ref: '#/components/schemas/useCase' useCaseSummary: $ref: '#/components/schemas/useCaseSummary' productionMessageContent: $ref: '#/components/schemas/productionMessageContent' optInWorkflow: $ref: '#/components/schemas/optInWorkflow' additionalInformation: type: string description: Any additional information. minLength: 0 maxLength: 500 nullable: true example: Any additional information isvReseller: $ref: '#/components/schemas/isvReseller' privacyPolicyUrl: $ref: '#/components/schemas/privacyPolicyUrl' termsAndConditionsUrl: $ref: '#/components/schemas/termsAndConditionsUrl' businessDba: $ref: '#/components/schemas/businessDba' businessRegistrationNumber: $ref: '#/components/schemas/businessRegistrationNumber' businessRegistrationType: $ref: '#/components/schemas/businessRegistrationTypeEnum' businessRegistrationIssuingCountry: $ref: '#/components/schemas/businessRegistrationIssuingCountry' businessEntityType: $ref: '#/components/schemas/businessEntityTypeEnum' helpMessageResponse: $ref: '#/components/schemas/helpMessageResponse' ageGatedContent: $ref: '#/components/schemas/ageGatedContent' cvToken: $ref: '#/components/schemas/cvTokenNullable' verificationUpdateRequest: type: object required: - businessAddress - businessContact - messageVolume - useCase - useCaseSummary - productionMessageContent - optInWorkflow properties: businessAddress: $ref: '#/components/schemas/address' businessContact: $ref: '#/components/schemas/contact' messageVolume: type: integer description: Estimated monthly volume of messages from the toll-free number. minimum: 10 maximum: 10000000 example: 10000 useCase: $ref: '#/components/schemas/useCase' useCaseSummary: $ref: '#/components/schemas/useCaseSummary' productionMessageContent: $ref: '#/components/schemas/productionMessageContent' optInWorkflow: $ref: '#/components/schemas/optInWorkflow' additionalInformation: $ref: '#/components/schemas/additionalInformation' isvReseller: $ref: '#/components/schemas/isvReseller' privacyPolicyUrl: $ref: '#/components/schemas/privacyPolicyUrl' termsAndConditionsUrl: $ref: '#/components/schemas/termsAndConditionsUrl' businessDba: $ref: '#/components/schemas/businessDba' businessRegistrationNumber: $ref: '#/components/schemas/businessRegistrationNumber' businessRegistrationType: $ref: '#/components/schemas/businessRegistrationTypeEnum' businessEntityType: $ref: '#/components/schemas/businessEntityTypeEnum' businessRegistrationIssuingCountry: $ref: '#/components/schemas/businessRegistrationIssuingCountry' helpMessageResponse: $ref: '#/components/schemas/helpMessageResponse' ageGatedContent: $ref: '#/components/schemas/ageGatedContent' cvToken: $ref: '#/components/schemas/cvTokenNullable' tfvBasicAuthentication: type: object properties: username: type: string maxLength: 100 example: username password: type: string maxLength: 200 example: password required: - username - password webhookSubscriptionRequestSchema: type: object properties: basicAuthentication: $ref: '#/components/schemas/tfvBasicAuthentication' callbackUrl: $ref: '#/components/schemas/webhookUrl' sharedSecretKey: $ref: '#/components/schemas/sharedSecretKey' required: - callbackUrl failureWebhook: type: object properties: accountId: $ref: '#/components/schemas/accountId1' phoneNumber: $ref: '#/components/schemas/tfPhoneNumber' errorCode: type: string description: >- An error code indicating what error was encountered. This code can be interpreted as an HTTP status code in regards to the error that was encountered. example: '400' errorMessage: type: string description: A description of the error that was encountered. example: cannot process request. errors: $ref: '#/components/schemas/tfvWebhookErrors' internalTicketNumber: $ref: '#/components/schemas/internalTicketNumberForWebhook' verificationDenialWebhook: type: object properties: accountId: $ref: '#/components/schemas/accountId1' additionalDenialReasons: description: >- An optional list of denial reasons in addition to declineReasonDescription when multiple reasons apply. items: $ref: '#/components/schemas/additionalDenialReason' example: - statusCode: 512 reason: Reason A resubmitAllowed: true - statusCode: 513 reason: Reason B resubmitAllowed: true type: array declineReasonDescription: $ref: '#/components/schemas/declineReasonDescription' denialStatusCode: $ref: '#/components/schemas/denialStatusCode' internalTicketNumber: $ref: '#/components/schemas/internalTicketNumberForWebhook' phoneNumber: $ref: '#/components/schemas/tfPhoneNumber' resubmitAllowed: $ref: '#/components/schemas/resubmitAllowed' status: $ref: '#/components/schemas/tfvUnverifiedStatus' blocked: $ref: '#/components/schemas/blocked' blockedReason: $ref: '#/components/schemas/blockedReason' verificationWebhook: type: object properties: accountId: $ref: '#/components/schemas/accountId1' phoneNumber: $ref: '#/components/schemas/tfPhoneNumber' status: $ref: '#/components/schemas/tfvCallbackStatusEnum' internalTicketNumber: $ref: '#/components/schemas/internalTicketNumberForWebhook' blockedWebhook: type: object properties: accountId: $ref: '#/components/schemas/accountId1' phoneNumber: $ref: '#/components/schemas/tfPhoneNumber' status: $ref: '#/components/schemas/tfvCallbackStatusEnum' internalTicketNumber: $ref: '#/components/schemas/internalTicketNumberForWebhook' blocked: $ref: '#/components/schemas/blocked' blockedReason: $ref: '#/components/schemas/blockedReason' tfvSubmissionWrapper: type: object properties: submission: $ref: '#/components/schemas/verificationUpdateRequest' address: type: object nullable: false required: - name - addr1 - city - state - zip - url properties: name: type: string description: The name of the business using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: Bandwidth Inc. addr1: type: string description: The address of the business using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: 2230 Bandmate Way addr2: type: string description: The address of the business using the toll-free number. minLength: 0 maxLength: 500 nullable: true example: 2230 Bandmate Way city: type: string description: The city of the business using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: Raleigh state: type: string description: The state of the business using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: NC zip: type: string description: The zip of the business using the toll-free number. nullable: false example: '27606' pattern: '[- A-Za-z0-9]{0,500}' url: type: string format: url description: The website of the business using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: https://www.example.com/path/to/resource additionalInformation: type: string description: Any additional information. minLength: 0 maxLength: 500 nullable: true example: Any additional information optInWorkflow: type: object nullable: false required: - description - imageUrls properties: description: type: string minLength: 1 maxLength: 500 nullable: false example: Opt In Flow imageUrls: type: array items: type: string minLength: 1 maxLength: 500 nullable: false example: https://www.example.com/path/to/resource pattern: >- ^$|(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,253}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*) confirmationResponse: type: string minLength: 0 maxLength: 500 nullable: true example: Thank you for opting in! isvReseller: type: string description: ISV name. minLength: 0 maxLength: 500 nullable: true example: Test ISV contact: type: object nullable: false required: - firstName - lastName - email - phoneNumber properties: firstName: type: string description: The first name of the business contact using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: John lastName: type: string description: The last name of the business contact using the toll-free number. minLength: 1 maxLength: 500 nullable: false example: Doe email: $ref: '#/components/schemas/email' phoneNumber: $ref: '#/components/schemas/businessContactPhoneNumber' email: type: string format: email minLength: 0 maxLength: 500 nullable: false pattern: >- ^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$ example: foo@bar.com useCases: type: array items: type: string example: - 2FA - App Notifications - Appointments - Auctions - Auto Repair Services - Bank Transfers - Billing - Booking Confirmations - Business Updates - COVID-19 Alerts useCase: type: string description: The category of the use case. minLength: 0 maxLength: 500 example: 2FA useCaseSummary: type: string description: A general idea of the use case and customer. minLength: 0 maxLength: 500 nullable: false example: Text summarizing the use case for the toll-free number productionMessageContent: type: string description: Example of message content. minLength: 0 maxLength: 500 nullable: false example: Production message content webhookSubscriptionsListBody: description: >- A list of all webhook subscriptions registered for this account ID for this particular feature (unpaginated). type: object required: - data properties: links: $ref: '#/components/schemas/linksObject' errors: type: array items: $ref: '#/components/schemas/webhookSubscriptionError' data: items: $ref: '#/components/schemas/webhookSubscription' type: array linksObject: type: object properties: first: description: The first (or only) page of results matching the query. type: string next: description: >- If more results exist than specified by 'size', this link returns the next page of 'size' results. type: string previous: description: >- If the results are more than one page, this link returns the previous page of 'size' results. type: string last: description: >- If more results exist than specified by 'size', this link return the last page of result. type: string webhookSubscriptionError: type: object properties: code: type: integer description: type: string telephoneNumbers: type: array items: $ref: '#/components/schemas/telephoneNumber' telephoneNumber: type: object properties: telephoneNumber: description: Simple Telephone Number. type: string webhookSubscriptionTypeEnum: type: string enum: - TOLLFREE_VERIFICATION_STATUS - MESSAGING_PORTOUT_APPROVAL_STATUS example: TOLLFREE_VERIFICATION_STATUS webhookSubscription: description: >- Information about a webhook that Bandwidth should send upon the completion of event customer has subscribed to. type: object required: - callbackUrl properties: id: type: string example: 7hICGStfAfeGxEq3N0lQwO accountId: type: string example: '1234567' callbackUrl: $ref: '#/components/schemas/webhookUrl' type: $ref: '#/components/schemas/webhookSubscriptionTypeEnum' basicAuthentication: description: >- Basic authentication credentials are not required, but if present, both username and password must be provided. type: object required: - username - password properties: username: type: string maxLength: 100 password: type: string maxLength: 200 createdDate: type: string format: date-time example: '2023-05-15T13:56:39.965Z' modifiedDate: type: string format: date-time example: '2023-05-15T13:56:39.965Z' webhookUrl: description: >- Callback URL to receive status updates from Bandwidth. When a webhook subscription is registered with Bandwidth under a given account ID, it will be used to send status updates for all requests submitted under that account ID. type: string format: url minLength: 0 maxLength: 2000 nullable: true example: https://www.example.com/path/to/resource pattern: >- ^$|(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,253}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*) tfvError: description: A generic error object. properties: type: type: string example: Error Type description: type: string example: Error Message errors: type: object description: >- Each key of this errors object refers to a field of the submitted object (using dot notation for nested objects), with the field being a key to an array of one or more errors for that field. example: field: error message type: object tfvStatus: type: object properties: phoneNumber: $ref: '#/components/schemas/tfPhoneNumber' status: $ref: '#/components/schemas/tfvStatusEnum' internalTicketNumber: $ref: '#/components/schemas/internalTicketNumber' declineReasonDescription: $ref: '#/components/schemas/declineReasonDescription' resubmitAllowed: $ref: '#/components/schemas/resubmitAllowed' createdDateTime: type: string description: Date and time the verification request was created. format: date-time example: '2021-06-08T06:45:13.0Z' modifiedDateTime: type: string description: Date and time the verification request was last modified. format: date-time example: '2021-06-08T06:45:13.0Z' submission: $ref: '#/components/schemas/tfvSubmissionInfo' blocked: $ref: '#/components/schemas/blocked' blockedReason: $ref: '#/components/schemas/blockedReason' cvToken: $ref: '#/components/schemas/cvTokenNullable' tfvSubmissionInfo: type: object properties: businessAddress: $ref: '#/components/schemas/address' businessContact: $ref: '#/components/schemas/contact' messageVolume: type: integer description: Estimated monthly volume of messages from the toll-free number. minimum: 10 maximum: 10000000 example: 10000 useCase: $ref: '#/components/schemas/useCase' useCaseSummary: $ref: '#/components/schemas/useCaseSummary' productionMessageContent: $ref: '#/components/schemas/productionMessageContent' optInWorkflow: $ref: '#/components/schemas/optInWorkflow' additionalInformation: $ref: '#/components/schemas/additionalInformation' isvReseller: $ref: '#/components/schemas/isvReseller' privacyPolicyUrl: $ref: '#/components/schemas/privacyPolicyUrl' termsAndConditionsUrl: $ref: '#/components/schemas/termsAndConditionsUrl' businessDba: $ref: '#/components/schemas/businessDba' businessRegistrationNumber: $ref: '#/components/schemas/businessRegistrationNumber' description: Government-issued business identifying number. businessRegistrationType: $ref: '#/components/schemas/businessRegistrationTypeEnum' description: The type of business registration number. businessRegistrationIssuingCountry: $ref: '#/components/schemas/businessRegistrationIssuingCountry' description: >- The country issuing the business registration in ISO-3166-1 alpha-3 format. businessEntityType: $ref: '#/components/schemas/businessEntityTypeEnum' description: The type of registered business. tfvStatusEnum: type: string enum: - VERIFIED - UNVERIFIED - PENDING example: VERIFIED sharedSecretKey: description: >- An ASCII string submitted by the user as a shared secret key for generating an HMAC header for callbacks. example: This is my $3cret maxLength: 64 minLength: 16 nullable: true pattern: ^[ -~]{16,64}$ type: string cvTokenNullable: type: string description: >- The token provided by Campaign Verify to validate your political use case. Only required for 527 political organizations. If you are not a 527 political organization, this field should be omitted. Supplying an empty string will likely result in rejection. minLength: 0 maxLength: 500 nullable: true example: >- cv.user123|sess456|mno|tfree|read_write|X7yZ9aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789aBcDeFgHiJkLmNoPqRsTuVw endpointId: type: string description: The unique ID of the endpoint. example: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 endpointStatusEnum: type: string enum: - CONNECTED - DISCONNECTED deviceStatusEnum: type: string enum: - CONNECTED - DISCONNECTED endpointTypeEnum: type: string enum: - WEBRTC endpointDirectionEnum: type: string enum: - INBOUND - OUTBOUND - BIDIRECTIONAL sipCredentials: type: object properties: username: type: string description: The username for the SIP connection. example: username password: type: string description: The password for the SIP connection. example: password sipConnectionMetadata: title: SIP Connection type: object properties: ipAddress: type: string format: ipv4 description: The IP address of the SIP connection. example: 192.168.0.0 port: type: integer description: The port of the SIP connection. example: 5060 credentials: $ref: '#/components/schemas/sipCredentials' uuiHeader: type: string description: The User-to-User Information header for the SIP connection. example: my-uui-header webRtcConnectionMetadata: title: WebRTC Connection type: object endpointToken: type: string description: >- The json web token specific to the endpoint. Used to authenticate the client with the media gateway. example: xxxxx.yyyyy.zzzzz endpointTag: type: string description: A tag for the endpoint. example: my-tag maximum: 1024 device: type: object properties: deviceId: type: string description: The unique ID of the device. example: d-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 deviceName: type: string description: The name of the device. maximum: 1024 example: David's iPhone status: $ref: '#/components/schemas/deviceStatusEnum' creationTimestamp: type: string format: date-time description: The time the device was created. In ISO-8601 format. example: '2021-01-01T00:00:00Z' required: - deviceId - status - creationTimestamp endpoints: type: object properties: endpointId: $ref: '#/components/schemas/endpointId' type: $ref: '#/components/schemas/endpointTypeEnum' status: $ref: '#/components/schemas/endpointStatusEnum' creationTimestamp: type: string format: date-time description: The time the endpoint was created. In ISO-8601 format. example: '2021-01-01T00:00:00Z' expirationTimestamp: type: string format: date-time description: >- The time the endpoint token will expire. In ISO-8601 format. Tokens last 24 hours. example: '2021-01-02T00:00:00Z' tag: $ref: '#/components/schemas/endpointTag' required: - endpointId - type - status - creationTimestamp - expirationTimestamp endpoint: type: object allOf: - $ref: '#/components/schemas/endpoints' - type: object properties: devices: type: array items: $ref: '#/components/schemas/device' createWebRtcConnectionRequest: allOf: - $ref: '#/components/schemas/createEndpointRequestBase' - type: object properties: connectionMetadata: $ref: '#/components/schemas/webRtcConnectionMetadata' createEndpointRequestBase: type: object properties: type: $ref: '#/components/schemas/endpointTypeEnum' direction: $ref: '#/components/schemas/endpointDirectionEnum' eventCallbackUrl: type: string format: uri description: The URL to send event callbacks to. example: https://myapp.com/callback eventFallbackUrl: type: string format: uri description: The URL to send event fallbacks to. example: https://fallback.myapp.com/callback tag: $ref: '#/components/schemas/endpointTag' required: - type - direction createEndpointRequest: oneOf: - $ref: '#/components/schemas/createWebRtcConnectionRequest' discriminator: propertyName: type mapping: WEBRTC: '#/components/schemas/createWebRtcConnectionRequest' createEndpointResponseData: allOf: - $ref: '#/components/schemas/endpoint' - type: object properties: token: $ref: '#/components/schemas/endpointToken' required: - token endpointEventTypeEnum: type: string enum: - DEVICE_CONNECTED - DEVICE_DISCONNECTED endpointEvent: description: An event that occurred on an endpoint. allOf: - $ref: '#/components/schemas/endpoints' - type: object properties: eventTime: type: string format: date-time description: The time the event occurred. In ISO-8601 format. example: '2021-01-01T00:00:00Z' eventType: $ref: '#/components/schemas/endpointEventTypeEnum' device: $ref: '#/components/schemas/device' required: - eventType - eventTime brtcLink: type: object properties: href: type: string description: The full URL of the link. example: >- https://api.bandwidth.com/v2/accounts/5500123/endpoints/e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 rel: type: string description: The relationship of the link to the current resource. example: self method: type: string description: The HTTP method to use when making the request. example: GET page: type: object properties: pageSize: type: integer description: The number of items per page. minimum: 0 example: 10 totalElements: type: integer description: The total number of items. minimum: 0 example: 100 totalPages: type: integer description: The total number of pages. minimum: 0 example: 10 pageNumber: type: integer description: The current page number. minimum: 0 example: 0 required: - pageSize brtcError: type: object properties: id: type: string format: uuid description: A unique identifier for the error. example: 59512d87-7a92-4040-8e4a-78fb772019b9 type: type: string description: The type of error. example: resource.not_found description: type: string description: A description of the error. example: The requested resource was not found. code: type: string description: A code that uniquely identifies the error. example: '404' source: $ref: '#/components/schemas/brtcErrorSource' required: - type - description brtcErrorSource: type: object properties: parameter: type: string description: The URI parameter that caused the error. example: accountId field: type: string description: The request body field that caused the error. example: accountId header: type: string description: The header that caused the error. example: Authorization reference: type: string description: >- The resource ID or path to the resource (or non-existent resource) causing the error. example: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 listEndpointsResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/brtcLink' page: $ref: '#/components/schemas/page' data: type: array items: $ref: '#/components/schemas/endpoints' errors: type: array items: $ref: '#/components/schemas/brtcError' required: - links - data - errors endpointResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/brtcLink' data: $ref: '#/components/schemas/endpoint' errors: type: array items: $ref: '#/components/schemas/brtcError' required: - links - data - errors createEndpointResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/brtcLink' data: $ref: '#/components/schemas/createEndpointResponseData' errors: type: array items: $ref: '#/components/schemas/brtcError' required: - links - data - errors brtcErrorResponse: type: object properties: links: type: array items: $ref: '#/components/schemas/brtcLink' data: type: object nullable: true additionalProperties: false errors: type: array items: $ref: '#/components/schemas/brtcError' required: - links - data - errors responses: createMessageResponse: description: Accepted content: application/json: schema: $ref: '#/components/schemas/message' createMultiChannelMessageResponse: description: Accepted content: application/json: schema: $ref: '#/components/schemas/createMultiChannelMessageResponse' 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' messagingMethodNotAllowedError: description: Method Not Allowed 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' multiChannelBadRequestError: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: request-validation description: >- The 'channelList[0].from' field must contain exactly one telephone number source: field: channelList[0].from multiChannelNotAcceptableError: description: Not Acceptable multiChannelUnauthorizedError: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: unauthorized description: Authentication Failed source: {} multiChannelForbiddenError: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: forbidden description: Access Denied source: {} multiChannelNotFoundError: description: Not Found content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: forbidden description: Resource not found. source: {} multiChannelMethodNotAllowedError: description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: method-not-allowed description: Method 'PUT' not supported for this resource. source: {} multiChannelInvalidMediaTypeError: description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: unsupported-content-type description: >- Content-Type 'application/xml;charset=UTF-8' is not supported. Please use 'application/json' source: header: Content-Type multiChannelTooManyRequestsError: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: rate-limit-exceeded description: >- You have exceeded your rate limit for this endpoint. Please retry later. source: {} multiChannelInternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/multiChannelError' example: links: [] data: null errors: - type: internal-server-error description: Internal server error. No further information available source: {} listMessagesTooManyRequestsError: description: Too Many Requests headers: Retry-After: description: The number of seconds to wait before retrying the request. schema: type: integer example: 300 content: application/json: schema: $ref: '#/components/schemas/messagingRequestError' example: type: rate_limit_exceeded description: >- Rate limit exceeded. Wait for Retry-After time before sending another request. createCallResponse: description: 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: OK content: application/json: schema: $ref: '#/components/schemas/callState' updateCallResponse: description: OK listCallsResponse: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/callState' getStatisticsResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/accountStatistics' updateRecordingResponse: description: OK listCallRecordingsResponse: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/callRecordingMetadata' getCallRecordingResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/callRecordingMetadata' downloadRecordingMediaResponse: description: OK content: audio/vnd.wave: schema: type: string format: binary audio/mpeg: schema: type: string format: binary getRecordingTranscriptionResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/recordingTranscriptions' listTranscriptionsResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/callTranscriptionMetadataList' getCallTranscriptionResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/callTranscriptionResponse' deleteCallTranscriptionResponse: description: No Content listConferencesResponse: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/conference' examples: listConferences Response: $ref: '#/components/examples/listConferencesResponseExample' getConferenceResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/conference' getConferenceMemberResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/conferenceMember' listConferenceRecordingsResponse: description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/conferenceRecordingMetadata' getConferenceRecordingResponse: description: OK 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' createSyncLookupResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/createSyncLookupResponse' examples: lookupCompleteWithDniExample: $ref: '#/components/examples/lookupCompleteWithDniExample' lookupCompleteExample: $ref: '#/components/examples/lookupCompleteExample' lookupCompleteWithRcsExample: $ref: '#/components/examples/lookupCompleteWithRcsExample' lookupCompleteWithRcsErrorExample: $ref: '#/components/examples/lookupCompleteWithRcsErrorExample' lookupPartialExample: $ref: '#/components/examples/lookupPartialExample' lookupFailedExample: $ref: '#/components/examples/lookupFailedExample' createAsyncBulkLookupResponse: description: Accepted content: application/json: schema: $ref: '#/components/schemas/createAsyncBulkLookupResponse' examples: lookupAcceptedExample: $ref: '#/components/examples/lookupAcceptedExample' getAsyncBulkLookupResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/getAsyncBulkLookupResponse' examples: lookupCompleteWithDniExample: $ref: '#/components/examples/lookupCompleteWithDniExample' lookupCompleteExample: $ref: '#/components/examples/lookupCompleteExample' lookupInProgressExample: $ref: '#/components/examples/lookupInProgressExample' lookupPartialExample: $ref: '#/components/examples/lookupPartialExample' lookupFailedExample: $ref: '#/components/examples/lookupFailedExample' tnLookupDefaultResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/lookupErrorResponse' examples: badRequest: $ref: '#/components/examples/badRequestExample' unauthorized: $ref: '#/components/examples/unauthorizedExample' forbidden: $ref: '#/components/examples/forbiddenExample' mediaType: $ref: '#/components/examples/unsupportedMediaTypeExample' notFound: $ref: '#/components/examples/notFoundExample' tooManyRequests: $ref: '#/components/examples/tooManyRequestsExample' internalServer: $ref: '#/components/examples/internalServerErrorExample' getTollFreeVerificationStatusResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/tfvStatus' listWebhookSubscriptionsResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/webhookSubscriptionsListBody' createWebhookSubscriptionResponse: description: Created content: application/json: schema: $ref: '#/components/schemas/webhookSubscription' updateWebhookSubscriptionResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/webhookSubscription' listTollFreeUseCasesResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/useCases' tfvBadRequestResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Cannot process request. type: bad request noContentResponse: description: No Content tfvPostBadRequestResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: cannot process request. errors: businessName: Business name is required. businessContactEmail: Business contact email is not a valid email address. optInWorkflowImageURLs: Entries must be a valid array of objects. tfvUnauthorizedResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Client is providing incorrect or invalid credentials. type: unauthorized tfvForbiddenResponse: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Client is not authorized for the action. type: forbidden tfvNotFoundResponse: description: Cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Cannot find the requested resource. type: Not Found tfvNotAllowedResponse: description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Method is not allowed. type: Method Not Allowed tfvTooManyRequestsResponse: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Throttling error. Too many requests. type: Too Many Requests tfvServerErrorResponse: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Internal Server Error. type: Internal Server Error tfvServiceUnavailableResponse: description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/tfvError' example: description: Service Unavailable Error. type: Service Unavailable verifyPutResponse: description: Accepted listEndpointsResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/listEndpointsResponse' examples: listEndpointsResponseExample: $ref: '#/components/examples/listEndpointsResponseExample' createEndpointResponse: description: Created content: application/json: schema: $ref: '#/components/schemas/createEndpointResponse' examples: createEndpointResponseExample: $ref: '#/components/examples/createEndpointResponseExample' getEndpointResponse: description: OK content: application/json: schema: $ref: '#/components/schemas/endpointResponse' examples: getEndpointResponseExample: $ref: '#/components/examples/getEndpointResponseExample' badRequestErrorResponse: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: badRequestErrorExample: $ref: '#/components/examples/badRequestErrorExample' unauthorizedErrorResponse: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: unauthorizedErrorExample: $ref: '#/components/examples/unauthorizedErrorExample' forbiddenErrorResponse: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: forbiddenErrorExample: $ref: '#/components/examples/forbiddenErrorExample' notFoundErrorResponse: description: Not Found content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: notFoundErrorExample: $ref: '#/components/examples/notFoundErrorExample' methodNotAllowedErrorResponse: description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: methodNotAllowedErrorExample: $ref: '#/components/examples/methodNotAllowedErrorExample' unsupportedMediaTypeErrorResponse: description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: unsuppotedMediaTypeErrorExample: $ref: '#/components/examples/unsupportedMediaTypeErrorExample' tooManyRequestsErrorResponse: description: Too Many Requests headers: Retry-After: description: >- The number of seconds the client should wait before making another request. required: true schema: type: integer example: 900 content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: tooManyRequestsErrorExample: $ref: '#/components/examples/tooManyRequestsErrorExample' serviceUnavailableErrorResponse: description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/brtcErrorResponse' examples: serviceUnavailableErrorExample: $ref: '#/components/examples/serviceUnavailableErrorExample' 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 fromBwLatency: in: query name: fromBwLatency required: false description: >- The minimum Bandwidth latency of the message in seconds. Only available for accounts with the Advanced Quality Metrics feature enabled. example: 5 schema: type: integer bwQueued: in: query name: bwQueued required: false description: >- A boolean value indicating whether the message is queued in the Bandwidth network. example: true schema: type: boolean product: in: query name: product required: false description: Messaging product associated with the message. example: P2P schema: $ref: '#/components/schemas/productTypeEnum' location: in: query name: location required: false description: Location Id associated with the message. example: 123ABC schema: type: string carrierQueued: in: query name: carrierQueued required: false description: >- A boolean value indicating whether the message is queued in the carrier network. Only available for OUTBOUND messages from accounts with the Advanced Quality Metrics feature enabled. example: true schema: type: boolean fromCarrierLatency: in: query name: fromCarrierLatency required: false description: >- The minimum carrier latency of the message in seconds. Only available for OUTBOUND messages from accounts with the Advanced Quality Metrics feature enabled. example: 50 schema: type: integer callingNumberCountryA3: in: query name: callingNumberCountryA3 required: false description: Calling number country in A3 format. example: USA schema: type: string calledNumberCountryA3: in: query name: calledNumberCountryA3 required: false description: Called number country in A3 format. example: USA schema: type: string fromSegmentCount: in: query name: fromSegmentCount required: false description: Segment count (start range). example: 1 schema: type: integer toSegmentCount: in: query name: toSegmentCount required: false description: Segment count (end range). example: 3 schema: type: integer fromMessageSize: in: query name: fromMessageSize required: false description: Message size (start range). example: 100 schema: type: integer toMessageSize: in: query name: toMessageSize required: false description: Message size (end range). example: 120 schema: type: integer 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 transcriptionId: name: transcriptionId in: path required: true schema: type: string description: Programmable Voice API Transcription ID. example: t-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. example: eyJwYWdlVG9rZW4iOiJ0b2tlbiJ9 disconnectCause: name: disconnectCause in: query required: false schema: type: string description: Filter results to calls with specified call Disconnect Cause. example: hangup accountId1: in: path name: accountId required: true schema: type: string description: Your Bandwidth Account ID. example: '9900000' requestId: in: path name: requestId required: true schema: type: string format: uuid description: The phone number lookup request ID from Bandwidth. example: 004223a0-8b17-41b1-bf81-20732adf5590 tfPhoneNumberPathParam: in: path name: phoneNumber required: true schema: $ref: '#/components/schemas/tfPhoneNumber' description: Valid Toll-Free telephone number in E.164 format. example: '+18885555555' webhookSubscriptionIdPathParam: in: path name: id required: true schema: type: string description: Webhook subscription ID example: 7bt57JcsVYJrN9K1OcV1Nu endpointId: name: endpointId in: path required: true schema: type: string example: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 description: BRTC Endpoint ID. endpointType: name: type in: query schema: $ref: '#/components/schemas/endpointTypeEnum' description: The type of endpoint. endpointStatus: name: status in: query schema: $ref: '#/components/schemas/endpointStatusEnum' description: The status of the endpoint. afterCursor: name: afterCursor in: query schema: type: string example: TWF5IHRoZSBmb3JjZSBiZSB3aXRoIHlvdQ== description: >- The cursor to use for pagination. This is the value of the `next` link in the previous response. limit1: name: limit in: query schema: type: integer minimum: 1 maximum: 1000 default: 100 example: 2 description: The maximum number of endpoints to return in the response. examples: smsMessageReceivedCallbackExample: summary: An example of a sms message-received callback body. value: time: '2025-01-06T15:43:35.502180Z' type: message-received to: '+12345678902' description: Incoming message received message: id: 14762070468292kw2fuqty55yp2b2 owner: '+12345678902' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 time: '2025-01-06T15:43:34.000000Z' segmentCount: 1 direction: in to: - '+12345678902' from: '+12345678901' text: Hey, check out this SMS! mmsMessageReceivedCallbackExample: summary: An example of a mms message-received callback body. value: time: '2024-09-14T18:20:45.160744Z' type: message-received to: '+12345678902' description: Incoming message received message: id: 14762070468292kw2fuqty55yp2b2 owner: '+12345678902' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 time: '2024-09-14T18:20:45.160744Z' segmentCount: 1 direction: in to: - '+12345678902' - '+12345678903' from: '+12345678901' text: Hey, check out the MMS! media: - >- https://messaging.bandwidth.com/api/v2/users/9900902/media/14762070468292kw2fuqty55yp2b2/0/bw.png messageSendingCallbackExample: summary: An example of a message-sending callback body. value: time: '2024-06-25T18:42:36.979456Z' type: message-sending to: '+15554443333' description: Message is sending to carrier. message: id: 1593110555875xo7watq5px6rbe5d owner: '+15552221111' applicationId: cfd4fb83-7531-4acc-b471-42d0bb76a65c time: '2024-06-25T18:42:35.876906Z' segmentCount: 1 direction: out to: - '+15554443333' from: '+15552221111' text: '' media: - https://dev.bandwidth.com/images/bandwidth-logo.png tag: your tag here smsMessageDeliveredCallbackExample: summary: An example of a sms message-delivered callback body. value: type: message-delivered time: '2024-09-14T18:20:11.160744Z' description: Message delivered to carrier. to: '+12345678902' message: id: 14762070468292kw2fuqty55yp2b2 time: '2024-09-14T18:20:11.160744Z' to: - '+12345678902' from: '+12345678901' text: '' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 owner: '+12345678902' direction: out segmentCount: 1 mmsMessageDeliveredCallbackExample: summary: An example of a mms message-delivered callback body. value: type: message-delivered time: '2024-09-14T18:20:24.160544Z' description: Message delivered to carrier. to: '+12345678902' message: id: 14762070468292kw2fuqty55yp2b2 time: '2024-09-14T18:20:24.160544Z' to: - '+12345678902' from: '+12345678901' text: '' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 owner: '+12345678902' direction: out segmentCount: 1 media: - https://dev.bandwidth.com/images/bandwidth-logo.png groupMmsMessageDeliveredCallbackExample: summary: An example of a group mms message-delivered callback body. value: type: message-delivered time: '2024-09-14T18:20:17.160544Z' description: Message delivered to carrier. to: '+12345678902' message: id: 14762070468292kw2fuqty55yp2b2 time: '2024-09-14T18:20:17.160544Z' to: - '+12345678902' - '+12345678903' from: '+12345678901' text: '' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 owner: '+12345678902' direction: out segmentCount: 1 messageFailedCallbackExample: summary: An example of a message-failed callback body. value: type: message-failed time: '2024-12-18T16:51:27.704450Z' description: forbidden to country to: '+52345678903' errorCode: 4432 message: id: 14762070468292kw2fuqty55yp2b2 time: '2024-12-18T16:51:27.704450Z' to: - '+12345678902' - '+52345678903' from: '+12345678901' text: '' applicationId: 93de2206-9669-4e07-948d-329f4b722ee2 media: - https://dev.bandwidth.com/images/bandwidth-logo.png owner: '+12345678901' direction: out segmentCount: 1 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 answerFallbackUrl: https://myServer.example/bandwidth/webhooks/answerFallback 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: Number Lookup Request value: phoneNumbers: - '+19196104423' multipleNumberRequestExample: summary: Number Lookup Request for Multiple Numbers value: phoneNumbers: - '+19196104423' - '+19196104424' rcsAgentRequestExample: summary: Number Lookup Request with Custom RCS Agent value: phoneNumbers: - '+19196104423' - '+19196104424' rcsAgent: MyCustomRcsAgent lookupAcceptedExample: summary: Numbers Lookup Accepted value: links: - href: >- /accounts/9912345/phoneNumberLookup/bulk/004223a0-8b17-41b1-bf81-20732adf5590 rel: createdRequest method: GET data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: IN_PROGRESS results: [] errors: [] lookupInProgressExample: summary: Numbers Lookup In Progress value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: IN_PROGRESS results: [] errors: [] lookupFailedExample: summary: Numbers Lookup Failed value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: FAILED results: [] errors: - code: NO-MATCH description: The following TNs could not be found in the Number Industry data meta: phoneNumbers: - '+13992077164' message: Invalid TNs code: 1001 type: NumberInventory lookupPartialExample: summary: Numbers Lookup Partial Complete value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: PARTIAL_COMPLETE results: - phoneNumber: '+19196104423' lineType: MOBILE messagingProvider: Verizon Wireless voiceProvider: Verizon Wireless countryCodeA3: USA - phoneNumber: '+19196104424' lineType: MOBILE messagingProvider: T-Mobile USA voiceProvider: T-Mobile USA countryCodeA3: USA errors: - code: NO-MATCH description: The following TNs could not be found in the Number Industry data meta: phoneNumbers: - '+13992077164' message: Invalid TNs code: 1001 type: NumberInventory lookupCompleteExample: summary: Numbers Lookup Complete (without DNI) value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: COMPLETE results: - phoneNumber: '+10072904497' lineType: MOBILE messagingProvider: Verizon Wireless voiceProvider: Verizon Wireless countryCodeA3: USA - phoneNumber: '+10072904498' lineType: MOBILE messagingProvider: T-Mobile USA voiceProvider: T-Mobile USA countryCodeA3: USA errors: [] lookupCompleteWithDniExample: summary: Numbers Lookup Complete (with DNI) value: links: [] data: requestId: 20732adf-bf81-8b17-41b1-004223a05590 status: COMPLETE results: - phoneNumber: '+10072904497' countryCodeA3: USA lineType: MOBILE messagingProvider: T-MOBILE USA INC voiceProvider: T-MOBILE USA INC latestMessageDeliveryStatus: ACTIVE initialMessageDeliveryStatusDate: '2025-05-14' latestMessageDeliveryStatusDate: '2025-05-18' - phoneNumber: '+10072904498' countryCodeA3: USA lineType: MOBILE voiceProvider: VERIZON latestMessageDeliveryStatus: DEACTIVATED initialMessageDeliveryStatusDate: '2025-09-05' latestMessageDeliveryStatusDate: '2025-09-05' - phoneNumber: '+10072904499' lineType: MOBILE countryCodeA3: USA messagingProvider: VERIZON voiceProvider: VERIZON deactivationReporter: Verizon Wireless deactivationDate: '2025-09-29 01:23:00' deactivationEvent: DEACTIVATED latestMessageDeliveryStatus: UNKNOWN - phoneNumber: '+10072904500' lineType: FIXED countryCodeA3: USA voiceProvider: VERIZON deactivationReporter: Verizon Wireless deactivationDate: '2025-09-29 01:23:00' deactivationEvent: DEACTIVATED latestMessageDeliveryStatus: NOT_ENABLED errors: [] lookupCompleteWithRcsExample: summary: Numbers Lookup Complete (with RCS) value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: COMPLETE results: - phoneNumber: '+10072904497' lineType: MOBILE messagingProvider: Verizon Wireless voiceProvider: Verizon Wireless countryCodeA3: USA rcsEnabled: true - phoneNumber: '+10072904498' lineType: MOBILE messagingProvider: T-Mobile USA voiceProvider: T-Mobile USA countryCodeA3: USA rcsEnabled: false errors: [] lookupCompleteWithRcsErrorExample: summary: Numbers Lookup Complete (with RCS error) value: links: [] data: requestId: 004223a0-8b17-41b1-bf81-20732adf5590 status: COMPLETE results: - phoneNumber: '+10072904497' lineType: MOBILE messagingProvider: Verizon Wireless voiceProvider: Verizon Wireless countryCodeA3: USA - phoneNumber: '+10072904498' lineType: MOBILE messagingProvider: T-Mobile USA voiceProvider: T-Mobile USA countryCodeA3: USA errors: - code: RCS_SERVICE_UNAVAILABLE type: rcs-error description: An exception was thrown during the async RCS service call. meta: phoneNumbers: - '+10072904497' - code: MISSING_FROM_RESPONSE type: rcs-error description: The phone number was absent from the RCS service response. meta: phoneNumbers: - '+10072904498' badRequestExample: summary: Example Bad Request Error value: links: [] data: {} errors: - type: bad-request description: >- Bad Request. Ensure that you have set the requestId as a URL path parameter. unauthorizedExample: summary: Unauthorized Error value: links: [] data: {} errors: - type: Unauthorized description: You are not authorized to access this resource. code: '1' page: null forbiddenExample: summary: Forbidden Error value: links: [] data: {} errors: - type: Forbidden description: You do not have permission to access this resource. code: '2' page: null unsupportedMediaTypeExample: summary: Unsupported Media Type Error value: links: [] data: {} errors: - type: invalid-content-type description: >- Invalid content-type. Ensure that your content-type header is set to application/json. notFoundExample: summary: Not Found Error value: links: [] data: {} errors: - type: not-found description: >- RequestId not found. Ensure that the requestId used in the URL path is valid and maps to a previous request that was submitted. tooManyRequestsExample: summary: Too Many Requests Error value: links: [] data: {} errors: - type: rate-limiting description: >- Rate limit exceeded. Wait for the time specified in the Retry-After header before sending another request. internalServerErrorExample: summary: Internal Server Error value: links: [] data: {} errors: - code: '500' type: unexpected-error description: >- Unexpected error. Please contact Bandwidth Support if your requests are receiving this status code for an extended period of time. listEndpointsResponseExample: summary: List Endpoints Paginated Response value: links: - href: >- https://api.bandwidth.com/v2/accounts/5500123/endpoints?type=SIP&status=CONNECTED&limit=2 rel: self method: GET - href: >- https://api.bandwidth.com/v2/accounts/5500123/endpoints?type=SIP&status=CONNECTED&limit=2&afterCursor=TWF5IHRoZSBmb3JjZSBiZSB3aXRoIHlvdQ== rel: next method: GET page: pageSize: 2 totalElements: 10 totalPages: 5 pageNumber: 0 data: - endpointId: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 type: WEBRTC status: CONNECTED creationTimestamp: '2021-01-01T00:00:00Z' expirationTimestamp: '2021-01-02T00:00:00Z' tag: my-tag - endpointId: e-2cb0-4a07-b215-b22865662d85-15ac29a2-1331029c type: WEBRTC status: CONNECTED creationTimestamp: '2021-01-01T00:00:00Z' expirationTimestamp: '2021-01-02T00:00:00Z' tag: my-tag errors: [] createEndpointResponseExample: summary: Create Endpoint Response value: links: - href: >- https://api.bandwidth.com/v2/accounts/5500123/endpoints/e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 rel: endpoint method: GET data: endpointId: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 token: xxxxx.yyyyy.zzzzz type: WEBRTC status: CONNECTED creationTimestamp: '2021-01-01T00:00:00Z' expirationTimestamp: '2021-01-02T00:00:00Z' devices: [] tag: my-tag errors: [] getEndpointResponseExample: summary: Get Endpoint Response value: links: - href: >- https://api.bandwidth.com/v2/accounts/5500123/endpoints/e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 rel: self method: GET data: endpointId: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 type: WEBRTC status: CONNECTED creationTimestamp: '2021-01-01T00:00:00Z' expirationTimestamp: '2021-01-02T00:00:00Z' devices: [] tag: my-tag errors: [] createSipEndpointRequestExample: summary: SIP Endpoint Example value: type: SIP connectionMetadata: ipAddress: 0.0.0.0 port: 3000 credentials: username: username password: '********' uuiHeader: 123456;encoding=jwt direction: INBOUND eventCallbackUrl: https://myEventCallbackUrl.com/callbacks/bandwidth eventFallbackUrl: https://fallback.myEventCallbackUrl.com/callbacks/bandwidth tag: '{"myTag": "myTagValue"}' createWeRtcEndpointExample: summary: WebRTC Endpoint Example value: type: WEBRTC direction: BIDIRECTIONAL eventCallbackUrl: https://myEventCallbackUrl.com/callbacks/bandwidth eventFallbackUrl: https://fallback.myEventCallbackUrl.com/callbacks/bandwidth tag: '{"myTag": "myTagValue"}' updateEndpointBxmlRequestExample: summary: Update Endpoint BXML Request Example value: endpointDisconnectedEventExample: summary: Endpoint Disconnected Event value: endpointId: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 type: WEBRTC status: DISCONNECTED creationTimestamp: '2021-01-01T00:00:00Z' expirationTimestamp: '2021-01-02T00:00:00Z' eventTime: '2021-01-01T00:00:00Z' eventType: DEVICE_DISCONNECTED tag: my-tag badRequestErrorExample: summary: Bad Request Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: invalid_parameter description: accountId must not contain any characters other than numbers. code: '400' source: parameter: accountId unauthorizedErrorExample: summary: Unauthorized Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: unauthorized description: >- The provided credentials are not authorized to access this resource. code: '401' source: header: Authorization forbiddenErrorExample: summary: Forbidden Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: forbidden description: >- The provided credentials are not authorized to access this resource. code: '403' source: header: Authorization notFoundErrorExample: summary: Not Found Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: resource_not_found description: The requested resource was not found. code: '404' source: reference: e-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85 methodNotAllowedErrorExample: summary: Method Not Allowed Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: method_not_allowed description: The requested method is not allowed on this resource. code: '405' source: parameter: accountId unsupportedMediaTypeErrorExample: summary: Unsupported Media Type Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: unsupported_media_type description: The provided media type is not supported. code: '415' source: header: Content-Type tooManyRequestsErrorExample: summary: Too Many Requests Error Example value: links: [] data: null errors: - type: too_many_endpoints description: >- Too many endpoints. Please delete an existing endpoint or wait 24 hours for an endpoint to be removed. serviceUnavailableErrorExample: summary: Service Unavailable Error Example value: links: [] data: null errors: - id: 59512d87-7a92-4040-8e4a-78fb772019b9 type: service_unavailable description: The service is currently unavailable. code: '500' requestBodies: createMessageRequest: content: application/json: schema: $ref: '#/components/schemas/messageRequest' required: true createMultiChannelMessageRequest: content: application/json: schema: $ref: '#/components/schemas/multiChannelMessageRequest' 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/heic: schema: type: string format: binary image/heif: 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/html: 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 video/x-flv: 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' createSyncLookupRequest: description: Synchronous phone number lookup request. required: true content: application/json: schema: $ref: '#/components/schemas/syncLookupRequest' examples: singleNumberRequestExample: $ref: '#/components/examples/singleNumberRequestExample' multipleNumberRequestExample: $ref: '#/components/examples/multipleNumberRequestExample' rcsAgentRequestExample: $ref: '#/components/examples/rcsAgentRequestExample' createAsyncBulkLookupRequest: description: Asynchronous bulk phone number lookup request. required: true content: application/json: schema: $ref: '#/components/schemas/asyncLookupRequest' examples: multipleNumberRequestExample: $ref: '#/components/examples/multipleNumberRequestExample' requestTollFreeVerificationRequest: description: Request for verification of a toll-free phone number. required: true content: application/json: schema: $ref: '#/components/schemas/verificationRequest' updateTollFreeVerificationRequestRequest: description: Update a request for verification of a toll-free phone number. required: true content: application/json: schema: $ref: '#/components/schemas/tfvSubmissionWrapper' verificationWebhookRequest: description: Verification callback status of a toll-free phone number. required: true content: application/json: schema: oneOf: - $ref: '#/components/schemas/verificationWebhook' - $ref: '#/components/schemas/verificationDenialWebhook' - $ref: '#/components/schemas/failureWebhook' - $ref: '#/components/schemas/blockedWebhook' webhookSubscriptionRequest: description: >- Information about a webhook that Bandwidth should send upon the completion of event customer is trying to subscribe to. required: true content: application/json: schema: $ref: '#/components/schemas/webhookSubscriptionRequestSchema' createEndpointRequest: required: true content: application/json: schema: $ref: '#/components/schemas/createEndpointRequest' examples: createWebRtcEndpointRequestExample: $ref: '#/components/examples/createWeRtcEndpointExample' updateEndpointBxmlRequest: required: true content: application/xml: schema: type: string description: >- The BXML document to update the endpoint with. This BXML document will be executed against the endpoint when it is updated. For more information, please refer to our [BXML documentation](/docs/voice/bxml/). examples: updateEndpointBxmlRequestExample: $ref: '#/components/examples/updateEndpointBxmlRequestExample' 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==` OAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://api.bandwidth.com/api/v1/oauth2/token scopes: {} callbacks: inboundCallback: '{inboundCallbackUrl}': post: requestBody: required: true description: >-

This Inbound Message Webhook is an envelope containing either a received (MO) message to your message-enabled Bandwidth telephone number or a multichannel client's response to a suggestion response or location request.

The payload type will be one of message-received, suggestion-response, or location-request-response.

Note that suggestion-response and location-request-response callback types are pertinent only for RBM messages sent from the /messages/multiChannel endpoint.

Please visit Webhooks

content: application/json: schema: $ref: '#/components/schemas/inboundCallback' examples: smsMessageReceivedCallback: $ref: '#/components/examples/smsMessageReceivedCallbackExample' mmsMessageReceivedCallback: $ref: '#/components/examples/mmsMessageReceivedCallbackExample' responses: '200': description: OK '202': description: Accepted statusCallback: '{statusCallbackUrl}': post: requestBody: required: true description: >-

This Outbound Message Webhook is an envelope containing status information regarding a message sent (MT) from your message-enabled Bandwidth telephone number.

The payload type will be one of message-sending, message-delivered, message-failed or message-read.

Note that message-read callbacks are pertinent only for RBM messages sent from the /messages/multiChannel endpoint.

Please visit Webhooks

content: application/json: schema: $ref: '#/components/schemas/statusCallback' examples: messageSendingCallback: $ref: '#/components/examples/messageSendingCallbackExample' smsMessageDeliveredCallback: $ref: '#/components/examples/smsMessageDeliveredCallbackExample' mmsMessageDeliveredCallback: $ref: '#/components/examples/mmsMessageDeliveredCallbackExample' groupMmsMessageDeliveredCallback: $ref: >- #/components/examples/groupMmsMessageDeliveredCallbackExample messageFailedCallback: $ref: '#/components/examples/messageFailedCallbackExample' responses: '200': description: OK '202': description: Accepted tfVerificationStatus: your_url.com/webhookService: post: summary: TFV status updates sent to customer's webhook URL. description: >- Unique webhook URL provided by customers to which Bandwidth sends a POST request to notify customer regarding TFV status updates. operationId: tfvRequest parameters: - description: >- 64-character lowercase hexidecimal HMAC calculated with a shared secret key, the canonicalized request body, and SHA256. It is only included when a shared secret key is set through webhook subscription. example: ca7b9e9816c90d336f5dca529e733354b81535c7af027b81878ac98afb2dbaa2 in: header name: x-bandwidth-signature-hmac-sha256 schema: type: string requestBody: $ref: '#/components/requestBodies/verificationWebhookRequest' responses: '204': $ref: '#/components/responses/noContentResponse' '400': $ref: '#/components/responses/tfvBadRequestResponse' '401': $ref: '#/components/responses/tfvUnauthorizedResponse' '403': $ref: '#/components/responses/tfvForbiddenResponse' '404': $ref: '#/components/responses/tfvNotFoundResponse' '405': $ref: '#/components/responses/tfvNotAllowedResponse' '429': $ref: '#/components/responses/tfvTooManyRequestsResponse' '500': $ref: '#/components/responses/tfvServerErrorResponse' '503': $ref: '#/components/responses/tfvServiceUnavailableResponse' endpointEvent: '{request.body#/eventCallbackUrl}': post: requestBody: content: application/json: schema: $ref: '#/components/schemas/endpointEvent' examples: endpointDisconnectedEventExample: $ref: '#/components/examples/endpointDisconnectedEventExample' responses: '204': description: Event was successfully received.