EventcubeDevelopers

Storefront API

Event ticketing API

The whole engine, over REST

Create, update and delete events and tickets. Build carts and orders. Run your own checkout, or hand payment back to Eventcube with a redirect. 58 operations across 13 resources, one bearer token.

Getting started

Your store is the base URL

There is no tenant header and no store ID to thread through your code. Requests go to your store’s own public domain, and the API resolves the store from the hostname. Authenticate with the API key from the Eventcube admin.

First request
curl https://your-store.eventcube.io/api/v1/events?only_listable=1 \
-H "Authorization: Bearer YOUR_API_KEY"

Money in minor units

5000 means £50.00. Totals come back as strings, not numbers.

UTC always

Reads return a Unix timestamp; writes take Y-m-d H:i:s, no offset.

Bearer auth only

One header. No OAuth dance, no signed requests.

Hostname is the store

No X-Store-Id header — the base URL identifies the store.

The surface

Two halves that work independently

Sync a catalogue without touching checkout, or sell against events created in the Eventcube admin. Most integrations only need one half.

Inventory management

Everything that makes up the catalogue — promoters, venues, categories, artists, events, ticket types, discounts and scanner devices.

GET/events
POST/events
GET/events/{event}/tickets
POST/events/{event}/tickets
GET/promoters
POST/discounts
GET/devices
Inventory guide →

Checkout integration

Carts, line items, discount codes and orders — enough to run a complete purchase flow inside your own interface.

POST/carts
PATCH/carts/{token}
POST/carts/{token}/items/{ticket_id}
DELETE/carts/{token}/items/{ticket_id}
POST/carts/{token}/discount-code
POST/orders
GET/order-ticket-items
Checkout guide →

Payment

Own the checkout, or don’t

Redirect checkout

Create the cart, then send the buyer to the checkout_url it returns. Eventcube collects payment, issues tickets and emails confirmation. You never call POST /orders.

Least work, and card details never touch your infrastructure.

API checkout

Collect payment yourself and create the order with POST /orders, passing the cart_token. The response comes back with the issued ticket items.

Full control of the experience, and you own the payment relationship.

When things go wrong

400Validation failed, invalid ticket, or the cart already has an order
401Missing, malformed or wrong bearer token
409Not enough inventory left to satisfy the cart
422Cart already converted, or inventory disappeared at order time

FAQ

Questions engineers actually ask

Does Eventcube have a REST API?

Yes. The Storefront API is a JSON REST API covering 58 operations across 25 paths, grouped into 13 resources: promoters, venues, categories, artists, events, tickets, devices, discounts, carts, cart items, discount codes, orders and order ticket items. It is available on EC Pro.

How do I authenticate with the Eventcube API?

A single bearer token in the Authorization header, using the API key from the Eventcube admin. There is no OAuth flow and no request signing. There is also no store ID header — requests go to your store's own public domain and the API resolves the store from the hostname.

Does the API support webhooks?

No. Eventcube does not push outbound webhooks to your application. Order data is read from the API instead: poll GET /api/v1/orders, or fetch a single order by reference. If a buyer arrived through an enhanced embed, anything you passed as checkout_data comes back on the order as custom_data, so you can reconcile a sale to one of your users without matching on email.

Can I run my own checkout UI?

Yes. Create a cart with POST /api/v1/carts, attach the customer and ticket holders, then create the order with POST /api/v1/orders. Alternatively skip your own payment handling entirely and redirect the buyer to the checkout_url returned on the cart, and Eventcube collects payment.

How are prices and dates represented?

Money is in minor units, so 5000 means £50.00. Watch the two representations: ticket prices are numbers, while cart and order totals are strings — "total": "5300". Dates and times are always UTC, but the format differs by direction: reads return a Unix timestamp in seconds, writes take Y-m-d H:i:s with no offset. Inventory conflicts return 409, and a cart that has already been converted returns 422.

Are there published rate limits?

No per-endpoint rate limit is published for the Storefront API today. Don't design on the assumption of unlimited throughput — if you are planning a high-volume sync or a large on-sale, talk to us first and we will size it with you.

Something not answered here? Ask us directly — a technical advisor will answer, not a ticket queue.

EC Pro

API access is an EC Pro feature

Tell us what you’re building and a technical advisor will work through the architecture with you before you commit to anything.

Read the reference

Every endpoint, every field, every response shape — generated straight from the OpenAPI spec the API is built against.