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. |
photoUrl | string | null | Profile photo — a URL returned by Upload Attendee Photo. Only URLs on this store's CDN are accepted. |
photoUrl is the one field with tri-state semantics, so older forms that never send it keep the current photo: omit it to keep the photo, send null or "" to remove it, send a URL to replace it.
Errors
| Status | Meaning |
|---|---|
400 | A non-empty linkedinUrl that isn't a real linkedin.com URL, or a photoUrl that was not returned by the photo upload endpoint |
404 | Token does not match a ticket |
409 | Order is no longer active (cancelled or refunded) |
Upload Attendee Photo
Uploads an attendee profile photo, gated by the same per-seat token. The image is stored on the store's CDN and its URL returned; save it on the seat by sending it back as photoUrl on PATCH /api/v1/tickets/attendee/:token. Uploading alone does not change the seat.
Send the image as the file field of a multipart/form-data body.
| Constraint | Value |
|---|---|
| Form field | file |
| Formats | JPEG, PNG, WebP |
| Maximum size | 2 MB |
Response (201)
Then persist it on the seat:
Errors
| Status | Meaning |
|---|---|
400 | No file field, an empty file, an unsupported image type, or an image larger than 2 MB |
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.