Bandwidth Recordings API

Manage call recordings including retrieval of recording metadata, audio files, and transcription of recorded audio content.

OpenAPI Specification

bandwidth-recordings-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bandwidth Emergency Calling Available Numbers Recordings API
  description: The Bandwidth Emergency Calling API provides programmatic access to provision and manage 911 endpoints and locations for emergency services routing. It supports Dynamic Location Routing (DLR) for real-time address validation and location updates, ensuring compliance with Kari's Law and RAY BAUM's Act requirements. Bandwidth is the only CPaaS provider that also operates its own emergency services network, providing direct connectivity to public safety answering points (PSAPs) across the United States and Canada.
  version: '1.0'
  contact:
    name: Bandwidth Support
    url: https://support.bandwidth.com
  termsOfService: https://www.bandwidth.com/legal/
servers:
- url: https://dashboard.bandwidth.com/api
  description: Production Server
security:
- basicAuth: []
tags:
- name: Recordings
  description: Manage call recordings including retrieval of recording metadata, audio files, and transcription of recorded audio content.
paths:
  /accounts/{accountId}/calls/{callId}/recordings:
    get:
      operationId: getCallRecordings
      summary: List call recordings
      description: Retrieves a list of all recordings associated with a specific call. Each recording includes metadata such as duration, file format, and media URL for downloading the audio file.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      responses:
        '200':
          description: Recordings retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Recording'
        '401':
          description: Unauthorized
        '404':
          description: Call not found
  /accounts/{accountId}/calls/{callId}/recordings/{recordingId}:
    get:
      operationId: getCallRecording
      summary: Get a specific recording
      description: Retrieves metadata for a specific recording associated with a call.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      - $ref: '#/components/parameters/recordingId'
      responses:
        '200':
          description: Recording metadata retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recording'
        '401':
          description: Unauthorized
        '404':
          description: Recording not found
    delete:
      operationId: deleteCallRecording
      summary: Delete a recording
      description: Permanently deletes a specific call recording and its associated media file.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      - $ref: '#/components/parameters/recordingId'
      responses:
        '204':
          description: Recording deleted successfully
        '401':
          description: Unauthorized
        '404':
          description: Recording not found
  /accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media:
    get:
      operationId: getCallRecordingMedia
      summary: Download recording media
      description: Downloads the audio file for a specific call recording. Returns the binary audio content in the format specified during recording.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      - $ref: '#/components/parameters/recordingId'
      responses:
        '200':
          description: Recording audio file
          content:
            audio/wav:
              schema:
                type: string
                format: binary
            audio/mpeg:
              schema:
                type: string
                format: binary
        '401':
          description: Unauthorized
        '404':
          description: Recording not found
  /accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription:
    post:
      operationId: createRecordingTranscription
      summary: Transcribe a recording
      description: Initiates a transcription job for a specific call recording. The transcription result will be delivered via a webhook callback to the URL specified in the request or the application's default callback URL.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      - $ref: '#/components/parameters/recordingId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranscriptionRequest'
      responses:
        '200':
          description: Transcription initiated
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Recording not found
    get:
      operationId: getRecordingTranscription
      summary: Get recording transcription
      description: Retrieves the transcription result for a specific call recording.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - $ref: '#/components/parameters/callId'
      - $ref: '#/components/parameters/recordingId'
      responses:
        '200':
          description: Transcription retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcription'
        '401':
          description: Unauthorized
        '404':
          description: Transcription not found
  /accounts/{accountId}/recordings:
    get:
      operationId: listAccountRecordings
      summary: List account recordings
      description: Retrieves a list of all recordings across all calls for the account. Supports filtering by date range and pagination.
      tags:
      - Recordings
      parameters:
      - $ref: '#/components/parameters/accountId'
      - name: from
        in: query
        description: Filter recordings created on or after this date
        schema:
          type: string
          format: date-time
      - name: to
        in: query
        description: Filter recordings created on or before this date
        schema:
          type: string
          format: date-time
      - name: minStartTime
        in: query
        description: Minimum start time for filtering recordings
        schema:
          type: string
          format: date-time
      - name: maxStartTime
        in: query
        description: Maximum start time for filtering recordings
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Recordings list retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Recording'
        '401':
          description: Unauthorized
components:
  schemas:
    Recording:
      type: object
      properties:
        recordingId:
          type: string
          description: The unique identifier for the recording
        accountId:
          type: string
          description: The Bandwidth account ID
        callId:
          type: string
          description: The call ID associated with this recording
        applicationId:
          type: string
          description: The application ID
        duration:
          type: string
          description: The duration of the recording in ISO 8601 format
        channels:
          type: integer
          description: The number of audio channels in the recording
        startTime:
          type: string
          format: date-time
          description: The time the recording started
        endTime:
          type: string
          format: date-time
          description: The time the recording ended
        fileFormat:
          type: string
          enum:
          - wav
          - mp3
          description: The audio format of the recording
        status:
          type: string
          enum:
          - complete
          - partial
          - error
          description: The status of the recording
        mediaUrl:
          type: string
          format: uri
          description: The URL to download the recording media
        transcription:
          $ref: '#/components/schemas/Transcription'
    TranscriptionRequest:
      type: object
      properties:
        callbackUrl:
          type: string
          format: uri
          description: The URL to send the transcription completed webhook to
        callbackMethod:
          type: string
          enum:
          - POST
          - GET
          default: POST
          description: The HTTP method for the transcription webhook
        tag:
          type: string
          description: Custom tag for the transcription request
    Transcription:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the transcription
        status:
          type: string
          enum:
          - none
          - available
          - error
          description: The status of the transcription
        completedTime:
          type: string
          format: date-time
          description: The time the transcription was completed
        url:
          type: string
          format: uri
          description: The URL of the transcription result
  parameters:
    recordingId:
      name: recordingId
      in: path
      required: true
      description: The unique identifier for the recording
      schema:
        type: string
    accountId:
      name: accountId
      in: path
      required: true
      description: The unique identifier for the Bandwidth account
      schema:
        type: string
    callId:
      name: callId
      in: path
      required: true
      description: The unique identifier for the call
      schema:
        type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Authentication using your Bandwidth Dashboard API credentials.
externalDocs:
  description: Bandwidth Emergency Calling API Documentation
  url: https://dev.bandwidth.com/docs/emergency/emergencyCallingApi/