Skip to main content
When a client asks “what happened to my leads?”, the answer is on this page. Every call the platform places or answers writes a call record: the timestamp, the agent, the outcome, the recording, the transcript and the cost. Nothing is inferred and nothing is summarised away. You can pull the record for any lead and show it.

What one record holds

GET /api/call-history returns one row per call. The row is the same shape the dashboard’s Calls 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. null means no transcript could be sourced.
  • segments: the same conversation cut into turns, each marked agent or lead with the seconds it starts and ends at, so you can follow the text against the recording. null when timings were not available.
  • fields: the AI-generated fields the agent recorded on this call, as key and value pairs. An empty array means the agent captured none. null means they could not be sourced.
  • transcriptSource: where the transcript came from. stored is our own record. live means it was fetched from the voice platform for this request. unavailable means neither had it, and transcript and fields are both null.
A transcript with 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 on GET /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. GET /api/call-history/filters returns the values you can filter on for your account: the projects, statuses, agents and directions that actually appear in your calls. For one contact’s history, GET /api/contacts/{phoneNumber}/calls returns their calls with an outcome summary. See Contacts.

Test calls in the record

A call to a contact you have marked as your own test lead still appears here. The mark removes it from the performance figures on the dashboard and in Analytics, not from the record. See Test your agent.

Boundaries

  • Two ids, two lookups. id goes to GET /api/call-history/{callId}, callId goes to GET /api/call-history/by-call-id/{callId}.
  • cost is viewer-safe: an agency sees the agency price, a project user sees the project price.
  • Records answer with canonical names. id and agentType are the fields. The storage spellings _id and campaignSystem are not part of the response.
  • The list does not carry the transcript. Fetch the detail for that.

In the API