Skip to main content
GET
Get campaign stats
Progress counters for one campaign, plus the diagnostic fields that answer “why is nothing happening right now”. Counts are computed live at request time, not read from a cache, so they always agree with GET /campaigns/{id}/leads. Required scope: campaigns:read.

Path parameters

There is no query parameter and no request body.

Response fields

Contact statuses in leads_by_status

pending, scheduled, dialing and awaiting_disposition are the live states. When all four reach zero the campaign auto-completes.

Reading last_tick_result

This is the field to check first when a running campaign appears idle. Most values are normal pacing, not faults. If last_tick_at is more than a few minutes old on a running campaign, the campaign is not being evaluated at all — that is an infrastructure problem rather than a configuration one.

Example request

Example response

attempts_total exceeds completed_success + exhausted because retries count as attempts: with max_attempts: 3, one contact can contribute up to three.

Errors

Authorizations

Authorization
string
header
required

Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.

Path Parameters

id
string<uuid>
required

Response

Campaign stats

Live progress for one campaign, plus the engine's own account of what it last did. When a running campaign appears to be doing nothing, last_tick_result and last_error are the fields that explain it.

campaign_id
string<uuid>
status
string

Same value as Campaign.status.

leads_by_status
object

Contact counts keyed by CampaignContact.status. Statuses with no contacts are omitted.

Example:
leads_total
integer
attempts_total
integer

Every dial attempt this campaign has made, including platform-side retries.

attempts_in_flight
integer

Attempts not yet settled — dialing, live, or awaiting classification.

calls_today
integer

Calls handed to the queue in the current day window.

max_calls_per_day
integer
spent_cents
integer
reserved_cents
integer
estimate_cents
integer | null
budget_cents
integer | null
last_tick_at
string<date-time> | null
last_tick_result
string | null

Machine-readable reason the last evaluation admitted, or did not admit, a call.

last_error
string | null
company_id
string<uuid>