call.ended and the analysis API.
Use them for CSAT scores, lead qualification fields, booking details, follow-up flags — anything you’d otherwise parse out of transcripts by hand.
Create a takeaway
name keys the result in payloads, so it must be identifier-shaped (csat, lead_quality, booking-details) and is immutable after creation. The schema is validated at create time — a broken schema fails here, not after every call.
Optional fields: prompt (extra extraction instructions) and model (per-takeaway LLM override — e.g. a cheap model for a boolean, a strong one for complex extraction).
Attach to agents
Reference takeaways by id in the agent’s analysis config:Results
Each attached takeaway is extracted in its own concurrent LLM call after the call ends (a few seconds, in the background). Results land keyed by name:GET /v1/calls/{call_id}/analysis. Extracted JSON is validated against your schema (with one automatic retry on mismatch); a failed extraction is reported as {"valid": false, "error": "..."} rather than silently dropped — one bad takeaway never affects the others.
Manage
The older inline
analysis.structured_extraction_schema keeps working
(result at analysis.structured_data), but takeaways are the recommended
path — reusable, multiple per agent, independently validated.