Create a paid order + checkout link
Creates a paid order against a session — sale, invoice, and held seats — and returns a hosted Stripe checkout link. Every line's ticket type must be a paid tier; tickets issue when payment settles. Requires a connected Stripe account with charges enabled.
Creates a paid order against a session — sale, invoice, and held seats — and returns a hosted Stripe checkout link. Every line's ticket type must be a paid tier; tickets issue when payment settles. Requires a connected Stripe account with charges enabled.
Authorization
bearerAuth sales:createA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: sales:create
Header Parameters
Optional. Send a unique key per logical operation to make retries safe: a retry with the same key replays the stored success for 14 days instead of re-running the write. Reusing a key with a different body returns 400.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Create a paid order against a session and return a Stripe checkout link. Every line's ticket type must be a paid tier; seats are held for the checkout window and issued as tickets on payment.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "id": "string", "event_id": "string", "session_id": "string", "contact_id": "string", "buyer_name": "string", "buyer_email": "string", "status": "pending", "subtotal_cents": -9007199254740991, "currency": "string", "tickets": [ { "id": "string", "order_id": "string", "session_id": "string", "ticket_type_id": "string", "status": "issued", "created_at": "string" } ], "metadata": { "property1": "string", "property2": "string" }, "created_at": "string", "updated_at": "string", "checkout_url": "http://example.com"}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "code": "string", "retry": "permanent", "details": null}Cancel an order POST
Cancels an order and releases its seats — its tickets are voided so the session's capacity frees up.
Create a free RSVP order POST
Creates a free RSVP order against a session and issues its tickets. Every line's ticket type must be free or comp; capacity is enforced atomically (concurrent claims for the last seat serialize — exactly one wins). Paid checkout is a separate flow.