Loading documentation…
{{ error }}
Ticket check-in
Record attendance through the active event-scoped check-in action.
Authenticate the scanner
A server integration can use HTTP Basic for an organizer with access to the event. The existing check-in UI can establish an event-scoped access-code session through its rate-limited exchange. Do not send raw access_code to the scan endpoint; that request is rejected. Keep organizer credentials on your server.
Check in a ticket
POST /{event_id}/acs/scan.json with Content-Type: application/json and {"scan":"attendee_uuid"}. The UUID identifies an order line, not the order or product.
{"scan":"44444444-4444-4444-8444-444444444444"}A successful matching ticket returns an array like:
[{"id":"44444444-4444-4444-8444-444444444444","scanned":false,"checkedin":1}]scanned reports whether it was already checked in before this request. checkedin:1 reports the resulting state. An empty array means no eligible matching ticket was found. Use the response to distinguish first check-in, repeat check-in and no match.
Handle scan errors
400
invalid_ticket_id: missing/malformed UUID.403
authentication_failed: event access/session missing or raw access code submitted; invalid Basic credentials can use the shared legacy 403 format.405: unsupported method; use POST.
415
json_required: incorrect content type.500
scan_failed: recording failed.
Read existing attendee scan state with include=scan on the ordinary attendee list. The active endpoint is documented in the reference; retired scanner/scanapi routes are not integration alternatives.
Remove or export scans
POST /{event_id}/acs/delete.json with {"Acs":{"id":"scan_record_id"}} removes an authorized event scan. This ID identifies the scan record. Its legacy success body has no reliable structured success flag; re-read attendance state afterwards.
CSV attendance and no-show downloads are available through /{event_id}/acs/export_to/csv and /{event_id}/acs/noshow_export_to/csv. See Exports for handling file responses and personal data.