Skip to main content
Once you submit a recording to Shilo, the AI pipeline processes it asynchronously. Retrieving analysis requires polling the appropriate endpoint until the 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 the call_event_id from the 202 response as your identifier:
Once analysis completes and you have retrieved the full call object (which contains the stable Shilo 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

The progress field in the analysis response is an integer from 0 to 100. Keep polling until it equals 100.
While processing (progress < 100):
When complete (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.
Use exponential backoff when polling. Start with a 5-second interval, then double it on each unsuccessful poll up to a maximum of 60 seconds. Most calls complete within a few seconds to a few minutes depending on recording length.

Analysis Fields

rating

The AI’s numeric assessment of the call quality.
  • outcome (number) — Numeric score representing overall call quality or outcome result
  • reasoning (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:
String form:
  • outcome (object | string) — Either an object with a summary field or a plain summary string.
  • outcome.summary (string) — When outcome is 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 calls
  • top_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 call
  • reasoning (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 immediately
  • secondary (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 data
  • client_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 of action_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:
If the transcript is not yet ready, you receive a 409 Conflict response. Wait a moment and retry.
For Shilo accounts connected to Follow Up Boss, only the call and appointment transcript endpoints (GET /api/v1/calls/{identifier}/transcript and GET /api/v1/appointments/{identifier}/transcript) are unsupported and return 403 Forbidden with a message indicating the CRM integration limitation.
The roleplay transcript endpoint, GET /api/v1/roleplays/{identifier}/transcript, remains supported for all integrations, including Follow Up Boss.