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

# Get recording signed URL

> Generate a temporary signed URL for a call recording

Returns a time-limited signed URL for the conversation's call recording.

## Authentication

<ParamField header="X-API-Key" type="string" required>
  Project API key for this organization and project. Format: `bot_live_…`
</ParamField>

## Path parameters

<ParamField path="organization_id" type="string" required>
  Organization ID. Must match the API key.
</ParamField>

<ParamField path="project_id" type="string" required>
  Project ID. Must match the API key.
</ParamField>

<ParamField path="conversation_id" type="string" required>
  Conversation ID.
</ParamField>

## Response

<ResponseField name="recording_url" type="string" required>
  Signed HTTPS URL for the recording media.
</ResponseField>

<ResponseField name="expires_in" type="integer" required>
  URL lifetime in seconds.
</ResponseField>

<ResponseField name="message" type="string">
  Confirmation message.
</ResponseField>

## Errors

<ResponseField name="401" type="Unauthorized">
  Missing, invalid, or revoked API key.
</ResponseField>

<ResponseField name="403" type="Forbidden">
  API key is not authorized for this organization or project.
</ResponseField>

<ResponseField name="404" type="Not Found">
  Recording not available or not found.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://backend.botcadence.com/organizations/ORG_ID/projects/PROJECT_ID/conversations/CONV_ID/recording-url" \
    -H "X-API-Key: bot_live_YOUR_KEY"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    `https://backend.botcadence.com/organizations/${organizationId}/projects/${projectId}/conversations/${conversationId}/recording-url`,
    { headers: { "X-API-Key": process.env.BOTCADENCE_API_KEY } }
  );
  const { recording_url, expires_in } = (await response.json()).data;
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.get(
      f"https://backend.botcadence.com/organizations/{organization_id}/projects/{project_id}/conversations/{conversation_id}/recording-url",
      headers={"X-API-Key": os.environ["BOTCADENCE_API_KEY"]},
  )
  data = response.json()["data"]
  print(data["recording_url"], data["expires_in"])
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "status": "success",
    "message": "Recording URL generated successfully",
    "data": {
      "recording_url": "https://storage.example.com/recordings/conv.mp3?X-Amz-Signature=...",
      "expires_in": 3600,
      "message": "Signed URL generated successfully"
    },
    "status_code": 200
  }
  ```

  ```json 404 theme={null}
  {
    "status": "error",
    "message": "Recording not available or not found",
    "data": null,
    "status_code": 404
  }
  ```
</ResponseExample>
