Skip to main content
Every campaign exposes a live stats endpoint and links each call attempt back to a conversation. Use the stats to watch progress in aggregate, and use the per-contact attempts to drill into individual transcripts and recordings.

Campaign stats

Fetch a snapshot of contact and attempt counts for a campaign.
Requires the campaigns:read or campaigns:manage scope. The X-Anyreach-Org header is only needed for user PATs (pat_); org API keys (ak_) carry their org implicitly. The response groups contacts by lifecycle bucket and reports attempt totals plus current concurrency:

Response fields

active_calls and concurrency_limit together tell you how much headroom the campaign has. When active_calls reaches concurrency_limit, the dialer waits for a call to finish before starting the next one. See Dialing and retries.

Live polling

The campaign Overview tab calls the stats endpoint on load and then polls it every 5 seconds while the campaign status is active and the browser tab is visible. Polling stops when the tab is hidden or the campaign is no longer active, and resumes when the tab becomes visible again. Use the refresh control to fetch on demand at any time.

Attempts and conversations

Each call attempt links to a conversation through its conversation_id. List a campaign’s contacts to see their attempts:
limit defaults to 50 (max 200) and offset defaults to 0. Pass status to filter contacts by bucket. Each contact carries an attempts array, and every attempt includes: Attempts come back oldest-first, so the last entry is the most recent attempt.

One contact’s conversations

When you already know which contact you care about, fetch it directly instead of paging the campaign. The single-contact route returns the same shape as the list, including the attempts array:
{contact_id} accepts either the contact’s UUID or the external_id you supplied when creating it. Pass default as the {campaign_id} for ad-hoc contacts that belong to no campaign — including the one created for you when you enqueue a call through POST /conversations, whose contact_id that call returns.

Conversation outcomes

When an attempt produced a conversation, the contacts list enriches that attempt with its evaluation outcome. For each attempt with a conversation_id, the server looks up completed evaluation runs for that conversation and populates the attempt’s result object, keyed by <metric_key>.<criterion_key>. Attempts whose conversation has no completed evaluation, or no conversation at all, leave result as null. To review the full transcript and recording for any attempt, open the linked conversation by its conversation_id in Conversations.

Conversations

Read transcripts and listen to recordings for every linked conversation.

Dialing and retries

Understand how attempts, retries, and concurrency drive the stats buckets.