SignalWire Recordings API

Manage call recordings.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/signalwire-recordings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

signalwire-recordings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Signalwire Recordings API
  version: 1.0.0
  description: 'Operations tagged Recordings across 2 of this provider''s published API definitions: signalwire-compatibility-openapi.yml, signalwire-rest-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{space_name}.signalwire.com/api/laml/2010-04-01
  description: SignalWire Compatibility API
  variables:
    space_name:
      default: YOUR_SPACE
      description: Your SignalWire Space name
- url: https://{space_name}.signalwire.com
  description: SignalWire API
  variables:
    space_name:
      default: '{Your_Space_Name}'
      description: Your SignalWire Space name
security:
- SignalWireBasicAuth: []
tags:
- name: Recordings
  description: Manage call recordings.
  externalDocs:
    url: https://signalwire.com/docs/compatibility-api/rest
    description: Developer documentation on the Compatibility REST API
paths:
  /Accounts/{AccountSid}/Calls/{CallSid}/Recordings:
    post:
      operationId: create_recording
      summary: Create a Recording
      description: 'Create a recording.


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/CallsAccountSidPath'
      - $ref: '#/components/parameters/CallSidPathForRecording'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallRecordingResponse'
        '400':
          description: The request was invalid or cannot be processed. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '404':
          description: The requested resource was not found. Please verify the resource identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '422':
          description: The request could not be processed due to validation errors. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '503':
          description: The service is temporarily unavailable. Please try again later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      tags:
      - Recordings
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateCallRecordingRequest'
    servers:
    - url: https://{space_name}.signalwire.com/api/laml/2010-04-01
      description: SignalWire Compatibility API
      variables:
        space_name:
          default: YOUR_SPACE
          description: Your SignalWire Space name
  /Accounts/{AccountSid}/Calls/{CallSid}/Recordings/{Sid}:
    post:
      operationId: update_recording
      summary: Update a Recording
      description: 'Pause, resume or stop a Recording. You can control what happens while recording is paused (replace pause with silence or skip it).


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/CallsAccountSidPath'
      - $ref: '#/components/parameters/CallSidPathForRecording'
      - $ref: '#/components/parameters/CallSidPath'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallRecordingResponse'
        '400':
          description: The request was invalid or cannot be processed. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '404':
          description: The requested resource was not found. Please verify the resource identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '422':
          description: The request could not be processed due to validation errors. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '503':
          description: The service is temporarily unavailable. Please try again later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      tags:
      - Recordings
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateCallRecordingRequest'
    servers:
    - url: https://{space_name}.signalwire.com/api/laml/2010-04-01
      description: SignalWire Compatibility API
      variables:
        space_name:
          default: YOUR_SPACE
          description: Your SignalWire Space name
  /Accounts/{AccountSid}/Recordings:
    get:
      operationId: list_recordings
      summary: List all Recordings
      description: 'List all recordings. Results are returned as a paginated list ordered by creation date (newest first).


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/RecordingsAccountSidPath'
      - name: DateCreated
        in: query
        required: false
        description: Filter by recordings created on this exact date (RFC 2822 format).
        schema:
          type: string
        explode: false
      - name: DateCreated<
        in: query
        required: false
        description: Filter by recordings created before this date (RFC 2822 format).
        schema:
          type: string
        explode: false
      - name: DateCreated>
        in: query
        required: false
        description: Filter by recordings created after this date (RFC 2822 format).
        schema:
          type: string
        explode: false
      - name: CallSid
        in: query
        required: false
        description: Filter by recordings associated with a specific call.
        schema:
          $ref: '#/components/schemas/uuid'
        explode: false
      - name: ConferenceSid
        in: query
        required: false
        description: Filter by recordings associated with a specific conference.
        schema:
          $ref: '#/components/schemas/uuid'
        explode: false
      - name: Page
        in: query
        required: false
        description: The page number to retrieve (zero-indexed).
        schema:
          type: integer
          format: int32
          minimum: 0
          default: 0
        explode: false
      - name: PageSize
        in: query
        required: false
        description: The number of results per page. Default is 50, maximum is 1000.
        schema:
          type: integer
          format: int32
          minimum: 1
          maximum: 1000
          default: 50
        explode: false
      - name: PageToken
        in: query
        required: false
        description: Token for cursor-based pagination. Required when navigating to pages beyond the first.
        schema:
          type: string
        explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingListResponse'
        '400':
          description: The request was invalid or cannot be processed. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '422':
          description: The request could not be processed due to validation errors. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      tags:
      - Recordings
    servers:
    - url: https://{space_name}.signalwire.com/api/laml/2010-04-01
      description: SignalWire Compatibility API
      variables:
        space_name:
          default: YOUR_SPACE
          description: Your SignalWire Space name
  /Accounts/{AccountSid}/Recordings/{Sid}:
    get:
      operationId: retrieve_recording
      summary: Retrieve a Recording
      description: 'Retrieve a single recording media or its metadata.


        This endpoint supports two different access methods with different authentication requirements:


        ## Public Access (No Authentication Required)


        Recording audio files can be accessed directly without authentication. This is useful for external applications

        to embed recording URLs without exposing SignalWire API credentials. SignalWire recording URLs are long

        and random, making them difficult to guess or exploit unless you reveal the URL.


        **Retrieve WAV file**


        When a recording URI has no extension or a `.wav` extension, the request

        will return a binary WAV version of the recording file.


        `GET https://example.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Recordings/{Sid}`


        `GET https://example.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Recordings/{Sid}.wav`


        **Retrieve MP3 file**


        Setting an extension of ".mp3" on the URI returns a binary MP3 version

        of the recording. For example:


        `GET https://example.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Recordings/{Sid}.mp3`


        ## Authenticated Access (Voice Scope Required)


        **Retrieve Metadata**


        A recording''s metadata, such as duration, cost, time, can be returned by

        setting the Recording URI''s extension to `.json`. This requires authentication

        with a Voice-scoped API token.


        `GET https://example.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Recordings/{Sid}.json`


        #### Permissions


        The API token used to authenticate must have the following scopes enabled to make a successful request: _Voice_.


        This permission is only required for authenticated requests to retrieve recording metadata (.json extension).


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/RecordingsAccountSidPath'
      - $ref: '#/components/parameters/RecordingSidPath'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingResponse'
        '400':
          description: The request was invalid or cannot be processed. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '404':
          description: The requested resource was not found. Please verify the resource identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      tags:
      - Recordings
    delete:
      operationId: delete_recording
      summary: Delete a Recording.
      description: 'Delete recording. If the delete is successful, a 204 response, with no body, will be returned.


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/RecordingsAccountSidPath'
      - $ref: '#/components/parameters/RecordingSidPath'
      responses:
        '204':
          description: 204 No Content response.
        '400':
          description: The request was invalid or cannot be processed. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '404':
          description: The requested resource was not found. Please verify the resource identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '422':
          description: The request could not be processed due to validation errors. Check the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      tags:
      - Recordings
    servers:
    - url: https://{space_name}.signalwire.com/api/laml/2010-04-01
      description: SignalWire Compatibility API
      variables:
        space_name:
          default: YOUR_SPACE
          description: Your SignalWire Space name
  /api/relay/rest/recordings:
    get:
      operationId: list_call_recordings
      summary: List recordings
      description: 'Returns a list of your recordings.


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordingListResponse_2'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode401'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode404'
        '422':
          description: The request failed validation. See errors for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.ValidationError'
        '500':
          description: An internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode500'
      tags:
      - Recordings
    servers:
    - url: https://{space_name}.signalwire.com
      description: SignalWire API
      variables:
        space_name:
          default: '{Your_Space_Name}'
          description: Your SignalWire Space name
  /api/relay/rest/recordings/{id}:
    get:
      operationId: get_call_recording
      summary: Get recording
      description: 'Retrieves the details of a recording.


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/RecordingPathID'
      responses:
        '200':
          description: Recording model. A recording is associated with exactly one source type (PSTN, SIP, WebRTC, or Relay conference).
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PstnRecording'
                - $ref: '#/components/schemas/SipRecording'
                - $ref: '#/components/schemas/WebRtcRecording'
                - $ref: '#/components/schemas/ConferenceRecording'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode401'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode404'
        '422':
          description: The request failed validation. See errors for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.ValidationError'
        '500':
          description: An internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode500'
      tags:
      - Recordings
    delete:
      operationId: delete_call_recording
      summary: Delete recording
      description: 'Deletes a recording.


        #### Permissions


        The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).'
      parameters:
      - $ref: '#/components/parameters/RecordingPathID'
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode401'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode404'
        '422':
          description: The request failed validation. See errors for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.ValidationError'
        '500':
          description: An internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Types.StatusCodes.StatusCode500'
      tags:
      - Recordings
    servers:
    - url: https://{space_name}.signalwire.com
      description: SignalWire API
      variables:
        space_name:
          default: '{Your_Space_Name}'
          description: Your SignalWire Space name
