progress field reaches 100, then reading the structured result. This guide covers the polling pattern, every analysis field, and how to retrieve the full call transcript.
Analysis Endpoints
All three recording types expose identical analysis and transcript endpoints:Choosing Your Identifier
Right after submitting a call, use thecall_event_id from the 202 response as your identifier:
id), you can switch to the plain UUID for any subsequent lookups. You can also use external_recording_id:{your-recording-id} at any time if you prefer to reference calls by your own IDs.
Polling Until Complete
Theprogress field in the analysis response is an integer from 0 to 100. Keep polling until it equals 100.
progress < 100):
progress == 100), processing has finished. Individual sub-objects (action_items, coaching, disposition, objections, rating, speakers, and summary) are optional and may still be null or omitted, so check for presence on each field before reading it.
Analysis Fields
rating
The AI’s numeric assessment of the call quality.
outcome(number) — Numeric score representing overall call quality or outcome resultreasoning(string) — Human-readable explanation of the score
summary
A concise narrative of the call. The outcome field may be either an object (commonly { "summary": string }) or a plain string, so clients must handle both shapes.
Object form:
outcome(object | string) — Either an object with asummaryfield or a plain summary string.outcome.summary(string) — Whenoutcomeis an object, the natural-language summary of the conversation.
coaching
Structured coaching feedback for the agent.
possible_improvements(string[]) — Specific behaviors to work on in future callstop_moments(string[]) — Positive highlights worth reinforcing in coaching sessions
disposition
The AI’s classification of the call outcome.
outcomes(string[]) — One or more outcome labels for the callreasoning(string) — Explanation for the classification
objections
Objections the prospect raised during the conversation.
outcomes(string[]) — List of objection strings identified by the AI
action_items
Follow-up tasks extracted from the call, split by priority.
primary(string[]) — High-priority tasks the agent should act on immediatelysecondary(string[]) — Supporting or lower-priority follow-up actions
speakers
AI-resolved speaker identities.
user_name(string) — Resolved name of the agent, reconciled against your user dataclient_name(string) — Resolved name of the client or prospect
Complete Example Response
The following payload shows what a fully populated response can look like. It is an illustrative example, not a guaranteed shape: any ofaction_items, coaching, disposition, objections, rating, speakers, and summary may be null or omitted, and summary.outcome may be an object or a string.
Retrieving the Transcript
Once speaker resolution is complete, you can retrieve the full sanitized transcript with AI-resolved speaker labels:409 Conflict response. Wait a moment and retry.
The roleplay transcript endpoint,
GET /api/v1/roleplays/{identifier}/transcript, remains supported for all integrations, including Follow Up Boss.