When SeatLayer checkout takes the money (hosted checkout, the box office, a season sale or renewal), SeatLayer keeps the order. These routes let your server read those orders and act on an event’s orders with your secret key. The key’s mode decides what you see: a test key never reads a live order.
Orders of your own checkout (provider: "external") are not SeatLayer orders
and never appear here.
Every order
/v1/ordersSecret key/v1/orders/:orderIdSecret key/v1/orders/:orderId/ticketsSecret keyGET /v1/orders lists orders newest first, 50 a page (limit up to 100).
Filter with eventKey, seasonKey, holderRef, status, and from / to
in epoch milliseconds on when the order was created. Pass nextCursor back as
cursor; it is null on the last page.
{
"orders": [{
"orderId": "ord_01JC…",
"displayRef": "#7284 7528",
"status": "confirmed",
"kind": "season",
"eventKey": null,
"seasonKey": "sea_a245…",
"holderRef": "ord_01JC…",
"customerId": null,
"buyer": { "name": "Hanna Holder", "email": "hanna@example.org" },
"amounts": { "currency": "GBP", "subtotalMinor": 18000, "bookingFeeMinor": 0, "totalMinor": 18000, "refundedMinor": 0 },
"mode": "live",
"createdAt": 1793664000000,
"confirmedAt": 1793664012000
}],
"nextCursor": null
}kind |
The sale |
|---|---|
event |
One event’s online sale. eventKey names it. |
season |
A season sale. seasonKey names the season; it admits to every date. |
renewal |
A season renewal paid through SeatLayer. |
box_office |
A sale at your box office counter. |
holderRef is the holder the order is for, in the references your
holder routes take: a season sale’s is its own order id,
a renewal’s is the reference its offer was made to, and event and box office
orders have none (null). Filter with holderRef to list one holder’s season
orders and renewals. customerId names the customer linked to the order, and
is null when there is none. buyer.email is null for a box office sale
taken without an email address.
GET /v1/orders/:orderId adds the order’s lines (seat or ticket, price,
quantity). GET /v1/orders/:orderId/tickets lists the order’s tickets, earliest
date first, with its date and a scanUrl.
One event’s orders
/v1/events/:key/ordersSecret key, dashboard session, or event:orders:read manage token/v1/events/:key/orders.csvSecret key, dashboard session, or event:orders:read manage token/v1/events/:key/orders/:orderIdSecret key, dashboard session, or event:orders:read manage tokenThese are the routes the dashboard’s Orders screen uses, for an event that
sells through SeatLayer checkout. The list searches with q (name, email,
order number or seat) and filters with status, paidBy, from and to; it
answers matchedCount and event-wide totals with each page. orders.csv
exports every match, one price line per row. One order answers with its lines,
tickets, guests and booking answers.
Refund, cancel, resend
/v1/events/:key/orders/:orderId/refundSecret key, dashboard session, or event:refund manage token/v1/events/:key/orders/:orderId/cancelSecret key, dashboard session, or event:refund manage token/v1/events/:key/orders/:orderId/resendSecret key, dashboard session, or event:tickets:send manage tokenRefund sends money back through the payment provider: {} refunds what is
left, { "amountMinor": 2500 } part of it. Send an Idempotency-Key: a retry
with the same key answers the first result. 202 means the provider has not
confirmed yet; retry with the same key to read it.
Cancel voids the tickets and frees the seats without SeatLayer moving
money, for a payment you settled elsewhere or a lost dispute. It needs a
reason (lost_dispute, refunded_elsewhere, other).
Resend emails the order’s live tickets again, to the buyer or to email.
To follow event orders as they happen, subscribe to
order.paid, order.refunded and order.cancelled.
Season orders send season.order.* and have their own routes with the same
actions; see Seasons. The event routes above answer
404 for a season order, even on the season’s first date. No server SDK wraps
these routes; call them from any language.