API · Event arrivals
GET /admin/events/:slug/arrivals
Returns the same Admission & arrivals report shown below sales on the event overview. A read or write account token can read it. Personal co-organizer tokens can read only currently assigned events. Promoters cannot access organizer arrival reports.
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/club-night/arrivals
The .json suffix is also supported. There are no query parameters, pagination, date filters or write operations. The report becomes available at midnight on the local calendar day of doors_open_at, or starts_at when no door time is specified. It remains available after the event.
Response
This example shows an excerpt of the intervals array. Actual responses include every interval, including zero counts, up to 192 points.
{
"event": { "slug": "club-night", "title": "Club Night" },
"generated_at": "2026-09-08T20:30:00Z",
"timezone": "Europe/Berlin",
"live": true,
"interval_minutes": 15,
"summary": {
"admission_count": 1000,
"redeemed_count": 417,
"remaining_count": 583,
"redemption_rate": 41.7
},
"peak": {
"starts_at": "2026-09-08T19:30:00Z",
"ends_at": "2026-09-08T19:45:00Z",
"redeemed_count": 57
},
"intervals": [
{
"starts_at": "2026-09-08T19:30:00Z",
"ends_at": "2026-09-08T19:45:00Z",
"redeemed_count": 57
}
]
}
| Field | Meaning |
|---|---|
event.slug, event.title |
Event identity. No buyer or admission identifiers are included. |
generated_at |
UTC ISO 8601 timestamp when this report was generated. |
timezone |
IANA venue timezone used for the dashboard labels and admission day. |
live |
true from doors opening, or event start, until the scheduled end; the end itself is excluded. This is independent of shop publication status. |
interval_minutes |
Normally 15. Longer ranges use wider buckets to stay within 192 intervals. |
summary.admission_count |
Recorded check-ins plus valid unused admissions. |
summary.redeemed_count |
Individual admissions checked in. Also equals the sum of all returned interval counts. |
summary.remaining_count |
Valid admissions without a recorded redemption. |
summary.redemption_rate |
Percentage from 0 to 100, rounded to one decimal; 0 when there are no admissions. |
peak |
Interval with the largest count, or null when no arrivals exist. Ties select the earliest interval. |
intervals |
Chronological array of {starts_at, ends_at, redeemed_count} with UTC ISO 8601 timestamps. Each interval includes its start and excludes its end. The current interval can still be incomplete. |
Group members count individually and guest-list admissions are included. Unused cancelled, refunded, archived or otherwise invalid admissions are excluded. Recorded arrivals remain in the history after refunds or archival.
Accepted offline scanner attempts supply their original scan time after synchronization. Other redemptions use the recorded server redemption time. A scanner timestamp later than its synchronization time falls back to the server timestamp. Conflicting and rejected scans do not add another arrival. Early and late check-ins are retained; the returned chart range is not restricted to the scheduled event hours.
This measures ticket check-ins, not current occupancy or departures. Missing scans lead to missing arrivals; no attendance forecast is returned. Organizer guide.
Errors and refreshing
401: missing or invalid Bearer credentials.403: the authenticated role cannot access organizer arrival reports.404: the event is outside the caller’s scope, does not exist, or its local admission day has not begun.
Read this endpoint again when you need fresh data. The dashboard refreshes every 30 seconds while visible, through six hours after the event end. The API itself does not stream or schedule updates.
Assistant, MCP and CLI
The built-in assistant and MCP share the event_arrivals tool. It accepts a required event_title (exact or partial title), returns the same JSON report as text, and reports an error for ambiguous, unavailable or inaccessible events. MCP requires usetix:read; usetix:write is not needed. Co-organizer assignments are enforced when the tool runs.
{
"name": "event_arrivals",
"arguments": { "event_title": "Club Night" }
}
usetix events arrivals club-night
usetix events arrivals club-night --intervals
usetix events arrivals club-night --json
usetix events arrivals club-night --count
--json includes every interval in the CLI’s usual data envelope. --intervals includes the timeline in human-readable output, using the venue timezone and explicit UTC offsets. --count prints summary.redeemed_count. Each invocation makes one request.