Check a ticket in
Admits a ticket into a session — from a scanned QR payload or a ticket id. Idempotent: re-scanning an already-admitted ticket returns its existing check-in, so a flaky scanner or an offline replay is safe. Void or refunded tickets are refused.
Admits a ticket into a session — from a scanned QR payload or a ticket id. Idempotent: re-scanning an already-admitted ticket returns its existing check-in, so a flaky scanner or an offline replay is safe. Void or refunded tickets are refused.
Authorization
bearerAuth shows:updateA gallery API key, sent as Authorization: Bearer gpk_… (or the x-api-key header).
In: header
Scope: shows:update
Path Parameters
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.
Admit a ticket into a session. Idempotent — re-scanning an admitted ticket returns its existing check-in.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
{ "id": "string", "ticket_id": "string", "session_id": "string", "source": "door", "checked_in_at": "string"}{ "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}Search across the gallery's entities GET
Ranked lexical search across artworks, contacts, artists, lists, offers, locations, sales, invoices, and publications — exact matches first, then prefix, then substring. Returns a bounded top-N with no cursor. A key sees only the kinds its granted read scopes cover (artworks:read ⇒ artwork + artist + list; sales:read ⇒ sale + invoice; contacts:read ⇒ contact; etc.). Sales match on the buyer contact's name; hits never carry amounts. Excludes the knowledge base — use the assistant for semantic search.
Share a show with a connected artist POST
Shares one of this gallery's shows with a connected artist's studio (docs §8.6). Requires the connection's share_show_planning disclosure; the studio then reads the show through the planning projections regardless of the show's visibility (Q6 — sharing is the disclosure decision).