# Eventbrite

Eventbrite is an event management and ticketing platform that allows organizers to create, promote, and sell tickets to events. The Sling Eventbrite connector extracts data from the Eventbrite REST API v3, supporting organizations, events, attendees, orders, ticket classes, venues, categories, and formats.

{% hint style="success" %}
**CLI Pro Required**: APIs require a [CLI Pro token](https://docs.slingdata.io/sling-cli/cli-pro) or [Platform Plan](https://docs.slingdata.io/sling-platform/platform).
{% endhint %}

## Setup

The following credentials and inputs are accepted:

**Secrets:**

* `private_token` **(required)** -> Your Eventbrite Private OAuth Token

**Inputs:**

* `anchor_date` (optional) -> The starting date for historical data extraction (default: 1 year ago). Format: `YYYY-MM-DDTHH:MM:SSZ`

### Getting Your Private Token

1. Log in to your [Eventbrite](https://www.eventbrite.com/) account
2. Go to [API Keys](https://www.eventbrite.com/platform/api-keys) in the Eventbrite Platform
3. Create a new API Key if you don't have one
4. Copy your **Private token** from the API key details

{% hint style="warning" %}
**Important:** Use your Private token (OAuth token), not the API key or public token. The Private token provides authenticated access to your Eventbrite data.
{% endhint %}

### Using `sling conns`

Here are examples of setting a connection named `EVENTBRITE`. We must provide the `type=api` property:

{% code overflow="wrap" %}

```bash
sling conns set EVENTBRITE type=api spec=eventbrite secrets='{ private_token: your_private_token_here }'
```

{% endcode %}

### Environment Variable

See [here](https://docs.slingdata.io/sling-cli/environment#dot-env-file-.env.sling) to learn more about the `.env.sling` file.

{% code overflow="wrap" %}

```bash
export EVENTBRITE='{ type: api, spec: eventbrite, secrets: { private_token: "your_private_token_here" } }'
```

{% endcode %}

### Sling Env File YAML

See [here](https://docs.slingdata.io/sling-cli/environment#sling-env-file-env.yaml) to learn more about the sling `env.yaml` file.

```yaml
connections:
  EVENTBRITE:
    type: api
    spec: eventbrite
    secrets:
      private_token: "your_private_token_here"
```

**With anchor date for historical data:**

```yaml
connections:
  EVENTBRITE:
    type: api
    spec: eventbrite
    secrets:
      private_token: "your_private_token_here"
    inputs:
      anchor_date: "2023-01-01T00:00:00Z"
```

## Replication

Here's an example replication configuration to sync Eventbrite data to a PostgreSQL database:

```yaml
source: EVENTBRITE
target: MY_POSTGRES

defaults:
  mode: full-refresh
  object: eventbrite.{stream_name}

streams:
  # Core data
  organizations:
  events:
    mode: incremental
    primary_key: [id]
    update_key: changed
  attendees:
    mode: incremental
    primary_key: [id]
    update_key: changed
  orders:
    mode: incremental
    primary_key: [id]
    update_key: changed

  # Reference data
  ticket_classes:
  venues:
  categories:
  formats:
```

## Endpoints

### Core Data

| Endpoint        | Description                              | Incremental |
| --------------- | ---------------------------------------- | ----------- |
| `organizations` | Organizations for the authenticated user | No          |
| `events`        | All events for each organization         | Yes         |
| `attendees`     | Attendees for each event                 | Yes         |
| `orders`        | Orders for each organization             | Yes         |

### Event Details

| Endpoint         | Description                           | Incremental |
| ---------------- | ------------------------------------- | ----------- |
| `ticket_classes` | Ticket classes (types) for each event | No          |
| `venues`         | Venues for each organization          | No          |

### Reference Data

| Endpoint     | Description                                   | Incremental |
| ------------ | --------------------------------------------- | ----------- |
| `categories` | All event categories                          | No          |
| `formats`    | All event formats (conference, seminar, etc.) | No          |

To discover available endpoints:

```bash
sling conns discover EVENTBRITE
```

## Incremental Sync

The Eventbrite connector uses the `changed` timestamp for incremental sync on supported endpoints:

* **First run:** Fetches all records from `anchor_date` (default: 1 year ago) to present
* **Subsequent runs:** Only fetches records changed after the last sync

### Supported Incremental Endpoints

* `events` — Tracks the `changed` field to detect new and modified events
* `attendees` — Uses `changed_since` parameter to filter by last sync time
* `orders` — Uses `changed_since` parameter to filter by last sync time

### Parent-Child Relationships

The connector uses queue-based iteration to handle parent-child relationships:

* **Organizations** → feeds `events`, `orders`, and `venues`
* **Events** → feeds `attendees` and `ticket_classes`

This means organizations are always fetched first, followed by their dependent endpoints.

## Pagination

Eventbrite uses continuation-based pagination. The connector handles this automatically:

* Each response includes a `pagination.continuation` token
* The connector stops when `pagination.has_more_items` is `false`
* Default page size is 50 records per request

## Rate Limiting

The Eventbrite API enforces rate limits:

* The connector uses a default rate of **5 requests per second**
* Concurrent requests are limited to **3** for child endpoints
* Automatically retries with exponential backoff on 429 (rate limit) responses
* Retries with linear backoff on 5xx server errors

If you are facing issues connecting, please reach out to us at <support@slingdata.io>, on [discord](https://discord.gg/q5xtaSNDvp) or open a Github Issue [here](https://github.com/slingdata-io/sling-cli/issues).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.slingdata.io/connections/api-connections/eventbrite.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
