Home Features Pricing Blog Docs
Log in Start for Free
English | Deutsch

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.