---
description: "Record authorized ticket check-in, interpret repeat scans, remove scans and export attendance."
group: "Resources"
order: 24
---

# Ticket check-in

Record attendance through the active event-scoped check-in action.

## Authenticate the scanner {#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 {#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 {#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 {#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](/en-us/docs/exports.md) for handling file responses and personal data.
