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

# Create an event with the API

> Create an event and optional basic tickets using POST /events and a site-scoped API key.

Send a JSON request to `POST /events` at your provisioned Ticket Spot API v2 base URL. The production OpenAPI contract lists `https://ticketspotapp.com/api/api/v2` as that base URL; use the base supplied with your integration if it differs.

<Warning>This operation creates a live event in the current implementation. Use a dedicated test site when developing an integration, and inspect the returned status before sharing its URL.</Warning>

## Request example

```bash theme={null}
curl --request POST "$TICKETSPOT_API_BASE/events" \
  --header "Authorization: Bearer $TICKETSPOT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "title": "Community workshop",
    "start_date": "2027-06-15",
    "start_time": "10:00",
    "end_date": "2027-06-15",
    "end_time": "12:00",
    "timezone": "America/Los_Angeles",
    "tickets": [{"name": "General admission", "price": 0, "quantity": 20}]
  }'
```

Set `TICKETSPOT_API_BASE` and `TICKETSPOT_API_KEY` in your server environment before running the example.

## Event fields

| Field | Required | Meaning |
| - | - | - |
| `title` | Yes | Event title. |
| `start_date` | Yes | Start date in `YYYY-MM-DD` format. |
| `end_date` | Yes | End date in `YYYY-MM-DD` format. |
| `timezone` | Yes | IANA timezone such as `America/Los_Angeles`. |
| `start_time` | No | Local 24-hour `HH:mm`; defaults to `00:00`. |
| `end_time` | No | Local 24-hour `HH:mm`; defaults to `23:59`. |
| `description` | No | Event description; supports HTML. |
| `image` | No | Public image URL or base64 image data URL. |
| `hostName` | No | Organizer display-name override. |
| `venue` | No | Venue object described below. |
| `tickets` | No | Array of basic ticket types. |

The end must be after the start. Supply explicit times to avoid an unintended all-day range.

### Venue

The venue object accepts `venue_name`, `multi_line_address_display`, `latitude`, `longitude`, and `address`. The address can contain `address_1`, `city`, `region`, `postal_code`, `country`, and `countryCode`. Latitude must be between -90 and 90; longitude between -180 and 180.

### Tickets

Each ticket requires `name`. Optional fields are `price` (zero for free), `quantity` (omit or use `null` for unlimited), and `description`. Review paid-ticket provider setup and account capacity before creating a saleable paid event.

## Response and verification

Success returns HTTP `201` with `success`, `event`, and `tickets`. Store the returned event and ticket IDs. Inspect `event.status`, `event.url`, the returned dates, and the resulting dashboard record. The response also marks API-created events with `is_demo`; this flag does not mean the event is an unpublished draft.

If optional tickets or an image do not appear as expected, inspect the created event before sending another creation request. See [authentication and error handling](/api-reference/introduction).


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