v1.0.0 • OAS 3.0 • Staging
This API provides endpoints for managing events, tickets, organizations, payments, and user accounts. Integrate CHI services into your apps and build on top of the CHI ecosystem.
Base URL: https://api.chi.app
GET /events?page=1&limit=20
{
"data": [...],
"total": 156,
"page": 1,
"lastPage": 8
}Most endpoints require Bearer token authentication. Include the JWT token in the Authorization header:
Authorization: Bearer <your-token> # Example request curl -X GET https://api.chi.app/events \ -H "Authorization: Bearer <your-token>" \ -H "Content-Type: application/json"
Register webhook endpoints via the API to receive real-time event notifications for ticket scans, payments, and check-ins.
POST https://your-server.com/webhook
{
"event": "ticket.scanned",
"timestamp": "2025-06-15T14:30:00Z",
"data": {
"ticketId": "tkt_abc123",
"eventId": "evt_xyz789",
"visitorId": "vis_456def"
}
}Use our official packages to integrate with the CHI platform in your preferred language.
Build a full event storefront — live ticket pricing, cart and checkout — without touching REST endpoints, auth, retries, rate limits or data normalization. CHI owns the commerce behavior; you own the visual experience. Ships as headless React hooks plus optional components with zero CSS, so your design system stays yours. Lineup hooks arrive together with the public lineup API.
npm install @chi-ecosystem/storefront-react @tanstack/react-query # .npmrc - GitHub Packages auth for the @chi-ecosystem scope @chi-ecosystem:registry=https://npm.pkg.github.com
import {
ChiStorefrontProvider,
useTicketDefinitions,
useQuote,
formatMoney,
money,
} from '@chi-ecosystem/storefront-react';
// Once, at the root - CHI handles auth, caching, retries,
// outage healing and quote rate-limit budgets from here on.
<ChiStorefrontProvider eventSlug="your-festival" baseUrl="production">
<App />
</ChiStorefrontProvider>;
function Tickets() {
const { definitions } = useTicketDefinitions(); // live prices + stock
const [lines, setLines] = useState([]); // your cart UI state
const { quote } = useQuote({ lines }); // debounced + deduped
return (
<div className="my-tickets"> {/* your CSS, your rules */}
{definitions.map((d) => (
<button key={d.id} onClick={() => addLine(setLines, d)}>
{d.name} - {formatMoney(money(d.priceMinor, d.currency))}
</button>
))}
<Total>{formatMoney(money(quote?.pricing.totalMinor ?? 0, quote?.pricing.currency ?? 'USD'))}</Total>
</div>
);
}Errors return a JSON object with statusCode, message, and error fields. Handle 401 (token expired), 403 (forbidden), and 429 (rate limited).
{
"statusCode": 401,
"message": "Unauthorized",
"error": "Token expired"
}| Code | Meaning | Action |
|---|---|---|
| 400 | Bad Request | Check request body and parameters |
| 401 | Unauthorized | Token expired — refresh and retry |
| 403 | Forbidden | Insufficient permissions for this resource |
| 429 | Rate Limited | Back off with exponential delay |
| 500 | Server Error | Retry later or contact support |
100 requests per minute per API key. Use exponential backoff on 429 responses.
| Tier | Rate | Burst |
|---|---|---|
| Standard | 100 req/min | 20 req/s |
| Enterprise | 1000 req/min | 100 req/s |
We provide standardized context files compliant with the llms.txt specification. Point your AI agents to these URLs to instantly load the full CHI ecosystem context.
To give your coding assistant (Cursor, Windsurf, Copilot) full awareness of the CHI platform, create an agent.md file in your project root and paste the following block. This ensures the AI follows our design tokens and API patterns.
# CHI Ecosystem API Context for AI Agents
You are integrating with the CHI Ecosystem (EventCHI) REST API.
Base URL: https://api.chi.app (production) | https://api.staging.chi.app (staging)
Auth: Bearer token via Authorization header.
## Resources
- Full Context: https://chi.app/llms-full.txt
- Minimal Context: https://chi.app/llms-minimal.txt
- Developer Overview: https://chi.app/en/developers
- Aggregator Context: https://chi.app/llms-aggregators.txt
- Not published yet — API access is invite-only for now.
- MCP Server: Not available yet — the CHI MCP server is still in development.
## API Guidelines
1. **Authentication**: All requests require a Bearer token. Obtain tokens via POST /auth/login.
2. **REST Patterns**: Use strict RESTful conventions — resource-based URLs, proper HTTP methods, JSON request/response bodies.
3. **Pagination**: List endpoints support `?page=` and `?limit=` query params. Responses include `total`, `page`, and `lastPage`.
4. **Error Handling**: Errors return `{ statusCode, message, error }`. Handle 401 (token expired), 403 (forbidden), 429 (rate limited).
5. **Webhooks**: Register webhook endpoints via the API to receive real-time event notifications (ticket scans, payments, check-ins).
6. **Rate Limits**: 100 req/min per API key. Use exponential backoff on 429 responses.
## Key Resources
- **Events**: /events — create, manage, and query events.
- **Tickets**: /tickets — issue, validate, and scan tickets.
- **Payments**: /payments — process and track transactions.
- **Visitors**: /visitors — attendee profiles and wallet data.
- **Coupons**: /coupons — create and redeem discount codes.
- **Organizations**: /organizations — manage org settings and team members.
## Key Terminology
- **Visitor App**: The mobile wallet for attendees.
- **Crew App**: POS and access control for staff.
- **Backstage**: The organizer dashboard.Fetch CHI events to display on your platform. We provide multiple feed formats and a dedicated AI context file for aggregators.
Structured JSON for modern applications and APIs
https://api.chi.app/feeds/events.jsonfetch('https://api.chi.app/feeds/events.json')
.then(res => res.json())
.then(data => {
console.log(data.items);
});
// Organization-scoped
fetch('https://api.chi.app/feeds/organizations/{orgId}/events.json')
// Single event JSON-LD
fetch('https://api.chi.app/feeds/events/{eventId}.json')Dedicated context file for AI-powered aggregators to understand CHI event data structures
Earn commissions on every ticket sale that comes from your app or platform. Contact us to join our aggregator partnership program and get rewarded for driving sales.
Contact UsOur API is currently available by invitation only. We're working to open access to everyone in the near future.