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"
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;
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"])
{
"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
}
{
"status": "error",
"message": "Recording not available or not found",
"data": null,
"status_code": 404
}
Conversations
Get recording signed URL
Generate a temporary signed URL for a call recording
GET
/
organizations
/
{organization_id}
/
projects
/
{project_id}
/
conversations
/
{conversation_id}
/
recording-url
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"
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;
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"])
{
"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
}
{
"status": "error",
"message": "Recording not available or not found",
"data": null,
"status_code": 404
}
Returns a time-limited signed URL for the conversation’s call recording.
Authentication
string
required
Project API key for this organization and project. Format:
bot_live_…Path parameters
string
required
Organization ID. Must match the API key.
string
required
Project ID. Must match the API key.
string
required
Conversation ID.
Response
string
required
Signed HTTPS URL for the recording media.
integer
required
URL lifetime in seconds.
string
Confirmation message.
Errors
Unauthorized
Missing, invalid, or revoked API key.
Forbidden
API key is not authorized for this organization or project.
Not Found
Recording not available or not found.
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"
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;
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"])
{
"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
}
{
"status": "error",
"message": "Recording not available or not found",
"data": null,
"status_code": 404
}