webhooks:
  recordingStatusCallback:
    post:
      operationId: recording_status_callback
      summary: Recording status callback
      description: 'Payload sent by SignalWire to your `RecordingStatusCallback` URL when a recording status event occurs.


        Recordings are not always available immediately — especially at high call volumes. This callback lets

        your app react as soon as a recording is ready, whether that means uploading it to external storage,

        sending it via email, or forwarding the URL via SMS.


        Configure `RecordingStatusCallback` when

        [creating a call via the API](/docs/compatibility-api/rest/calls/create-a-call) or when using

        [Dial](/docs/compatibility-api/cxml/reference/voice/dial),

        [Conference](/docs/compatibility-api/cxml/reference/voice/conference), or

        [Record](/docs/compatibility-api/cxml/reference/voice/record).


        Use `RecordingStatusCallbackEvent` to request callbacks for specific events. If omitted, only the

        `completed` event is sent. Possible values: `in-progress`, `completed`, `absent`.


        | Status | Description |

        |--------|-------------|

        | `in-progress` | The recording has begun. |

        | `completed` | The file is available for access. |

        | `absent` | The recording was too short or the call was silent — no audio was detected. |


        Status callbacks are advisory, best-effort notifications — delivery can be delayed or fail silently, so don''t gate time-critical actions on receiving one. See [Status callback reliability](/docs/platform/webhooks#status-callback-reliability).'
      parameters: []
      responses:
        '200':
          description: Webhook received
      tags:
      - Recordings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordingStatusCallbackPayload'
      security:
      - {}
    servers:
    - url: https://{space_name}.signalwire.com/api/laml/2010-04-01
      description: SignalWire Compatibility API
      variables:
        space_name:
          default: YOUR_SPACE
          description: Your SignalWire Space name
components:
  schemas:
    Recording:
      type: object
      required:
      - sid
      - account_sid
      - api_version
      - call_sid
      - conference_sid
      - channel
      - channels
      - date_created
      - date_updated
      - start_time
      - end_time
      - duration
      - price
      - price_unit
      - source
      - status
      - error_code
      - uri
      - subresource_uris
      - encryption_details
      - trim
      properties:
        sid:
          allOf:
          - $ref: '#/components/schemas/uuid'
          description: The unique identifier for the recording.
          examples:
          - 19e436af-5688-4307-b03b-bdb2b42b8142
        account_sid:
          allOf:
          - $ref: '#/components/schemas/uuid'
          description: The unique identifier for the account that is associated with this recording.
          examples:
          - 720796a0-8ee9-4350-83bd-2d07a3121f1e
        api_version:
          type: string
          description: The version of the SignalWire API.
          examples:
          - '2010-04-01'
        call_sid:
          anyOf:
          - $ref: '#/components/schemas/uuid'
          - type: 'null'
          description: The unique identifier for the call that is associated with this recording. Null if this is a conference recording.
          examples:
          - 43bb71ee-553f-4074-bb20-8e2747647cce
        conference_sid:
          anyOf:
          - $ref: '#/components/schemas/uuid'
          - type: 'null'
          description: The unique identifier for the conference that is associated with this recording. Null if this is a call recording.
          examples:
          - null
        channel:
          type: string
          enum:
          - '1'
          - '2'
          description: The number of channels in a recording (singular key). Returns '1' for mono or '2' for stereo.
          examples:
          - '1'
        channels:
          type: string
          enum:
          - '1'
          - '2'
          description: The number of channels in a recording. Returns '1' for mono or '2' for stereo.
          examples:
          - '1'
        date_created:
          type: string
          description: The date, in RFC 2822 format, this recording was created.
          examples:
          - Tue, 25 Sep 2018 23:00:00 +0000
        date_updated:
          type: string
          description: The date, in RFC 2822 format, this recording was updated.
          examples:
          - Wed, 26 Sep 2018 23:00:04 +0000
        start_time:
          anyOf:
          - type: string
          - type: 'null'
          description: The time, in RFC 2822 format, this recording started.
          examples:
          - Tue, 25 Sep 2018 23:00:00 +0000
        end_time:
          anyOf:
          - type: string
          - type: 'null'
          description: The time, in RFC 2822 format, this recording ended.
          examples:
          - Wed, 26 Sep 2018 23:00:04 +0000
        duration:
          type: integer
          format: int32
          minimum: 0
          description: The length, in seconds, of the recording.
          examples:
          - 4
        price:
          anyOf:
          - type: string
          - type: 'null'
          description: The cost for the recording.
          examples:
          - '-0.0025'
        price_unit:
          type: string
          description: The currency of the price of the recording.
          examples:
          - USD
        source:
          allOf:
          - $ref: '#/components/schemas/RecordingSource'
          description: How the recording was made.
        status:
          allOf:
          - $ref: '#/components/schemas/RecordingStatus'
          description: The status of the recording.
        error_code:
          anyOf:
          - type: string
          - type: 'null'
          description: Further details about a failed recording.
          examples:
          - null
        uri:
          type: string
          description: The URI of the recording.
          examples:
          - /api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings/19e436af-5688-4307-b03b-bdb2b42b8142.json
        subresource_uris:
          allOf:
          - $ref: '#/components/schemas/RecordingSubresourceUris'
          description: Subresource URIs.
        encryption_details:
          anyOf:
          - type: string
          - type: 'null'
          description: Encryption details. Always null.
          examples:
          - null
        trim:
          type: string
          description: Whether leading and trailing silence is trimmed from a recording.
          examples:
          - do-not-trim
      unevaluatedProperties:
        not: {}
      description: Recording model.
    uuid:
      type: string
      format: uuid
      description: Universal Unique Identifier.
    RecordingListResponse:
      type: object
      required:
      - uri
      - first_page_uri
      - next_page_uri
      - previous_page_uri
      - page
      - page_size
      - recordings
      properties:
        uri:
          type: string
          description: The URI of the current page.
          examples:
          - /api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings?Page=0&PageSize=50
        first_page_uri:
          type: string
          description: The URI of the first page.
          examples:
          - /api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings
        next_page_uri:
          anyOf:
          - type: string
          - type: 'null'
          description: The URI of the next page. Null if there are no more pages.
          examples:
          - /api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings?Page=1&PageSize=50&PageToken=PA19e436af-5688-4307-b03b-bdb2b42b8142
        previous_page_uri:
          anyOf:
          - type: string
          - type: 'null'
          description: The URI of the previous page. Null if this is the first page.
          examples:
          - null
        page:
          type: integer
          format: int32
          description: The current page number (zero-indexed).
          examples:
          - 0
        page_size:
          type: integer
          format: int32
          description: The number of items per page.
          examples:
          - 50
        recordings:
          type: array
          items:
            $ref: '#/components/schemas/Recording'
          description: List of recordings.
      unevaluatedProperties:
        not: {}
      description: Response containing a list of recordings.
    RecordingSubresourceUris:
      type: object
      required:
      - transcriptions
      properties:
        transcriptions:
          type: string
          description: The URI for transcriptions.
          examples:
          - /api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings/19e436af-5688-4307-b03b-bdb2b42b8142/Transcriptions.json
      unevaluatedProperties:
        not: {}
      description: Recording subresource URIs.
    RecordingSource:
      type: string
      enum:
      - DialVerb
      - Conference
      - OutBoundApi
      - Trunking
      - RecordVerb
      - StartCallRecordingApi
      - StartConferenceRecording
      description: Recording source.
    CreateCallRecordingRequest:
      type: object
      properties:
        RecordingChannels:
          type: string
          enum:
          - mono
          - dual
          description: The number of channels in the recording. Can be `mono` (both legs of call recorded under one channel into one recording file) or `dual` (each leg of call recorded in separate channels into one recording file). Default is `mono`.
          examples:
          - mono
          default: mono
        RecordingStatusCallback:
          type: string
          format: uri
          description: The URL to request to when recording is available. See the [Recording status callback](/docs/compatibility-api/rest/recordings/webhooks/recording-status-callback) webhook for the payload your URL will receive.
          examples:
          - https://your-api-endpoint.com/recording-status
        RecordingStatusCallbackEvent:
          type: string
          description: 'The different recording statuses. To specify multiple events, separate with a space. Valid values: completed, in-progress, absent. Default is `completed`.'
          examples:
          - completed
          default: completed
        RecordingStatusCallbackMethod:
          type: string
          enum:
          - GET
          - POST
          description: Whether the request to `RecordingStatusCallback` URL is a `GET` or a `POST`. Default is `POST`.
          examples:
          - POST
          default: POST
        RecordingTrack:
          type: string
          enum:
          - inbound
          - outbound
          - both
          description: Specifies whether to record the `inbound` audio to SignalWire from the called party or the `outbound` audio from SignalWire to the called party or `both` the inbound and outbound audio. Default is `both`.
          examples:
          - both
          default: both
        Trim:
          type: string
          enum:
          - trim-silence
          - do-not-trim
          description: Whether leading and trailing silence is trimmed from a recording. Default is `do-not-trim`.
          examples:
          - do-not-trim
          default: do-not-trim
      unevaluatedProperties:
        not: {}
      description: Request body for creating a call recording.
    RecordingStatusCallbackPayload:
      type: object
      required:
      - AccountSid
      - CallSid
      - Recordi

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/signalwire/refs/heads/main/openapi/signalwire-recordings-api-openapi.yml