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.
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/apiimport { 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 orderReserve 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 UIpromoCode 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.
| Address | What you get | Size |
|---|---|---|
/llms.txt | An index: every page with its description and link | Small |
/llms-full.txt | The full text of every page, in one file | Large |
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.

