API · Events
Events are the top-level objects in your account: a date and venue customers can buy tickets to.
GET /admin/events
Returns the events in your account, split into upcoming and past, plus aggregate stats for the period filter.
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events
Query parameters:
| Parameter | Description |
|---|---|
period |
One of today, this_week, this_month, this_year, all_time. Filters past events and the stats. Upcoming events are not affected. Defaults to this_month. |
Response:
{
"upcoming_events": [
{
"id": 42,
"slug": "spring-showcase",
"title": "Spring Showcase",
"description": "Our annual seasonal event.",
"starts_at": "2026-05-01T19:00:00Z",
"ends_at": "2026-05-01T23:00:00Z",
"sales_starts_at": null,
"sales_ends_at": "2026-05-01T19:00:00Z",
"published": true,
"capacity": 500,
"venue": {
"id": 7,
"name": "The Venue",
"city": "Berlin"
}
}
],
"past_events": [],
"stats": {
"upcoming_count": 1,
"revenue": { "amount": "0.00", "currency": "EUR" },
"tickets_sold": 0
}
}
GET /admin/events/:slug
Returns a single event by its URL slug.
curl -H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase
Response:
{
"id": 42,
"slug": "spring-showcase",
"title": "Spring Showcase",
"description": "Our annual seasonal event.",
"starts_at": "2026-05-01T19:00:00Z",
"ends_at": "2026-05-01T23:00:00Z",
"sales_starts_at": null,
"sales_ends_at": "2026-05-01T19:00:00Z",
"published": true,
"capacity": 500,
"venue": {
"id": 7,
"name": "The Venue",
"city": "Berlin"
}
}
POST /admin/events
Creates a new draft event. Requires a write token. To attach an image, direct-upload the file first and pass its signed_id as the image field.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title": "Spring Showcase", "venue_id": 7, "starts_at": "2026-05-01T19:00:00Z", "ends_at": "2026-05-01T23:00:00Z", "sales_ends_at": "2026-05-01T19:00:00Z"}' \
https://app.usetix.io/admin/events
Body parameters:
| Field | Required | Notes |
|---|---|---|
title |
yes | Event title. |
venue_id |
yes | Internal ID of an existing venue in your account. |
starts_at |
yes | ISO 8601. Parsed in the venue’s timezone if no zone is included. |
ends_at |
yes | ISO 8601. |
sales_ends_at |
yes | ISO 8601. When ticket sales close. |
sales_starts_at |
no | ISO 8601. When sales open. Omit to open immediately. |
description |
no | Plain-text description. |
slug |
no | URL slug. Auto-generated from title if omitted. |
capacity |
no | Total seats across ticket types. Omit for uncapped. |
minimum_age |
no | Age restriction. |
customer_vat_rate_override |
no | Per-event VAT override (decimal percentage). |
image |
no | signed_id from a direct upload. |
background_image |
no | signed_id from a direct upload. |
Response: 201 Created with the event JSON and a Location header pointing at GET /admin/events/:slug.
PATCH /admin/events/:slug
Updates an existing event. Send only the fields you want to change.
curl -X PATCH \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title": "Updated title"}' \
https://app.usetix.io/admin/events/spring-showcase
Accepts the same body parameters as POST /admin/events.
Response: 200 OK with the updated event JSON.
DELETE /admin/events/:slug
Deletes an event. Events with paid orders cannot be deleted; the API returns 422 Unprocessable Entity in that case.
curl -X DELETE \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase
Response: 204 No Content on success.
POST /admin/events/:slug/publication
Publishes the event, making it visible on the public shop. Requires a description and at least one ticket; otherwise returns 422 with the missing requirements.
curl -X POST \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/publication
Response: 200 OK with the event JSON (published: true).
DELETE /admin/events/:slug/publication
Unpublishes the event, removing it from the public shop. Existing orders are unaffected.
curl -X DELETE \
-H "Authorization: Bearer your-token-here" \
-H "Accept: application/json" \
https://app.usetix.io/admin/events/spring-showcase/publication
Response: 200 OK with the event JSON (published: false).
Event fields
| Field | Type | Notes |
|---|---|---|
id |
integer | Internal numeric ID. Stable. |
slug |
string | URL slug, used as the path parameter. The event’s public URL is https://<your-subdomain>.usetix.io/events/<slug>. |
title |
string | Event title. |
description |
string | null | Plain-text description. May contain newlines. |
starts_at |
string | ISO 8601 UTC. When doors/the event begin. |
ends_at |
string | ISO 8601 UTC. |
sales_starts_at |
string | null | When ticket sales open. null means sales are open immediately. |
sales_ends_at |
string | When ticket sales close. Always set; defaults to starts_at if you didn’t pick a custom value. |
published |
boolean | true if the event is live on the public shop, false for drafts. |
capacity |
integer | null | Total seats across all ticket types. null means uncapped. |
venue.id |
integer | Internal venue ID. |
venue.name |
string | Venue name. |
venue.city |
string | Venue city. |