Jetron TicketFluid

Quickstart

Make your first Jetron Fluid request in a few minutes.

Get an API key

Jetron Fluid uses public API keys in the format jt_public_.... Every request is automatically scoped to the event host that owns the key.

In your Jetron Ticket dashboard, open Manage API Keys in the sidebar and copy the key marked PUBLIC. The private key is only used to verify webhooks, so leave it where it is for now.

The Manage API Keys page in the Jetron Ticket dashboard, listing a private and a public key

Use Rotate if a key is ever exposed. Rotating replaces the key immediately, so anything still using the old value stops working. See Authentication for how keys are scoped.

Make your first request

List your public events:

npm install @jetronticket/api
import { createClient } from '@jetronticket/api'

const client = createClient({
  apiKey: 'jt_public_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
})

const { data: events } = await client.listEvents({ limit: 20 })
console.log(events)

Successful responses are wrapped in an envelope. The SDK unwraps it for you; over raw HTTP it looks like:

{
  "data": {
    "items": [{ "slug": "my-event", "name": "My Event" }]
  },
  "status": true
}

When more pages exist, data.nextCursor contains the cursor for the next request. It is absent on the last page.

The list returns lightweight event summaries. For an event page, fetch the full event and its gallery:

const [{ data: event }, { data: gallery }] = await Promise.all([
  client.getEvent('my-event'),
  client.getEventGallery('my-event'),
])

event?.headliners // public guests and performers
gallery?.items // imageURL plus optional altText, in stable creation order

Reserve tickets

Reservations price the cart and hold stock for a limited window:

const { data: reservation } = await client.createReservation('my-event', {
  items: [{ sku: 'ticket-type-uuid', quantity: 2 }],
  promoCode: 'EARLYBIRD', // optional; must belong to my-event
})

// Keep these: you need them at checkout
reservation.reservationToken
reservation.quoteReference
reservation.clientExpiresAt // drive a countdown in your UI

promoCode is optional and event-scoped. When it is accepted, use the reservation's discount, promoCode, and total to render the priced cart. See Promo codes.

Create the order

Complete checkout by echoing the reservationToken as the X-Device-ID header and sending the quoteReference back:

const { data: order } = await client.createOrder(
  'my-event',
  {
    quoteReference: reservation.quoteReference,
    email: 'attendee@example.com',
    firstName: 'Kendall',
    lastName: 'Roy',
    callbackUrl: 'https://your-site/checkout/callback',
  },
  { deviceId: reservation.reservationToken }, // sent as X-Device-ID
)

if (order.status === 'pending_payment') {
  window.location.href = order.checkoutUrl // open the hosted payment page
}

Paid orders return status: "pending_payment" and a payment link in checkoutUrl. Send the attendee there to pay. Free orders are confirmed immediately.

Build with an AI assistant

These docs are also published as plain text, so you can hand them to an AI assistant instead of copying snippets across by hand.

AddressWhat you getSize
/llms.txtAn index: every page with its description and linkSmall
/llms-full.txtThe full text of every page, in one fileLarge

Use llms.txt with an assistant that can browse. It gives it a map of the docs so it can go and read only the pages it needs. Use llms-full.txt when you would rather paste everything in at once, or save a copy to work offline.

Start with this prompt

Paste this into your AI coding agent from the root of your event website's codebase:

Review my event website’s codebase and the Jetron Fluid documentation at https://developer.jetronticket.com/llms-full.txt, then integrate Fluid using the existing framework and design system. Fetch all public events from my Jetron Ticket dashboard, create dynamic event pages using each event's details, headliners, gallery, and tickets, and build a branded checkout flow with ticket selection, reservations, customer details, promo codes, payments, loading states, and error handling. Only use the Jetron website embed when an event has a seat map. Check whether the website has a support page and add a small link there that says, “Experiencing an issue buying a ticket? Buy directly on Jetron Ticket,” pointing to https://jtr.rsvp/{event_slug} for the current event. If there is no support page, place the link discreetly within the checkout form or somewhere on the event page.

For a single page, every page in these docs has a Copy Markdown button at the top. The Open menu beside it links to that page's raw markdown, which is handy when you want to point an assistant at one topic rather than all of them.

Ask about your own integration

The docs include working code for both the embed and the API, so an assistant that has read them can usually scaffold your checkout page and your webhook receiver without you dictating the details.

Next steps

On this page