Built on AT Protocol

Atmosphere Tickets

Ticketing infrastructure for developers building Atmosphere event apps. Keep discovery, event pages, social context, organizer UX, and attendee experience inside your app. Atmosphere Tickets handles the hard work behind the scenes: scarce inventory, checkout holds, payment-linked issuance, delivery, QR verification, and check-in truth across compatible apps.

Scroll down to see more.

For event app developers

Add ticketing without becoming the ticketing backend.

Build the event product your community sees. Tickets gives your app the infrastructure for the parts that must not race, leak, double sell, or drift between apps.

Event apps

Your app keeps the event experience

Apps use community.lexicon.calendar.event and RSVP records, then call ATM Tickets from trusted server code for availability, setup, holds, free claims, fulfillment, and scanner workflows.

Atmosphere Tickets

We handle the hard ticketing machinery

Organizer-owned ticketed-event config, tiers, capacity groups, checkout holds, free limited claims, issued tickets, pass tokens, attendee answers, waitlists, collaborations, and check-in state.

ATM

ATM handles checkout and app controls

Paid ticket purchases stay in ATM's unified payment ledger. Organizer approval gates app selling, app fees, receipts, refunds, and delivery all route through ATM.

Atmosphere app Event storefront + ATM Tickets
Ticketed event Night Market

at://did:plc:organizer/community.lexicon.calendar.event/night-market

290 of 950 tickets left
ATM Tickets module Live inventory & issuance
test env
Sold642
Held18
Available290
Inventory Holds Webhooks Scanner
General admission $18.00
512 sold · 8 held · 80 left active
Workshop seats $35.00
48 sold · 8 held · 4 left limited
Signed webhooks armed
ticket.issued Workshop · wallet delivered 2s
checkin.recorded gate A · valid 34s
hold.released 2 seats · expired 1m

Sales paths

Give organizers real ticket sales without rebuilding the hard parts.

Your app owns the buyer flow and event context. Atmosphere Tickets backs the scarce state behind payment, free claims, waitlists, and entry.

Paid tickets

Hold before checkout

Reserve capacity before payment, send the buyer through ATM checkout, and issue tickets only after payment is confirmed.

Free limited tickets

Capacity claim without a payment row

Use buyer assertions and transactional capacity for scarce free tickets without creating noisy $0 payment rows.

Waitlist and offers

Queue state remains private

Keep waitlist order, offer holds, and private counters in Tickets while your app receives signed lifecycle events.

Scan and verify scan.atmosphere.tickets
Wallets and entry

Atmosphere Tickets provides wallet-ready pass data, private QR tokens, and idempotent scan check-ins so event apps can offer wallet support and entry scanning without rebuilding that infrastructure.

Event operations Private app data
Attendees Check-in Waitlist Refunds
Issued 642 8 tiers
Checked in 218 at the door
Refunded 12 capacity released
Attendee answers Dietary note, accessibility request, shirt size
private

Developer surface

Backend-only contracts for real event apps.

Use the ATM App Node SDK or direct XRPC calls from trusted server code. The browser should never hold app service-auth tokens, webhook secrets, buyer assertions, or scan tokens.

View in docs

const availability = await atm.getTicketAvailability({
  environment: "test",
  eventUri,
});

const hold = await atm.createTicketHold({
  environment: "test",
  eventUri,
  buyerDid,
  buyerAssertionJwt,
  items: [{ tierId, quantity: 2 }],
  returnUrl,
  cancelUrl,
});

return Response.redirect(hold.url);
Server-only

Mint service-auth on your backend and pass buyer assertions only to the ticket hold endpoint.

Setup

createTicketEvent, updateTicketEvent, tiers, capacity groups, public offers.

Sales

getTicketAvailability, createTicketHold, releaseTicketHold, claimFreeTicket.

Operations

Buyer and organizer lists, verification, check-in, waitlists, collaborations, tier forms, attendee answers.

Events

Signed HTTP webhooks and optional XRPC receiver callbacks for issuance, check-in, forms, waitlists, and collaboration changes.

Protocol boundary

Publish the catalog. Keep inventory and secrets transactional.

View in docs

On protocol
  • community.lexicon.calendar.event
  • community.lexicon.calendar.rsvp
  • tickets.atmosphere.ticketTier
  • tickets.atmosphere.capacityGroup
  • tickets.atmosphere.checkInList
  • tickets.atmosphere.publicOffer
  • money.atmosphere.product and price refs
View lexicons in docs
Private ATM Tickets state
  • exact sold, held, and available counters
  • checkout holds and issued ticket IDs
  • buyer PII, attendee answers, support fields
  • QR secrets, pass token hashes, wallet provider rows
  • scanner grants, check-in logs, audit rows
  • waitlist positions, offers, private promo redemption
View boundary in docs

By ATM

A clean split between money, ticket state, and event UX.

ATM

Money and app control plane

App registration, module enablement, recipient approvals, app fee policy, checkout, payment ledger, refunds, settlement, webhook delivery, and test/live environment controls.

Atmosphere Tickets

Ticket truth and operations

Organizer-owned ticket config, inventory transactions, holds, issuance, pass delivery, scanner access, check-in, waitlists, attendee data, forms, collaborations, audit history.

Event apps

Product experience

Event creation, storefronts, ticket picker, discovery, social context, SEO, organizer UX, buyer support, analytics views, and custom scanner or attendee workflows.

Developer ready

Ship ticketed events from your app, backed by shared ticket truth.

Use the same ATM app identity, service-auth, webhook, and XRPC patterns as payments. Your app keeps the event product; Atmosphere Tickets handles holds, issuance, QR passes, scanner verification, waitlists, forms, refunds, voids, and callbacks behind the scenes.