List watchlist entries
Returns your watchlist entries, newest first. Expired entries aren't returned.
Scope: watchlist: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: watchlist:read
limit?integerHow many items to return, from 1 to 100.
1 <= value <= 10025cursor?stringThe next_cursor from the previous page. Leave it out for the first page.
length <= 512q?stringMatches the start of any word in the entry's name or company. Case-insensitive.
2 <= length <= 100site_id?stringOnly entries that apply at this site (including entries for all sites).
^site_[0-7][0-9a-hjkmnp-tv-z]{25}$"site_01kjpt3yw0fz0v414608h9x65s"A page of watchlist entries.
application/json- response
data*array<>next_cursor*|Pass this as cursor to get the next page. null on the last page.
"b3BhcXVlLWN1cnNvcg"has_more*booleancurl -X GET 'https://api.agoohq.com/v1/watchlist?limit=25'{ "data": [ { "id": "watch_01m0fqhdr0e31ray1qxa2x5vtk", "name": "Kojo Badu", "phone": null, "has_id_number": true, "reason": "Former employee. Site access withdrawn on 20 August.", "site_ids": [], "expires_at": null, "created_by": "person_01kjsexjt0e9rt8r69a60jzx03", "created_at": "2026-08-20T14:00:00Z" } ], "next_cursor": null, "has_more": false}Approve or decline a claim for an open shift POST
Approves or declines a claim waiting for a decision, all its approval steps at once. Approving gives the open shift to the person who asked (other claims for it are `taken`), and they're told; it's refused with `conflict` when they now have a shift at that time or are on leave. A decline needs a `note` they see. A claim that isn't waiting returns `invalid_state`. `shift_claim.approved` or `shift_claim.declined` fires. **Scope:** `attendance:manage` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.
Add a watchlist entry POST
Adds a person to your watchlist. Give a name and a phone number, an ID number or both. When a visit is created for, or someone checks in as, a person matching an entry (on name, allowing for spelling differences, phone number or ID number), Agoo holds the visit, alerts your security team silently and fires `watchlist.matched`. The visitor, the host and the kiosk aren't told why. Every watchlist read and change is in the audit trail. Leave `site_ids` empty to watch for the person at every site. **Scope:** `watchlist:write` · **Plan:** Pro and Enterprise in live mode; every plan in test mode.