> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# start_recording

> Start recording an active call.

Start recording an active call.

### Schema

```yaml
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
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).
      tags:
        - subpackage_recordings
      parameters:
        - name: AccountSid
          in: path
          description: The Project ID that uniquely identifies the Account.
          required: true
          schema:
            $ref: '#/components/schemas/uuid'
        - name: CallSid
          in: path
          description: The unique identifier for the call.
          required: true
          schema:
            $ref: '#/components/schemas/uuid'
      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'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCallRecordingRequest'
servers:
  - url: https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01
    description: SignalWire Compatibility API
components:
  schemas:
    uuid:
      type: string
      format: uuid
      description: Universal Unique Identifier.
      title: uuid
    CreateCallRecordingRequestRecordingChannels:
      type: string
      enum:
        - mono
        - dual
      default: mono
      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`.
      title: CreateCallRecordingRequestRecordingChannels
    CreateCallRecordingRequestRecordingStatusCallbackMethod:
      type: string
      enum:
        - GET
        - POST
      default: POST
      description: >-
        Whether the request to `RecordingStatusCallback` URL is a `GET` or a
        `POST`. Default is `POST`.
      title: CreateCallRecordingRequestRecordingStatusCallbackMethod
    CreateCallRecordingRequestRecordingTrack:
      type: string
      enum:
        - inbound
        - outbound
        - both
      default: 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`.
      title: CreateCallRecordingRequestRecordingTrack
    CreateCallRecordingRequestTrim:
      type: string
      enum:
        - trim-silence
        - do-not-trim
      default: do-not-trim
      description: >-
        Whether leading and trailing silence is trimmed from a recording.
        Default is `do-not-trim`.
      title: CreateCallRecordingRequestTrim
    CreateCallRecordingRequest:
      type: object
      properties:
        RecordingChannels:
          $ref: '#/components/schemas/CreateCallRecordingRequestRecordingChannels'
          default: mono
          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`.
        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.
        RecordingStatusCallbackEvent:
          type: string
          default: completed
          description: >-
            The different recording statuses. To specify multiple events,
            separate with a space. Valid values: completed, in-progress, absent.
            Default is `completed`.
        RecordingStatusCallbackMethod:
          $ref: >-
            #/components/schemas/CreateCallRecordingRequestRecordingStatusCallbackMethod
          default: POST
          description: >-
            Whether the request to `RecordingStatusCallback` URL is a `GET` or a
            `POST`. Default is `POST`.
        RecordingTrack:
          $ref: '#/components/schemas/CreateCallRecordingRequestRecordingTrack'
          default: 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`.
        Trim:
          $ref: '#/components/schemas/CreateCallRecordingRequestTrim'
          default: do-not-trim
          description: >-
            Whether leading and trailing silence is trimmed from a recording.
            Default is `do-not-trim`.
      description: Request body for creating a call recording.
      title: CreateCallRecordingRequest
    CallRecordingResponseChannel:
      type: string
      enum:
        - '1'
        - '2'
      description: >-
        The number of channels in a recording (singular key). Returns '1' for
        mono or '2' for stereo.
      title: CallRecordingResponseChannel
    CallRecordingResponseChannels:
      type: string
      enum:
        - '1'
        - '2'
      description: >-
        The number of channels in a recording. Returns '1' for mono or '2' for
        stereo.
      title: CallRecordingResponseChannels
    RecordingSource:
      type: string
      enum:
        - DialVerb
        - Conference
        - OutBoundApi
        - Trunking
        - RecordVerb
        - StartCallRecordingApi
        - StartConferenceRecording
      description: Recording source.
      title: RecordingSource
    RecordingStatus:
      type: string
      enum:
        - queued
        - in-progress
        - paused
        - resumed
        - completed
        - absent
        - stopped
      description: Recording status.
      title: RecordingStatus
    RecordingSubresourceUris:
      type: object
      properties:
        transcriptions:
          type: string
          description: The URI for transcriptions.
      required:
        - transcriptions
      description: Recording subresource URIs.
      title: RecordingSubresourceUris
    CallRecordingResponse:
      type: object
      properties:
        sid:
          $ref: '#/components/schemas/uuid'
          description: The unique identifier for the recording.
        account_sid:
          $ref: '#/components/schemas/uuid'
          description: >-
            The unique identifier for the account that is associated with this
            recording.
        api_version:
          type: string
          description: The version of the SignalWire API.
        call_sid:
          oneOf:
            - $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.
        conference_sid:
          oneOf:
            - $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.
        channel:
          $ref: '#/components/schemas/CallRecordingResponseChannel'
          description: >-
            The number of channels in a recording (singular key). Returns '1'
            for mono or '2' for stereo.
        channels:
          $ref: '#/components/schemas/CallRecordingResponseChannels'
          description: >-
            The number of channels in a recording. Returns '1' for mono or '2'
            for stereo.
        date_created:
          type: string
          description: The date, in RFC 2822 format, this recording was created.
        date_updated:
          type: string
          description: The date, in RFC 2822 format, this recording was updated.
        start_time:
          type:
            - string
            - 'null'
          description: The time, in RFC 2822 format, this recording started.
        end_time:
          type:
            - string
            - 'null'
          description: The time, in RFC 2822 format, this recording ended.
        duration:
          type: integer
          description: The length, in seconds, of the recording.
        price:
          type:
            - string
            - 'null'
          description: The cost for the recording.
        price_unit:
          type: string
          description: The currency of the price of the recording.
        source:
          $ref: '#/components/schemas/RecordingSource'
          description: How the recording was made.
        status:
          $ref: '#/components/schemas/RecordingStatus'
          description: The status of the recording.
        error_code:
          type:
            - string
            - 'null'
          description: Further details about a failed recording.
        uri:
          type: string
          description: The URI of the recording.
        subresource_uris:
          $ref: '#/components/schemas/RecordingSubresourceUris'
          description: Subresource URIs.
        encryption_details:
          type:
            - string
            - 'null'
          description: Encryption details. Always null.
        trim:
          type: string
          description: Whether leading and trailing silence is trimmed from a recording.
      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
      description: Response containing a single call recording.
      title: CallRecordingResponse
    CompatibilityErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: Error code.
        message:
          type: string
          description: Error message.
        more_info:
          type: string
          description: URL for more information about the error.
        status:
          type: integer
          description: HTTP status code.
      required:
        - code
        - message
        - more_info
        - status
      description: Error response model.
      title: CompatibilityErrorResponse

```

