Evenementen op je eigen website tonen (evenementenfeed)
Je kunt afzonderlijke evenementen vrijgeven voor een openbare JSON-feed zonder key en daarmee je eigen websiteagenda vullen vanuit Univents — inclusief vanaf-prijs en Uitverkocht-melding.
Wil je je evenementen ook op je eigen website tonen — in je eigen design, niet als ingesloten Univents-pagina —, dan kun je daarvoor afzonderlijke evenementen vrijgeven. Univents levert ze dan uit via een openbare, alleen-lezen feed die je website (of die van je bureau) kan ophalen en zelf kan weergeven.
Een evenement op de website tonen
De vrijgave gebeurt direct bij het evenement, niet centraal op één plek:
- Open het gewenste evenement.
- Klik in de kopregel van de detailweergave op de schakelaar Tonen op website.
- Univents slaat de wijziging direct op en bevestigt met een korte melding.
Is de schakelaar actief, dan verschijnt het evenement binnen enkele minuten in de feed. Zet je hem weer uit of verwijder je het evenement, dan verdwijnt het er net zo automatisch weer uit. De schakelaar werkt alleen voor dit ene evenement — er is geen bulkvrijgave voor alle evenementen tegelijk.
Wat er in de feed staat
De feed levert uitsluitend gegevens die bedoeld zijn voor een openbare agendaweergave: titel, beschrijving, start- en eindtijd, of de datum al definitief is, locatie, omslagafbeelding, tags, een link naar de ticketverkoop (als het evenement een live gezette ticketpagina heeft – in concept ontbreken ticketlink en prijs) en de goedkoopste nog beschikbare ticketprijs plus een Uitverkocht-melding. Interne gegevens zoals budget, aantal gasten, notities, contactgegevens, status of financiële gegevens staan nooit in de feed, ongeacht of het evenement openbaar is gezet. Ook contingenten, categorienamen en verkoopcijfers blijven binnen — naar buiten gaan alleen de prijs en de informatie „Uitverkocht ja/nee”.
Vanaf-prijs en Uitverkocht
Verkoop je tickets via Univents, dan levert de feed twee extra gegevens waarmee je website een „vanaf € 25” en een „Uitverkocht” kan maken:
price_from— de goedkoopste ticketprijs die een bezoeker nu nog kan kopen, als brutobedrag (dus wat in de ticketshop bij de categorie staat). Is je goedkoopste categorie uitverkocht, dan schuift automatisch de eerstvolgende duurdere op. Zo belooft de website nooit een prijs die er in de shop niet meer is.price_from_currency— de valuta van je Workspace als code, bijv.EURofCHF.tickets_sold_out—truezodra geen enkele ticketcategorie meer te koop is. Zolang een categorie nog tickets heeft, blijft de waardefalse, ook als afzonderlijke categorieën al vol zijn.
Is alles uitverkocht, dan is price_from leeg (null) — een „vanaf”-prijs naast „Uitverkocht” zou uitnodigen tot een aankoop die niet bestaat. Een evenement zonder ticketverkoop levert price_from: null en tickets_sold_out: false: het verkoopt niets, dus is het ook niet uitverkocht.
Annuleer je een ticket, dan komt de plek direct weer vrij — de categorie is dan weer te koop en verschijnt weer in de vanaf-prijs. Omdat de feed kort wordt gecachet, kan een net uitverkocht evenement op je website nog een paar minuten als beschikbaar verschijnen.
Afbeelding en beschrijving: evenement, niet ticketpagina
Voor de websiteagenda tellen afbeelding en beschrijving van het evenement zelf — dus wat je in het evenement onder Weergave bijhoudt. Afbeelding en beschrijving van een boekings- of ticketpagina horen bij die pagina en worden niet automatisch overgenomen in de websiteagenda. Beide is bewust: veel bedrijven tonen in de ticketshop met opzet een ander beeld dan in de agenda op hun eigen website.
Wil je dat beide hetzelfde zijn, dan moet je dat één keer aangeven:
- Open de boekings- of ticketpagina en daar het gedeelte Details.
- Onder afbeelding en beschrijving vind je de toelichting met de knop Ook overnemen voor de websiteagenda.
- Bevestig de vraag. Afbeelding en beschrijving van de pagina worden dan overgezet naar het gekoppelde evenement; de daar eerder opgeslagen gegevens worden overschreven.
De knop verschijnt alleen als de pagina aan een evenement is gekoppeld (bij ticketpagina’s is dat altijd het geval). Overgenomen wordt de laatst opgeslagen versie van de pagina, en velden die op de pagina leeg zijn, blijven bij het evenement ongewijzigd — een lege pagina wist dus nooit een afbeelding. Tot de wijziging in de websiteagenda aankomt, kunnen enkele minuten verstrijken, omdat de feed kort wordt gecachet.
Hoe groot de afbeelding verschijnt, bepaalt jullie website — Univents levert de afbeelding in originele grootte.
De feed ophalen
De feed is openbaar en zonder inloggen of API-key op te halen — een website of extern hulpmiddel kan hem direct met fetch laden:
GET https://univents.app/api/public/dein-workspace/events
GET https://univents.app/api/public/dein-workspace/events/{eventId}
dein-workspace is de slug van je Workspace, die je ook in de adresbalk van je browser achter /home/ vindt. Met de parameters from en to beperk je de periode, met limit het aantal resultaten (standaard 50, maximaal 100). limit is verdeeld in drie stappen — 25, 50 of 100 —, zodat de cache met weinig antwoorden toekan: een opgevraagde waarde wordt altijd naar de eerstvolgende hogere stap afgerond, bijv. levert ?limit=10 evenveel op als ?limit=25, namelijk 25 items, en alles boven 100 wordt op 100 begrensd. Zonder opgave levert de feed alle vrijgegeven evenementen vanaf vandaag.
Een voorbeeldantwoord ziet er zo uit:
{
"workspace": "dein-workspace",
"count": 2,
"events": [
{
"id": "…",
"title": "Sommerkonzert",
"description": "…",
"start": "2026-08-20T18:00:00Z",
"end": "2026-08-20T23:00:00Z",
"date_is_confirmed": true,
"venue": "Großer Saal",
"image_url": "https://…",
"tags": ["Konzert"],
"ticket_url": "https://univents.app/book/dein-workspace/deine-seite",
"price_from": 25,
"price_from_currency": "EUR",
"tickets_sold_out": false,
"updated_at": "2026-08-05T09:00:00Z"
}
]
}
Voor ontwikkelaars en bureaus
De feed is bewust zo gebouwd dat hij direct in een bestaande website te integreren is, zonder dat je toegangsgegevens hoeft te beheren:
- Geen auth, geen API-key — de route is openbaar bereikbaar, maar levert uitsluitend evenementen van de betreffende Workspace waarvan de schakelaar is geactiveerd.
- CORS is open, een aanroep met
fetchwerkt direct vanuit de browser van elke website. - Gecachet — antwoorden zijn kort cachebaar (enkele minuten), zodat veelvuldig ophalen snel blijft. Een net vrijgegeven evenement verschijnt daardoor niet meteen, maar binnen enkele minuten.
- Rate-limited — bij heel veel aanroepen in korte tijd vanuit dezelfde bron antwoordt de route met een fout in plaats van met lege gegevens; voor normaal websitegebruik is dat niet relevant.
- Een onbekende Workspace-slug geeft een fout, geen lege lijst — zo merk je meteen dat de slug niet klopt.
Veelgestelde vragen
Zie ik in de feed ook locaties die alleen bezet zijn, maar niet openbaar zijn gezet? Nee. De feed toont uitsluitend evenementen waarbij je de schakelaar Tonen op website hebt geactiveerd — nooit de algemene bezetting van je locaties.
Bevat de feed prijzen? Ja, één: de goedkoopste nog beschikbare ticketprijs (price_from, bruto) inclusief valuta. De volledige prijslijst staat nog steeds alleen op de boekingspagina waar ticket_url naar verwijst.
Waarom toont mijn website een hogere prijs dan gisteren? Omdat de goedkopere categorie inmiddels uitverkocht is. De feed noemt altijd de goedkoopste prijs die je nog kunt kopen — niet de goedkoopste die er ooit was.
Waarom staat bij mijn evenement zonder tickets niet „Uitverkocht”? Omdat het geen tickets verkoopt. tickets_sold_out is alleen true als er ticketverkoop is en daar niets meer te krijgen is.
Moet ik elk evenement afzonderlijk vrijgeven? Ja, momenteel is er geen bulkvrijgave. De schakelaar zit bewust bij elk evenement afzonderlijk, zodat je volledige controle hebt over wat openbaar zichtbaar is.
Is de functie gekoppeld aan een bepaald abonnement? De feed toont uitsluitend wat je zelf vrijgeeft — er zijn geen extra voorwaarden naast de gewone machtiging voor evenementen.
Kost het ophalen van de feed me iets? Nee, de feed is puur leestoegang tot gegevens die je al hebt vrijgegeven — er zijn geen aparte kosten.