Beheer API
Lees en onderhoud je catalogus: evenementen, voorstellingen, producten, categorieën, locaties, gebruikers en scannersleutels. Bedoeld voor een koppeling met je eigen systeem, niet voor rapportage — daarvoor is de Analytics API.
Zeven resources, elk met dezelfde vorm. Authenticatie, foutmeldingen en de envelop staan op Conventies.
Rechten
Een token draagt losse rechten. Voor deze endpoints heb je er twee nodig:
| read | Elke GET. |
| write | Elke POST, PUT, PATCH en DELETE. |
Mist je token het benodigde recht, dan krijg je 403 met de naam
van het ontbrekende recht in het bericht. analytics staat hier
los van: een token dat alleen cijfers mag ophalen komt niet bij de catalogus,
en omgekeerd. Je stelt de rechten per token in in je backoffice, onder
Instellingen → API-tokens.
De resources
| Pad | Wat het is |
|---|---|
| /api/v2/events | Evenementen. |
| /api/v2/performances | Voorstellingen: een datum en tijd binnen een evenement. |
| /api/v2/categories | Categorieën waarin producten gegroepeerd staan. |
| /api/v2/products | Ticketsoorten en andere producten. |
| /api/v2/locations | Locaties. |
| /api/v2/users | Logins van je medewerkers. |
| /api/v2/api_keys | Scannersleutels. |
Elke resource kent GET op de lijst en op één record, en
POST, PUT en DELETE om te wijzigen.
Twee uitzonderingen staan onderaan deze pagina.
GET /api/v2/events ?filter[online]=true &sort=start_date&direction=desc &limit=25&offset=0
{ "meta": { "total": 1265, "count": 25, "limit": 25,
"offset": 0, "has_more": true },
"data": [ { "id": 108358, "online": true, ... } ] }
limit is standaard 50 en maximaal 200. Vraag je meer, dan krijg
je er 200 — geen foutmelding. Blader verder met offset zolang
meta.has_more waar is.
Filteren en sorteren
Beide zijn een korte lijst per resource, geen vrije querytaal. Vraag je iets
dat er niet in staat, dan krijg je 400 met de toegestane waarden
erbij — je hoeft dus niet te raden.
| Resource | filter[…] | sort |
|---|---|---|
| events | onlineday_ticket | idstart_datename_nl |
| performances | event_idonline | idstart |
| categories | event_idonline | id |
| products | event_idcategory_idonline | idname_nl |
| locations | geen | idnamecity |
| users | roleactive | idemail |
| api_keys | deleted | iddescription |
direction is asc of desc, standaard
asc. Zonder sort wordt er op id
gesorteerd.
Meertalige velden
Namen en beschrijvingen bestaan per taal, met de taalcode aan het veld
geplakt: name_nl, name_de, name_fr,
name_en. Dat geldt ook voor description_… en
ticket_notice_…. Er is geen veld dat automatisch de taal van de
bezoeker kiest; die keuze maak je zelf.
{ "id": 44120, "event_id": 108358, "location_id": 91,
"start": "2026-11-24T10:00:00+01:00",
"type_of_performance": 2, "capacity": 400,
"free_capacity": 118, "online": true }
free_capacity is niet altijd een echt getal
Bij een voorstelling met vrije verkoop bestaat er geen limiet om tegen af te zetten. Dit veld geeft daar een vaste waarde terug die niets betekent. Wil je weten hoe vol een voorstelling werkelijk zit, gebruik dan availability in de Analytics API: die geeft voor zo'n voorstelling leeg terug in plaats van een getal.
Twee dingen die anders werken dan je verwacht
Een login aanmaken kan niet via de API
Dit geeft 405. Een API-token is bedoeld om gegevens uit te
wisselen, niet om toegang uit te delen; een login maak je aan in je
backoffice. Bij het bijwerken van een bestaande gebruiker worden
role en password genegeerd — meesturen levert geen
foutmelding op, maar er verandert niets aan die twee velden.
api_keys gaat over scannersleutels
Deze lijst bevat de sleutels van je scanners, niet je API-tokens. Je eigen
token en dat van je collega's zijn via de API niet zichtbaar en niet te
wijzigen; dat doe je in je backoffice. Een ingetrokken scannersleutel blijft
in de lijst staan met deleted: true, zodat je kunt zien dat hij
bestaan heeft.