What you get out of the box
Every call record has these fields populated automatically:
These are the field names on the call record returned by
GET /v1/calls/:id and GET /v1/calls. In the webhook payload the same data is delivered under flat, renamed keys: summary, sentiment, successful, and extracted.
Custom data extraction
Beyond the defaults, you define exactly which fields to pull from each call. Setdata_extraction_fields on the agent — an array of field definitions:
null — the agent won’t invent data.
Field types
Field properties
The result lands in
extracted_data:
On the API, your custom fields are keyed under
extracted_data. In the webhook payload the same fields arrive under extracted.When analysis runs
- Inbound, outbound, and batch calls — all directions, always.
- Calls with real conversation — if the caller spoke fewer than 2 turns or fewer than 10 words total (hang-ups, voicemail), the AI pass is skipped to save cost. Defaults fall back to a short summary and
call_successful: false. - Asynchronously, after the call ends — by the time your webhook fires (~60s later), all fields are populated.
How extraction works under the hood
Analysis runs in two stages:- Base analysis — always runs. One AI call returns
call_summary,caller_sentiment,call_successful. - Custom extraction — only runs if the agent has
data_extraction_fields. A second AI call returns your custom fields.