Skip to main content
POST
/
tickets
/
{ticket_id}
/
scan
Scan ticket
curl --request POST \
  --url https://api.tickable.io/tickets/{ticket_id}/scan \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "scanner_id": "e5f6a7b8-9012-4c3d-4e5f-6a7b8c9d0e1f"
}
'
{
  "ticket_id": "c3d4e5f6-7890-4a1b-2c3d-4e5f6a7b8c9d",
  "status": "valid",
  "scanned_before": false,
  "event": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "title": "Summer Festival 2026",
    "location": "Vondelpark"
  },
  "timeslot": {
    "title": "Morning Session",
    "starts_at": "2026-06-15T10:00:00Z",
    "ends_at": "2026-06-15T12:00:00Z"
  },
  "ticket_type": {
    "id": "b2c4e6a8-1234-4f5a-9c8d-0e1f2a3b4c5d",
    "name": "Early Bird",
    "price": 2500
  },
  "owner_name": "Jane Doe",
  "owner_email": "jane@example.com",
  "seat": "A12",
  "scanned_at": "2026-06-15T14:30:00Z",
  "cancelled_at": null,
  "related_tickets": [
    {
      "id": "a1b2c3d4-5678-4e9f-0a1b-2c3d4e5f6a7b",
      "seat": "A13",
      "owner_name": "John Doe",
      "owner_email": "john@example.com",
      "scanned_at": null,
      "cancelled_at": null,
      "ticket_type_name": "Early Bird"
    }
  ]
}

Authorizations

Authorization
string
header
required

Pass as Authorization: Bearer {token}. Accepts either an OAuth2 JWT access token or an API key (tk_live_...) created from the Tickable dashboard.

Path Parameters

ticket_id
string<uuid>
required

Ticket ID

Example:

"c3d4e5f6-7890-4a1b-2c3d-4e5f6a7b8c9d"

Body

application/json
scanner_id
string<uuid> | null

Scanner ID. If omitted, the first active scanner in your organization is used.

Example:

"e5f6a7b8-9012-4c3d-4e5f-6a7b8c9d0e1f"

Response

Scan result

ticket_id
string<uuid>
required
Example:

"c3d4e5f6-7890-4a1b-2c3d-4e5f6a7b8c9d"

status
enum<string>
required
Available options:
valid,
scanned,
cancelled,
not_allowed
Example:

"valid"

scanned_before
boolean
required
Example:

false

event
object
required
timeslot
object
required
ticket_type
object
required
owner_name
string
required
Example:

"Jane Doe"

owner_email
string
required
Example:

"jane@example.com"

seat
string | null
required
Example:

"A12"

scanned_at
string | null
required
Example:

"2026-06-15T14:30:00Z"

cancelled_at
string | null
required
Example:

null

Other tickets in the same order, if the event has order scanning enabled