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

Terminal
curl "https://vibecode.bitrix24.com/v1/activities/12345/transcript" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
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

javascript
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

javascript
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:

JSON
{
  "success": true,
  "data": {
    "transcription": "Hello, how can I help you?"
  }
}

No transcript yet — transcription is null, the status stays 200:

JSON
{
  "success": true,
  "data": {
    "transcription": null
  }
}

Error response example

403 — no access to the transcript:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ACCESS_DENIED",
    "message": "Access denied",
    "hint": "Access denied to this call transcript. Two possible causes: (1) the Bitrix24 user this call runs as lacks read access to a CRM entity bound to this call activity, or (2) AI call processing is not enabled on this portal. The cause is not determined; check the user's CRM permissions and whether AI call processing (transcription) is turned on.",
    "cause": "unknown",
    "method": "crm.activity.call.getTranscript",
    "fix": { "action": "none" }
  }
}

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, transcription is null with status 200. Retry the request later.

See also