## TL;DR
Transcripts take time to generate after a call ends, and the API reports them unavailable until processing finishes. 'Unavailable' usually means 'not yet', not 'never'. Wait for processing, then retry. If it's still unavailable hours later, the call wasn't transcribed at all: too short, consent-blocked, or excluded by settings.

## The query

```text
chorus api transcript unavailable
```

## Use this when

- Chorus transcript endpoints return unavailable
- Transcripts work for some calls but not others
- Recently recorded calls lack transcripts


## Not for

- Chorus authentication errors
- Call recording failures
- Chorus API rate limits


## Steps

### 1. Check the call's processing status

Look up the call in Chorus and read whether transcription is pending, complete, or skipped. Pending means wait; skipped means it will never arrive. Don't poll aggressively; check on a sane interval.

Expected output: the call's transcription status: pending, complete, or skipped.

### 2. Wait out the processing window

Transcription typically completes within an hour of the call, longer for long calls. Build your integration to retry with backoff over a few hours, not to fail on the first unavailable.

Expected output: the transcript appearing after the normal processing delay.

### 3. Check why some calls never transcribe

If specific calls stay unavailable, look for the pattern: very short calls, calls without consent, or calls excluded by team settings. These are policy, not bugs.

Expected output: the exclusion reason for never-transcribed calls.

### 4. Verify the credential's access

If no calls return transcripts, the API credential may lack access to the team's calls. Confirm the credential's scope covers the calls you're querying.

Expected output: the credential confirmed with access to the call data.

## Variant phrasings

### chorus transcript not ready api

Steps 1 and 2: status first, then patient retries.

### chorus api no transcript

Step 3's exclusion check for the permanent cases.

## Why it happens

Transcription is async by nature: the call ends, then speech processing runs. APIs that expose the transcript have to answer during the gap, and 'unavailable' is the honest answer. Integrations written against instant data treat the gap as an error; integrations written against a pipeline treat it as a state.

## Edge cases

- Polling every minute for hours burns quota. Back off exponentially.
- Transcripts can be edited or redacted after generation. Cache with a refresh policy.
- Multi-language calls may transcribe partially. Check language settings for mixed calls.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_VS1AQKU7Y74olsB8A5AW4w
