Skip to main content

Inventory Management

Use the Storefront API to create and manage the event catalog for your store: promoters, venues, events, tickets, and related entities.

Typical setup flow

1. Supporting entities

Create catalog metadata (order may vary):

StepEndpointPurpose
PromotersPOST /promotersEvent organiser branding
VenuesPOST /venuesPhysical or logical location
CategoriesPOST /categoriesBrowse/filter grouping
ArtistsPOST /artistsPerformers linked to events

2. Events

POST /api/v1/events

Required: title, start, end as UTC Y-m-d H:i:s strings (e.g. 2026-07-01 18:00:00). Responses return start and end as Unix timestamps; see Conventions.

Link related entities by ID:

{
"title": "Summer Festival",
"type": "standard",
"start": "2026-07-01 18:00:00",
"end": "2026-07-01 23:00:00",
"venue": 1,
"categories": [1],
"artists": [1],
"promoter_id": 1
}

3. Tickets

Create ticket types on an event:

POST /api/v1/events/{eventId}/tickets
{
"title": "General Admission",
"quantity": 100,
"price": 2500,
"booking_fee": 150,
"type": "barcode"
}

price and booking_fee are in minor units.

4. Listing events for sale

For checkout integrations, list events customers can buy:

GET /api/v1/events?only_listable=1
  • Omit status or use any value other than all → upcoming, ok-status events only
  • status=all → include past/non-upcoming events

Then load tickets:

GET /api/v1/events/{eventId}/tickets

5. Devices (optional)

For door scanning or POS, see Devices in the API reference (/devices, /devices/{id}/pins).

6. Discounts

Create promo discounts and codes before checkout can apply them:

POST /api/v1/discounts
POST /api/v1/discounts/{discountId}/codes

Scope (where the discount applies)

Set scope on create (POST /discounts) or replace it on update (PATCH /discounts/{id}). Sending scope on PATCH replaces all existing applicability relations.

scope.typeIncludeExclude
eventsevent_ids — specific eventsexcluded_ticket_ids — ticket types to omit (e.g. VIP) within those events
categoriescategory_ids — events in these categories
storeAll events and tickets in the store

Event scope with ticket exclusions — 10% off General Admission but not VIP:

{
"name": "Summer 10% off (no VIP)",
"scope": {
"type": "events",
"event_ids": [1],
"excluded_ticket_ids": [5]
},
"discount_type": "percentage",
"percentage": 10,
"code_type": "single",
"code": "SUMMER10"
}

Category scope:

{
"scope": {
"type": "categories",
"category_ids": [2, 3]
}
}

Store-wide scope:

{
"scope": {
"type": "store"
}
}

Code types:

code_typeMeaning
singleOne shared code at create time (optional max_redemptions)
uniqueCreate the discount first, then add one or more codes via POST .../codes with a codes array

Promo code strings must be unique across the entire store. At checkout, apply a code with POST /carts/{token}/discount-code (see Checkout Integration).

API reference

Full endpoint documentation: