What one record holds
GET /api/call-history returns one row per call. The row is the same shape the
dashboard’s Call History page reads.
The full record
The two detail endpoints return everything above plus the conversation itself:transcript: the full text of the call. An empty string means nobody spoke.nullmeans no transcript could be sourced.segments: the same conversation cut into turns, each markedagentorleadwith the seconds it starts and ends at, so you can follow the text against the recording.nullwhen timings were not available.fields: the AI-generated fields the agent recorded on this call, askeyandvaluepairs. An empty array means the agent captured none.nullmeans they could not be sourced.transcriptSource: where the transcript came from.storedis our own record.livemeans it was fetched from the voice platform for this request.unavailablemeans neither had it, andtranscriptandfieldsare bothnull.
fields: null is a valid partial answer: we held the text,
and the voice platform could not be reached for the rest.
Finding the calls you want
Every filter onGET /api/call-history is a query parameter. Combine as many
as you need.
Sort with
sort as field.direction, for example dateTime.desc or
duration.asc. Page with page and limit. The response carries
pagination with page, limit, total and totalPages.
The filters are the query parameters on GET /api/call-history; project ids
come from GET /api/v2/projects.
For one contact’s history, GET /api/contacts/{phoneNumber} with
idType=phone, the locationId and include=calls returns their calls with
an outcome summary. See Contacts.
Use Transcript search for words and phrases across
saved calls. It returns short evidence excerpts without fetching every detail.
Test calls in the record
A call to a contact you have marked with Mark as internal still appears here. The mark removes it from the performance figures on the dashboard and in Analytics, not from the record, and its cost still counts. See Test your agent.Boundaries
- Two ids, one lookup.
idgoes toGET /api/call-history/{callId}as is;callIdgoes to the same path withidType=call.idTypeisautoby default and accepts either; sendrecordorcallto insist on one. costis viewer-safe: an agency sees the agency price, a project user sees the project price, and a rep sees no cost.- Records answer with
idandagentType. No other spelling of either field is part of the response. - The list does not carry the transcript. Fetch the detail for that.
In the API
- List calls; its query parameters are the filters, and project ids come from List projects
- Get call by record
id, or by the voice platform’scallIdwithidType=call - Get contact with
include=callsfor one person’s calls - Every field above is defined in the Glossary
Related
- What your agent records explains the outcome and the AI-generated fields.
- Metrics and how they are calculated rolls these records up.
