> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Read events, ticket types, orders and attendees, run the registration checkout, and check attendees in.

Use **Eventzilla** through Corsair: one client, typed API calls.

Eventzilla authenticates with an `x-api-key` header. Create a key in your
Eventzilla account under **Settings > Developers > API Credentials**, then
save it for the `eventzilla` integration.

The checkout workflow runs in four steps and each one needs the event's
`dateid`, not its `id`: `checkout.prepare` (what is on sale, and the
`payment_id` to use), `checkout.create` (reserve, and get one
`ticket_price_id` per ticket), `checkout.fillOrder` (buyer and attendee
details), then `checkout.confirm` (record the payment). A reservation holds
inventory until it is confirmed or abandoned.

Eventzilla posts webhooks, but does not sign them and documents no secret to
verify one with, so this plugin registers no inbound webhook: a delivery
cannot be told apart from a forged request.

List operations page with `offset` and `limit`; each result carries
`next_offset`, which is null on the last page. `events.get`,
`attendees.get` and `users.get` answer an array, and an empty one for an
unknown id rather than a 404. `transactions.get` answers an array too, but
an unknown reference is a 404 error, not an empty result.

**What you get:**

* 20 typed API operations

## Setup

**1. Install**

```bash npm theme={null}
npm install corsair @corsair-dev/eventzilla better-sqlite3
npm install --save-dev @types/better-sqlite3
```

```bash yarn theme={null}
yarn add corsair @corsair-dev/eventzilla better-sqlite3
yarn add --dev @types/better-sqlite3
```

```bash pnpm theme={null}
pnpm install corsair @corsair-dev/eventzilla better-sqlite3
pnpm install --save-dev @types/better-sqlite3
```

```bash bun theme={null}
bun add corsair @corsair-dev/eventzilla better-sqlite3
bun add --dev @types/better-sqlite3
```

**2. Add the plugin**

```ts corsair.ts theme={null}
import Database from 'better-sqlite3';
import { createCorsair } from 'corsair';
import { eventzilla } from '@corsair-dev/eventzilla';

export const corsair = createCorsair({
	plugins: [
		eventzilla(),
	],
	database: new Database('corsair.db'),
	kek: process.env.CORSAIR_KEK!,
	multiTenancy: true,
	hub: {
		projectApiKey: process.env.CORSAIR_API_KEY!,
		signingSecret: process.env.CORSAIR_SIGNING_SECRET!,
	},
});
```

With `multiTenancy: true`, scope calls with `corsair.withTenant(id)`. See [Quick start](https://docs.corsair.dev/quick-start.md) for KEK + Hub keys, and [Multi-tenancy](https://docs.corsair.dev/concepts/multi-tenancy.md) for account isolation.

**3. Choose authentication**

> [tab] API Key (Recommended)
>
> No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.
>
> ```ts theme={null}
> eventzilla()
> ```
>
> More: [API Key](https://docs.corsair.dev/concepts/api-key)

**4. Connect a tenant**

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see [Connect / OAuth](https://docs.corsair.dev/management/connect).

```ts theme={null}
const { connectUrl } = await corsair.manage.connect.createLink({
	plugin: 'eventzilla',
	tenantId: 'acme',
});
// redirect the user's browser to connectUrl
```

## Example API calls

**List the account's live events**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.eventzilla.api.events.list({ limit: 10 });
```

**Check an attendee in by barcode**

```ts theme={null}
const tenant = corsair.withTenant('acme');
await tenant.eventzilla.api.attendees.checkin({ barcode: 'EZ202605200001', eventcheckin: true });
```

See the full list on the [API](https://docs.corsair.dev/plugins/eventzilla/api.md) page.

## What's next

> [card] [API reference](https://docs.corsair.dev/plugins/eventzilla/api.md)
>
> Every `eventzilla.api.*` operation with input and output types.

> [card] [Connect / OAuth](https://docs.corsair.dev/management/connect)
>
> createLink, Hub delivery, and tenant connect flows.

> [card] [Use with agents](https://docs.corsair.dev/mcp-adapters/mcp-adapters)
>
> Expose this plugin's operations as MCP tools.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.