Learn
ticketZ for Developers
Read events, venues, and seating from the ticketZ API, and build on the same endpoints our mobile app uses.
ticketZ exposes a JSON API under /api on the same domain as the website. Public listing endpoints need no authentication. Endpoints that read or change account data expect a Clerk session, either the browser cookie or a bearer token issued to the mobile app.
The API is versionless today and may change. Pin your integration to the fields you use and check Updates for announcements.
List published events
Returns events with organizer details and aggregated availability and lowest price.
curl https://your-ticketz-domain/api/events?status=publishedFetch one event
Includes the venue, ticket types, and media for the event page.
curl https://your-ticketz-domain/api/events/EVENT_IDRead a seating map
Sections, layout objects, and seat status for a seated event. Expired holds are released on read.
curl https://your-ticketz-domain/api/seating/EVENT_IDAuthenticated requests
Pass a Clerk session token as a bearer token. The response mirrors the signed-in user, including role.
curl https://your-ticketz-domain/api/mobile/auth/me \
-H "Authorization: Bearer CLERK_SESSION_TOKEN"Endpoint overview
GET /api/events
Public. Filter with status and adminId query parameters.
GET /api/events/:id
Public. Full event document with populated organizer.
GET /api/venues, GET /api/venues/:id
Public. Venue details, address, map coordinates, and capacity.
GET /api/seating/:eventId
Public. Seat map with live availability.
POST /api/seating/:eventId/hold and /release
Signed in. Reserve or release seats during checkout.
GET /api/tickets, GET /api/orders
Signed in. The current user’s tickets and orders.
POST /api/validate
Organizer or staff. Validate a QR payload at the door.
POST /api/mobile/payments/create-intent
Signed in. Create a Stripe PaymentIntent for the mobile checkout.
Good to know
- All IDs are MongoDB ObjectIds. Invalid IDs return a 400 with an error message.
- Writes to events, venues, and ticket types require an organizer account and are scoped to that organizer.
- Stripe and Clerk webhooks are handled server-side. You do not need to forward them.
- Rate limits are not enforced yet, but please cache listing responses for at least 30 seconds.
Building something?
Let us know what you are integrating so we can keep the endpoints you rely on stable.