Retrieve recordings for conversations
curl --request POST \
--url https://julian.11x.ai/api/v1/recordings \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sequenceIds": [
"call-sequence.xyz123",
"call-sequence.xyz456"
]
}
'import requests
url = "https://julian.11x.ai/api/v1/recordings"
payload = { "sequenceIds": ["call-sequence.xyz123", "call-sequence.xyz456"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sequenceIds: ['call-sequence.xyz123', 'call-sequence.xyz456']})
};
fetch('https://julian.11x.ai/api/v1/recordings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"recordings": [
{
"sequenceId": "call-sequence.xyz123",
"calls": [
{
"callId": "call.abc123",
"recordingStatus": "downloaded",
"url": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"durationSeconds": 184,
"scheduledAt": "2023-11-07T05:31:56Z",
"stepNumber": 1,
"transcript": "[Agent] (0:00): Hi, is this Victor?"
}
]
}
],
"notFound": [
"<string>"
]
}Recordings
Retrieve recordings for conversations
Retrieve recording URLs for every call in the requested conversation sequences, optionally with each call’s transcript.
Two limits apply. At most 100 sequence IDs per request, and those sequences may contain at most 500 calls in total — a few long sequences can exceed the call limit while well under the sequence limit, in which case split the IDs across requests. Nothing is truncated silently.
Sequences you cannot see are reported in notFound rather than failing the request.
POST
/
recordings
Retrieve recordings for conversations
curl --request POST \
--url https://julian.11x.ai/api/v1/recordings \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"sequenceIds": [
"call-sequence.xyz123",
"call-sequence.xyz456"
]
}
'import requests
url = "https://julian.11x.ai/api/v1/recordings"
payload = { "sequenceIds": ["call-sequence.xyz123", "call-sequence.xyz456"] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({sequenceIds: ['call-sequence.xyz123', 'call-sequence.xyz456']})
};
fetch('https://julian.11x.ai/api/v1/recordings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"recordings": [
{
"sequenceId": "call-sequence.xyz123",
"calls": [
{
"callId": "call.abc123",
"recordingStatus": "downloaded",
"url": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"durationSeconds": 184,
"scheduledAt": "2023-11-07T05:31:56Z",
"stepNumber": 1,
"transcript": "[Agent] (0:00): Hi, is this Victor?"
}
]
}
],
"notFound": [
"<string>"
]
}Authorizations
Organization API key. Get it from the 11x team or from the platform.
Body
application/json
Conversation sequence IDs, as returned by GET /conversations/search/{agentId}. Duplicates are collapsed.
Required array length:
1 - 100 elementsExample:
[
"call-sequence.xyz123",
"call-sequence.xyz456"
]
When true, include each call's transcript text alongside its recording.