Public consumer API
BookingHaha public API
Unauthenticated HTTP surface for marketing and discovery sites. There is no API key, Clerk session, or bearer token for the routes listed below. Tenant slugs are resolved server-side; do not send club_id.
Published routes
/api/public/health— Public API deploy smoke/api/public/tenants/{tenantSlug}/events— List published events for a public tenant/api/public/tenants/{tenantSlug}/events/{eventSlug}— Published event detail for a public tenant/api/public/tenants/{tenantSlug}/settings— Public tenant settings/api/public/discovery/{scopeSlug}/events— Discovery hub events/api/public/discovery/{scopeSlug}/comedians— Discovery hub comedians/api/public/comedian-leads— Comedian lead intake (POST)
Auth and limits
- Reads: public, rate-limited (bucket
public-read, 90 req / 60s). - Comedian leads POST: public + optional Turnstile; rate-limited (bucket
apply, 5 req / hour). - Unknown or inactive tenant/scope slugs return 404.
- 429 responses include
Retry-After/X-RateLimit-*when limited.
Not agent-invocable
- Admin, SaaS console, and comedian portal APIs
- Vipps / Stripe checkout, webhooks, and payment routes
- Ticket purchase UI at /billetter
- Token booking helpers (/api/public/survey, /offers, /claim) — capability-token only, not agent-invocable