Account and status

The account itself, and three views of what is going on: right now, whether the plumbing is working, and everything in order.

Read the account

GET/v1/accountany key

Who you are to us: the plan, the caps, where alerts go, and a few switches.

Response

idstring
The account id. It appears on every webhook.
namestring
The company name.
plan"watch" | "guard" | "enterprise"
plan_statusstring | null
active, past_due, or null with no subscription.
numbers / number_limitinteger / integer | null
How many numbers are protected and the plan's cap; null when there is none.
alert_webhook_url / alert_sms_tostring | null
Where alerts go.
api_key_hintstring
The first and last characters of the account's original key, to tell keys apart.
has_subscriptionboolean
spam_thresholdinteger
Where a spam score starts counting as spam for you, 1 to 100. Colours the dashboard; changes no decision.
hangupboolean
On Guard, whether we end a call that crosses the line. On by default.
verified_phonesstring[]
Phones the account has proved with a code. Only these can receive texts and calls.
featuresobject
gate: whether the plan includes the gate and the live monitor.

Update the account

PATCH/v1/accountfull key

Send only what changes. Alert destinations and the name are the usual reasons; the two switches are for an admin. The response is the account as the read returns it, except when only the alert destinations changed, when it is those two fields.

Request body

alert_webhook_urlstring | null
Where alerts are posted. Must be https. null switches the webhook off. See webhooks.
alert_sms_tostring | null
The phone for text alerts. Must be one of verified_phones. Guard.
namestring
The company name, up to 120 characters. Admins.
spam_thresholdinteger
1 to 100. Admins.
hangupboolean
Whether Guard ends calls. Admins.

Errors

webhook_must_be_https400
A URL that is not https.
invalid_sms_number400
A phone we could not parse.
phone_unverified403
A phone the account has not proved. The number is in the body.
invalid_spam_threshold400
Outside 1 to 100.
role_required403
A member changing something reserved for admins.

Right now

GET/v1/statusany key

What is happening this minute: calls that are open, the last hour on each number, the blocks in force, the twenty most recent alerts. One call, made for a wallboard.

Response

planstring
numbersinteger
Protected numbers.
open_callsobject[]
Each: call_id, number, caller, direction, started_at, open_s, score, action, and from the live monitor user_turns, agent_turns, interruptions, live_flags, live_score.
last_hourobject[]
Per number: calls, rejected, review.
blocksobject[]
As on blocks.
recent_alertsobject[]
The last twenty, oldest form: id, type, key, payload, created_at. For the full shape use alerts.

Is it working

GET/v1/healthany key

Not whether we are up, but whether your integration is. Are the platform connections importing, has one been failing and since when, did the last alerts actually land, and how much has arrived today.

Response

connectionsobject[]
Each platform connection: provider, label, status, last_error, last_polled_at, since_poll in seconds, imported in total, calls_24h, and failing, the open incident or null.
incidentsobject[]
The last twenty sync incidents: started_at, ended_at, attempts, last_error, seconds.
deliveriesobject[]
The last twenty alerts with delivered_webhook and delivered_sms. Empty until a channel is set.
channelsobject
webhook and sms: whether each is set.
callsobject
day, hour, open.
poll_interval_secinteger
How often connections are read. 60.

Everything, in order

GET/v1/activityany key

One feed, newest first: alerts, flagged calls grouped by caller and hour, gate challenges and how they went, blocks lifting, volume spikes opening and closing, imports failing and recovering, numbers and connections added. What the dashboard's Activity page draws.

Query parameters

limitintegerdefault 80
At most 300.

Response

eventsobject[]
Each: kind, at, subtype, key, data. The kinds and what data holds are below.
kindsubtypedata
alertThe alert type.The alert's data.
calls_flaggedThe worst action in the group.caller, number, direction, count, reject, first, last, cost.
gatepass, fail or timeout.caller, number, attempt, input, latency_ms.
block_liftedThe block type.pattern, violations, since.
syncfailing or recovered.provider, label, started, ended, attempts, error.
volumeongoing or ended.number, started, ended, peak, expected, callers.
number_addednumbernumber, label.
connection_addedThe provider.provider, label, imported.
Keys, team members, invitations, the plan and deleting the account are the dashboard's: they need a signed-in person, not a key, and are not reachable from here on purpose.