Get a roll call
Returns one roll call with everyone in its snapshot and whether they are accounted for. Poll it, or listen
for roll_call.updated, to show a live board.
Scope: rollcalls:read · Plan: Pro and Enterprise in live mode; every plan in test mode.
AuthorizationBearer <token>Send Authorization: Bearer <token> on every request. The token is one of:
| Prefix | What it is | Where it may be used |
|---|---|---|
agoo_sk_live_ | Secret key, live mode | Your servers only |
agoo_sk_test_ | Secret key, test mode | Your servers only |
agoo_pk_live_ | Publishable key, live mode | Browsers and apps: create pre-registrations and bookings, read public booking types (with their intake questions) and their free slots, read the visit types open for pre-registration with their public forms. Never lists people. |
agoo_pk_test_ | Publishable key, test mode | As above, in test mode |
Admins create keys in Console → Developers → API keys and choose each key's scopes. A key is shown once. Never put a secret key in a URL, a browser or a mobile app.
Scope: rollcalls:read
rollcall_id*stringThe roll call's ID.
^rollcall_[0-7][0-9a-hjkmnp-tv-z]{25}$"rollcall_01m4x13bw0fjmr5ekjkshzkke6"The roll call with its people.
application/json- response
An emergency or drill roll call at one site.
id*RollCallIdA roll call ID (TypeID with the rollcall prefix).
^rollcall_[0-7][0-9a-hjkmnp-tv-z]{25}$"rollcall_01m4x13bw0fjmr5ekjkshzkke6"site_id*SiteIdA site ID (TypeID with the site prefix).
^site_[0-7][0-9a-hjkmnp-tv-z]{25}$"site_01kjpt3yw0fz0v414608h9x65s"kind*string"drill""emergency"status*RollCallStatus"active""closed"message*|The message sent with the "I'm safe" link.
counts*started_at*stringdate-timestarted_by*|The person who started it. null when started with an API key.
^person_[0-7][0-9a-hjkmnp-tv-z]{25}$closed_at*|date-timeclosed_by*|^person_[0-7][0-9a-hjkmnp-tv-z]{25}$entries*array<>curl -X GET 'https://api.agoohq.com/v1/roll-calls/rollcall_01m4x13bw0fjmr5ekjkshzkke6'{ "id": "rollcall_01m4x13bw0fjmr5ekjkshzkke6", "site_id": "site_01kjpt3yw0fz0v414608h9x65s", "kind": "drill", "status": "active", "message": "Fire drill. Leave by the nearest exit and go to the car park assembly point.", "counts": { "total": 46, "accounted_for": 41, "missing": 5 }, "started_at": "2026-10-14T11:00:00Z", "started_by": "person_01kjsexjt0e9rt8r69a60jzx03", "closed_at": null, "closed_by": null, "entries": [ { "kind": "visitor", "visit_id": "visit_01m4k5z4j0fxbte6sn6e8tpgza", "person_id": null, "name": "Ama Owusu", "status": "accounted_for", "accounted_at": "2026-10-14T11:03:12Z", "confirmed_via": "link" }, { "kind": "employee", "visit_id": null, "person_id": "person_01kjw4mg80efgb5aqbsqnxhtbh", "name": "Nii Armah", "status": "missing", "accounted_at": null, "confirmed_via": null } ]}Start a roll call POST
Starts a roll call at a site, for example from your fire alarm panel. Agoo takes a snapshot of everyone on site (checked-in visitors and contractors, and clocked-in employees) and, with `notify` (the default), sends each of them an "I'm safe" link by push, WhatsApp or SMS. Marshals can then account for people in the Workspace app. - Fires `roll_call.started`, then `roll_call.updated` as people are accounted for. - A site can have one active roll call at a time; starting another returns `conflict`. - In test mode, messages go to the console's test outbox. **Scope:** `rollcalls:write` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.
Close a roll call POST
Closes an `active` roll call and fires `roll_call.closed`. The final counts and list are kept for your records. A roll call that is already closed returns `invalid_state`. **Scope:** `rollcalls:write` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.