List check-ins
Check-ins
List check-ins
GET
List check-ins
Returns the global check-in feed, newest first, optionally narrowed
by the filters below. Records are anonymized: each carries the
fully expanded location (with its restaurant), but no user field, so
the feed cannot be attributed to members. For a member’s own history
use
Auth: API key in
Combinations AND together.
There is no user field.
GET /users/me/check_ins.
Tasting note - All filters are optional. A bare
GET /check_ins
returns the full paginated set (~15.7k records in staging), so page
deliberately when you omit filters.X-API-Key — no user token needed. Two requirements
beyond the header:
- The key must carry the
read:checkinsscope. Key scopes are set in the body of the key-mint request; the app’sallowed_scopesare not inherited, so a key minted with an empty body gets403here even if its app listsread:checkins. - Send a browser-like
User-Agent(e.g. a Mozilla string), or the WAF responds 403 with an HTML body.
| Auth state | Response |
|---|---|
No X-API-Key header | 401 MISSING_API_KEY |
Key without read:checkins | 403 insufficient_scope |
Key with read:checkins | 200 |
Filters
| Parameter | Type | Notes |
|---|---|---|
restaurant | UUID | Returns check-ins at any location of this restaurant. |
location | UUID | Returns check-ins at this specific location. |
created_after | ISO 8601 timestamp | Visits created on/after this instant. Epoch seconds rejected. |
created_before | ISO 8601 timestamp | Visits created before this instant. |
page | integer | Zero-indexed. Default 0. |
page_size | integer | Default 50. |
?restaurant={uuid}&created_after=2026-06-01T00:00:00Z
returns only that restaurant’s check-ins since the cutoff.
Tasting note - The filter key is the bare resource name, same trap
as
/memberships: restaurant,
not restaurant_id. Unknown filter names (restaurant_id,
location_id, user, user_id) are silently ignored and return the
unfiltered set. A well-formed UUID that matches nothing is not an
error — it returns 200 with an empty list and total_count: 0.Example
Response
Schema
| Field | Type | Notes |
|---|---|---|
id | UUID | Check-in id. |
object | string | Always "check_in". |
location | object | Fully expanded location, including its nested restaurant, neighborhood, address, and coordinate. |
blackbird_pay_enabled | boolean | Whether Blackbird Pay was available for the visit. |
created_at | ISO 8601 timestamp | Visit start — this is the timestamp the date filters apply to. |
ended_at | ISO 8601 timestamp | null | Visit end. null for ongoing visits. |
Errors
400 - bad timestamp format
400 - malformed UUID
401 - missing API key
403 - key missing the scope
See also
- List my check-ins: a member’s own history, via their OAuth token.
- Check-in feed: render a feed from one filtered call.