Search Documentation
Search for a documentation page...
Tickets API
REST API endpoints for buyer ticket lookup and attendee management.
Tickets are issued for event products. These endpoints power no-login buyer access (airline-PNR style) using the short access code from the confirmation email plus the purchase email, and a per-seat attendee view via the token embedded in each attendee link/QR code.
For security, ticket lookup responds with a uniform 404 for an unknown code, an email mismatch, or an order with no tickets — the endpoint never reveals whether a code exists.
Get Tickets
Looks up an order's tickets by the access code (from the ticket confirmation email) and the purchase email. Returns the order's ticket lines with event details and per-seat attendee entries. Each seat carries its own token for the attendee link.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Buyer email — must match the order's customer email |
Response
A 404 is returned for an unknown code, email mismatch, or an order with no tickets.
Update Tickets
Buyer bulk-edit of attendee names and emails, verified by access code plus purchase email (same uniform 404 on mismatch). Seat tokens not belonging to the order are silently ignored. Returns the updated ticket bundle (same shape as GET).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Buyer email — must match the order's customer email |
seats | array | Yes | Seats to update (1-200). Tokens not on the order are ignored |
seats[].token | string | Yes | Per-seat ticket token (min 16 chars) |
seats[].name | string | Yes | Attendee name (max 200); empty string clears the seat |
seats[].email | string | null | Yes | Attendee email; empty string or null clears it |
Response (200)
Returns the updated ticket bundle (same shape as GET /api/v1/tickets/:code).
| Status | Meaning |
|---|---|
404 | Tickets not found (unknown code, email mismatch, or no tickets) |
409 | Order is no longer active (cancelled or refunded) |
Get Attendee Ticket
Attendee ticket view by per-seat token — the capability embedded in the attendee link/QR code. Returns only that seat's details plus event/product display data, never the buyer's access code or other seats. The holder of the token can edit their own seat with PATCH /api/v1/tickets/attendee/:token; the buyer can edit every seat on the order with PATCH /api/v1/tickets/:code.
Response
A 404 is returned when the token does not match a ticket.
Update Attendee Profile
Attendee self-service edit of their own seat, gated only by the per-seat token. It updates the networking profile plus this seat's name and email — it cannot reach sibling seats or the order.
The body is treated as a full replacement of the profile, so send every field you want to keep.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
name | string | Attendee display name (max 200 characters) |
email | string | null | Private contact email — never shown in the directory. Send null or "" to clear. |
bio | string | null | Short headline or bio (max 240 characters) |
linkedinUrl | string | null | LinkedIn profile URL, validated server-side |
listed | boolean | Opt in to the event's networking directory. Only honoured when a LinkedIn URL is present. |
Errors
| Status | Meaning |
|---|---|
400 | A non-empty linkedinUrl that isn't a real linkedin.com URL |
404 | Token does not match a ticket |
409 | Order is no longer active (cancelled or refunded) |
Check In Attendee
Marks a seat as present at the door, keyed by the per-seat token from the QR credential.
Idempotent: a re-scan returns the original check-in with alreadyCheckedIn: true and never overwrites the recorded time.
Body Parameters
| Parameter | Type | Description |
|---|---|---|
by | string | null | Free-text name of whoever is checking the attendee in (max 200 characters) |
Response
Errors
| Status | Meaning |
|---|---|
404 | Token does not match a ticket |
409 | Order is no longer active (cancelled or refunded) |
To see everyone on the door list, use the event check-in roster.