> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siro.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Download redacted recording audio (signed URL)

> Returns a short-lived signed URL to download the **redacted** recording audio (typically `.m4a`). Call **`POST`** with an empty body after the recording exists. **Authentication:** user-scoped **`x-siro-auth-token`** (OAuth access token). This is **not** the org-wide upload flow—use **`POST /v1/core/recordings/signed-urls`** on the Recordings API host when uploading **before** a recording id exists.

**Authentication:** User-scoped API — send your **OAuth access token** in header **`x-siro-auth-token`** (machine-to-machine or user-delegated token, not the organization API key).

Returns a **short-lived signed URL** to fetch the **redacted** recording audio (typically **`.m4a`**). Call **`POST`** with **no body**; path **`id`** is the **Siro recording id** (same as [Get recording](/api-references/get-recording-details)).

**Not upload:** To upload audio **before** a recording exists, use **`POST /v1/core/recordings/signed-urls`** on the Recordings upload flow — see [Post recordings signed urls](/api-references/post-recordings-signed-urls).


## OpenAPI

````yaml specs/openapi-internalApi.json post /v1/core/recordings/{id}/signedUrl
openapi: 3.0.0
info:
  version: 1.0.0
  title: Swagger API
servers:
  - url: https://api.siro.ai/
    description: Siro API Gateway
security: []
externalDocs:
  description: View the raw OpenAPI Specification in JSON format
  url: /swagger.json
paths:
  /v1/core/recordings/{id}/signedUrl:
    post:
      summary: Create signed URL for redacted recording audio (download)
      description: >-
        Returns a short-lived signed URL to download the **redacted** recording
        audio (typically `.m4a`). Call **`POST`** with an empty body after the
        recording exists. **Authentication:** user-scoped
        **`x-siro-auth-token`** (OAuth access token). This is **not** the
        org-wide upload flow—use **`POST /v1/core/recordings/signed-urls`** on
        the Recordings API host when uploading **before** a recording id exists.
      parameters:
        - schema:
            type: string
            description: >-
              Siro internal id of the recording (same id as GET
              /v1/core/recordings/{id}).
          required: true
          description: >-
            Siro internal id of the recording (same id as GET
            /v1/core/recordings/{id}).
          name: id
          in: path
      responses:
        '200':
          description: Create a new signed URL for a recording
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      error:
                        type: boolean
                        description: Whether an error occurred
                      url:
                        type: string
                        description: Signed URL for the audio file
                      expiration:
                        type: number
                        description: Expiration timestamp for the URL
                      errorMessage:
                        type: string
                        description: >-
                          Additional information describing the error when error
                          is true
                    required:
                      - error
                required:
                  - data
        '400':
          description: Bad Request - Invalid parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Error message
                required:
                  - error
        '401':
          description: Unauthorized - User not authenticated
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Authentication error message
                required:
                  - error
        '403':
          description: Forbidden - User does not have access
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Authorization error message
                required:
                  - error
        '404':
          description: Not Found - Resource not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Resource not found error message
                required:
                  - error
        '422':
          description: Unprocessable Content - The request failed validation checks
          content:
            application/json:
              schema:
                type: object
                properties:
                  issues:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        expected:
                          type: string
                        received:
                          type: string
                        path:
                          type: array
                          items:
                            anyOf:
                              - type: string
                              - type: number
                        message:
                          type: string
                      required:
                        - code
                        - path
                        - message
                  name:
                    type: string
                    enum:
                      - ZodError
                required:
                  - issues
                  - name
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Internal server error message
                required:
                  - error
      security:
        - SiroAuthToken: []
components:
  securitySchemes:
    SiroAuthToken:
      type: apiKey
      in: header
      name: x-siro-auth-token
      description: >-
        OAuth access token for user-scoped requests (Authorization Code or
        machine-to-machine). Send header `x-siro-auth-token:
        <oauth-access-token>`. Not an organization API key.
      x-default: <oauth-access-token>

````