## **Response Example**

### Response (200)

```json
{
  "sid": "19e436af-5688-4307-b03b-bdb2b42b8142",
  "account_sid": "720796a0-8ee9-4350-83bd-2d07a3121f1e",
  "api_version": "2010-04-01",
  "call_sid": "43bb71ee-553f-4074-bb20-8e2747647cce",
  "conference_sid": null,
  "channel": "1",
  "channels": "1",
  "date_created": "Tue, 25 Sep 2018 23:00:00 +0000",
  "date_updated": "Wed, 26 Sep 2018 23:00:04 +0000",
  "start_time": "Tue, 25 Sep 2018 23:00:00 +0000",
  "end_time": "Wed, 26 Sep 2018 23:00:04 +0000",
  "duration": 4,
  "price": "-0.0025",
  "price_unit": "USD",
  "source": "DialVerb",
  "status": "queued",
  "error_code": null,
  "uri": "/api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings/19e436af-5688-4307-b03b-bdb2b42b8142.json",
  "subresource_uris": {
    "transcriptions": "/api/laml/2010-04-01/Accounts/720796a0-8ee9-4350-83bd-2d07a3121f1e/Recordings/19e436af-5688-4307-b03b-bdb2b42b8142/Transcriptions.json"
  },
  "encryption_details": null,
  "trim": "do-not-trim"
}
```

## **Example**

```python {9}
from signalwire.rest import RestClient

client = RestClient(
    project="your-project-id",
    token="your-api-token",
    host="your-space.signalwire.com",
)

recording = client.compat.calls.start_recording("CA...")
```