For AI agents: markdown of this page — /docs-content-en/entities/activities/transcript.md documentation index — /llms.txt
CRM call transcripts
GET /v1/activities/:activityId/transcript
Returns the ready-made AI transcript of a client call logged in CRM as a Call activity and processed in your Bitrix24 account by CoPilot. The method only reads an existing transcript — it does not trigger generation.
Bitrix24 API: crm.activity.call.getTranscript
Scope: crm
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
activityId (path) |
number | yes | ID of the call activity. List: GET /v1/activities |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/activities/12345/transcript" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/activities/12345/transcript" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/activities/12345/transcript', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { data } = await res.json()
if (data.transcription === null) {
// no transcript yet — this is not an error
} else {
console.log(data.transcription)
}
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/activities/12345/transcript', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
transcription |
string | null | The full transcript text. A null value comes back with status 200 when there is no transcript for the call yet — the call was not processed or processing did not finish. Check data.transcription === null |
Response example
Transcript is ready:
{
"success": true,
"data": {
"transcription": "Hello, how can I help you?"
}
}
No transcript yet — transcription is null, the status stays 200:
{
"success": true,
"data": {
"transcription": null
}
}
Error response example
403 — no access to the transcript:
{
"success": false,
"error": {
"code": "BITRIX_ACCESS_DENIED",
"message": "Access denied",
"hint": "Access denied to this call transcript. Two possible causes: (1) the API key owner lacks read access to a CRM entity bound to this call activity, or (2) AI call processing is not enabled on this portal. Verify the user's CRM permissions, and confirm AI call processing (transcription) is turned on."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 403 | BITRIX_ACCESS_DENIED |
One code for two causes: no rights to the CRM entity the call is bound to, or AI call processing is disabled on the portal. The hint field names both |
| 403 | SCOPE_DENIED |
The API key has no crm scope |
| 400 | INVALID_PARAMS |
activityId is not a positive integer |
| 401 | TOKEN_MISSING |
The API key has no tokens configured |
| 404 | ENTITY_NOT_FOUND |
No activity with this activityId, or it has no CRM bindings |
Full list of common API errors — Errors.
Known specifics
- The transcript is available only if the key has read access to at least one CRM entity — a deal, lead, contact or company — the call is bound to. AI call processing (CoPilot) must also be enabled in your Bitrix24 account.
- The transcript does not appear instantly: Bitrix24 builds it after the call ends. While processing is not finished,
transcriptionisnullwith status200. Retry the request later.