Skip to main content
A call represents a single conversation between a FormBharo agent and a person. Every time someone talks to an agent, FormBharo creates a call record and writes answers into it as the conversation progresses. You can read a call record at any point — during the conversation or after — to see what has been collected so far.

What a call contains

string
required
Unique identifier for this call. Use it to fetch answers, the transcript, or to patch form data.
string
How the call was started — for example, web, phone, or api.
string
The phone number of the caller, if available. May be null for web or API-initiated calls.
object
The answers collected, keyed by question name. Values are the raw answers; see Answers for how to interpret them correctly.
object
Per-field status object indicating whether each question was answered, skipped, or empty. Always read this alongside form_data.
number
The number of questions that have been answered so far.
number
The total number of questions in the agent. Use filled_fields / total_fields to calculate completion progress.
string
Overall outcome of the call. One of in_progress, complete, screened_out, or failed. See The four call statuses below.
number
Unix timestamp of the last time answers were written to this record — not when the call started. Use with caution when sorting by recency.
number
Total length of the conversation in seconds.
object
Breakdown of the compute cost for this call.
boolean
true if an audio recording of the call is available.
boolean
true if a text transcript of the call is available. Fetch it with the transcript endpoint listed below.
number
Average time in seconds between the caller finishing speaking and the agent acknowledging. A voice quality metric.
number
Average time in seconds between acknowledgement and the agent’s full reply. A voice quality metric.

The four call statuses

The call is still active, or it ended so recently that FormBharo has not yet finalised the record. Poll again in a few seconds if you see this status after a call you expect to have finished.
Every required question was answered before the call ended. This is the fully successful outcome — form_data contains a value for every field in the agent.
An answer matched one of the end_call_values configured on a question, which caused the agent to end the call early by design. FormBharo counts screened_out as a successful outcome in analytics. Use this status to identify callers who were intentionally disqualified.
The call ended before the form was finished for an unplanned reason — the caller hung up, a network error occurred, or the agent hit a timeout. Check form_data and form_status to see how far the conversation progressed before it failed.

Reading calls

FormBharo exposes four endpoints for reading call data:

All calls for one agent

Returns every call made against a specific agent, sorted newest first. Use this when you want results scoped to a single form.

Calls across all agents

Returns calls from every agent in your workspace. Use this endpoint for polling — it lets you process new answers without looping over each agent separately.

Just the answers (no key required)

Returns only the form_data object for one call. This route requires no API key, making it safe to embed in client-side or webhook contexts.

Transcript

Returns the full text of everything said during the call, turn by turn. Only available when has_transcript is true.
created_at is the timestamp of the last answer write, not when the call started. Sorting by created_at gives you calls ordered by most recent activity, which may differ from chronological start order — especially for long calls or calls with late-stage answers.