RecraHub Public API
Preview. Het v1-contract kan wijzigen vóór algemene beschikbaarheid. Leg integraties vast op openapi.json en volg deze pagina.
OpenAPI-schema · https://recrahub.nl/api/v1
GET
/properties/{property-id}/programmes/current-or-next
GET /properties/{property-id}/programmes/current-or-next
Geeft het gepubliceerde programma op de selectiedatum terug, of het volgende gepubliceerde programma als er die dag geen actief is.
Queryparameters
| Parameter | Beschrijving |
|---|---|
| lang | Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands. |
| date | Optioneel. Selectiedatum als YYYY-MM-DD. Standaard vandaag (applicatietijdzone). |
Voorbeeldverzoeken
Huidig of volgend programma
GET /properties/{property-id}/programmes/current-or-next
Huidig of volgend programma voor een datum
GET /properties/{property-id}/programmes/current-or-next?date=2026-07-01
Engelse gelokaliseerde waarden
GET /properties/{property-id}/programmes/current-or-next?lang=en
Antwoorden
Programmapayload met programmavelden, days, highlights en more_info.
Antwoord
{
"id": 48,
"name": "Week 27",
"title": {
"nl": "Recreatieprogramma",
"en": "Recreation programme",
"de": null,
"fr": null,
"localized": "Recreation programme"
},
"start_date": "2026-07-06",
"end_date": "2026-07-12",
"urls": { "api": "https://example.com/api/v1/properties/12/programmes/48" },
"theme": {
"id": 7,
"name": {
"nl": "Zomer",
"en": "Summer",
"de": null,
"fr": null,
"localized": "Summer"
},
"description": {
"nl": "Zomerse week",
"en": "Summer week",
"de": null,
"fr": null,
"localized": "Summer week"
},
"image_url": "https://example.com/storage/themes/summer.jpg",
"highlighted": true
},
"days": [
{
"day": 1,
"date": "2026-07-06",
"activities": [
{
"id": 901,
"name": {
"nl": "Kinderdisco",
"en": "Kids disco",
"de": null,
"fr": null,
"localized": "Kids disco"
},
"starts_at": "2026-07-06T10:00:00+02:00",
"category": {
"id": 3,
"name": {
"nl": "Sport",
"en": "Sport",
"de": null,
"fr": null,
"localized": "Sport"
},
"explanation": {
"nl": "Activiteiten waarbij je actief beweegt.",
"en": "Activities where you move actively.",
"de": null,
"fr": null,
"localized": "Activities where you move actively."
},
"cta": {
"nl": "Doe mee",
"en": "Join",
"de": null,
"fr": null,
"localized": "Join"
},
"image_url": "https://example.com/storage/categories/sport.png"
},
"signup": { "enabled": true, "status": "open" }
}
]
}
],
"highlights": [
{
"type": "activity",
"id": 34,
"name": {
"nl": "Disco avond",
"en": "Disco night",
"de": null,
"fr": null,
"localized": "Disco night"
},
"header": {
"nl": "Vandaag uitgelicht",
"en": "Highlighted today",
"de": null,
"fr": null,
"localized": "Highlighted today"
},
"description": {
"nl": "Kom dansen met het animatieteam.",
"en": "Come dance with the entertainment team.",
"de": null,
"fr": null,
"localized": "Come dance with the entertainment team."
},
"image_url": "https://example.com/storage/highlights/disco.jpg",
"program_activity_id": 901
}
],
"more_info": {
"explanation_categories": [
{
"id": 3,
"name": {
"nl": "Sport",
"en": "Sport",
"de": null,
"fr": null,
"localized": "Sport"
},
"explanation": {
"nl": "Activiteiten waarbij je actief beweegt.",
"en": "Activities where you move actively.",
"de": null,
"fr": null,
"localized": "Activities where you move actively."
},
"cta": {
"nl": "Doe mee",
"en": "Join",
"de": null,
"fr": null,
"localized": "Join"
},
"image_url": "https://example.com/storage/categories/sport.png"
}
],
"explanation_footer_text": {
"nl": "Programma onder voorbehoud.",
"en": "Programme subject to change.",
"de": null,
"fr": null,
"localized": "Programme subject to change."
},
"online": {
"enabled": true,
"url": "https://example.com/demo-park",
"show_recrateam_logo": true,
"recrateam_logo_url": "https://example.com/images/logo-recrateam.svg"
},
"practical_information": [
{
"icon": "info",
"text": {
"nl": "Verzamelen bij de receptie.",
"en": "Meet at reception.",
"de": null,
"fr": null,
"localized": "Meet at reception."
}
}
]
}
}
Geen gepubliceerd programma voor dit bedrijf en deze datum (en geen later programma).
Ongeldige lang- of date-querywaarde.
GET
/properties/{property-id}/programmes/{program-id}
GET /properties/{property-id}/programmes/{program-id}
Geeft één gepubliceerd programma op id. Het programma moet bij het bedrijf in het pad horen.
Queryparameters
| Parameter | Beschrijving |
|---|---|
| lang | Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands. |
Voorbeeldverzoeken
Programma op ID
GET /properties/{property-id}/programmes/{program-id}
Programma op ID met gelokaliseerde waarden
GET /properties/{property-id}/programmes/{program-id}?lang=de
Antwoorden
Programmapayload met programmavelden, days, highlights en more_info.
Antwoord
{
"id": 48,
"name": "Week 27",
"title": {
"nl": "Recreatieprogramma",
"en": "Recreation programme",
"de": null,
"fr": null,
"localized": "Recreation programme"
},
"start_date": "2026-07-06",
"end_date": "2026-07-12",
"urls": { "api": "https://example.com/api/v1/properties/12/programmes/48" },
"theme": {
"id": 7,
"name": {
"nl": "Zomer",
"en": "Summer",
"de": null,
"fr": null,
"localized": "Summer"
},
"description": {
"nl": "Zomerse week",
"en": "Summer week",
"de": null,
"fr": null,
"localized": "Summer week"
},
"image_url": "https://example.com/storage/themes/summer.jpg",
"highlighted": true
},
"days": [
{
"day": 1,
"date": "2026-07-06",
"activities": [
{
"id": 901,
"name": {
"nl": "Kinderdisco",
"en": "Kids disco",
"de": null,
"fr": null,
"localized": "Kids disco"
},
"starts_at": "2026-07-06T10:00:00+02:00",
"category": {
"id": 3,
"name": {
"nl": "Sport",
"en": "Sport",
"de": null,
"fr": null,
"localized": "Sport"
},
"explanation": {
"nl": "Activiteiten waarbij je actief beweegt.",
"en": "Activities where you move actively.",
"de": null,
"fr": null,
"localized": "Activities where you move actively."
},
"cta": {
"nl": "Doe mee",
"en": "Join",
"de": null,
"fr": null,
"localized": "Join"
},
"image_url": "https://example.com/storage/categories/sport.png"
},
"signup": { "enabled": true, "status": "open" }
}
]
}
],
"highlights": [
{
"type": "activity",
"id": 34,
"name": {
"nl": "Disco avond",
"en": "Disco night",
"de": null,
"fr": null,
"localized": "Disco night"
},
"header": {
"nl": "Vandaag uitgelicht",
"en": "Highlighted today",
"de": null,
"fr": null,
"localized": "Highlighted today"
},
"description": {
"nl": "Kom dansen met het animatieteam.",
"en": "Come dance with the entertainment team.",
"de": null,
"fr": null,
"localized": "Come dance with the entertainment team."
},
"image_url": "https://example.com/storage/highlights/disco.jpg",
"program_activity_id": 901
}
],
"more_info": {
"explanation_categories": [
{
"id": 3,
"name": {
"nl": "Sport",
"en": "Sport",
"de": null,
"fr": null,
"localized": "Sport"
},
"explanation": {
"nl": "Activiteiten waarbij je actief beweegt.",
"en": "Activities where you move actively.",
"de": null,
"fr": null,
"localized": "Activities where you move actively."
},
"cta": {
"nl": "Doe mee",
"en": "Join",
"de": null,
"fr": null,
"localized": "Join"
},
"image_url": "https://example.com/storage/categories/sport.png"
}
],
"explanation_footer_text": {
"nl": "Programma onder voorbehoud.",
"en": "Programme subject to change.",
"de": null,
"fr": null,
"localized": "Programme subject to change."
},
"online": {
"enabled": true,
"url": "https://example.com/demo-park",
"show_recrateam_logo": true,
"recrateam_logo_url": "https://example.com/images/logo-recrateam.svg"
},
"practical_information": [
{
"icon": "info",
"text": {
"nl": "Verzamelen bij de receptie.",
"en": "Meet at reception.",
"de": null,
"fr": null,
"localized": "Meet at reception."
}
}
]
}
}
Programma bestaat niet, is niet gepubliceerd, of hoort bij een ander bedrijf.
Ongeldige lang-querywaarde.
GET
/properties/{property-id}/age-tags
GET /properties/{property-id}/age-tags
Geeft leeftijdstags terug die daadwerkelijk worden gebruikt door gepubliceerde programma's van een publiek bedrijf.
Queryparameters
| Parameter | Beschrijving |
|---|---|
| lang | Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands. |
Voorbeeldverzoeken
Gebruikte leeftijdstags
GET /properties/{property-id}/age-tags
Engelse gelokaliseerde waarden
GET /properties/{property-id}/age-tags?lang=en
Antwoorden
JSON-array van leeftijdstagobjecten met dezelfde tekststructuur als age_tag-waarden van programma-activiteiten.
Antwoord
[
{
"id": 5,
"name": {
"nl": "Alle leeftijden",
"en": "All ages",
"de": null,
"fr": null,
"localized": "All ages"
}
}
]
Bedrijf bestaat niet of is niet publiek.
Ongeldige lang-querywaarde.
GET
/properties/{property-id}/areas
GET /properties/{property-id}/areas
Geeft locaties terug die daadwerkelijk worden gebruikt door gepubliceerde programma's van een publiek bedrijf.
Queryparameters
| Parameter | Beschrijving |
|---|---|
| lang | Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands. |
Voorbeeldverzoeken
Gebruikte locaties
GET /properties/{property-id}/areas
Duitse gelokaliseerde waarden
GET /properties/{property-id}/areas?lang=de
Antwoorden
JSON-array van locatieobjecten met dezelfde tekststructuur als area-waarden van programma-activiteiten.
Antwoord
[
{
"id": 8,
"name": {
"nl": "Sportveld",
"en": "Sports field",
"de": "Sportplatz",
"fr": null,
"localized": "Sportplatz"
}
}
]
Bedrijf bestaat niet of is niet publiek.
Ongeldige lang-querywaarde.
GET
/properties
GET /properties
Alle bedrijven met show_on_website. Bedoeld voor integratie en publieke kaarten.
Voorbeeldverzoeken
Publieke bedrijven weergeven
GET /properties
Antwoorden
JSON-array van publieke bedrijfsobjecten met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.
Antwoord
[
{
"id": 12,
"slug": "demo-park",
"name": "Demo Park",
"formatted_address": "Example Street 1, 1234 AB Amsterdam",
"coordinates": { "lat": 52.37, "lng": 4.89 },
"url": "https://example.com/demo-park",
"logo_url": "https://example.com/storage/properties/logos/demo.png",
"header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
}
]
GET
/properties/{property-id}
GET /properties/{property-id}
Geeft publieke bedrijfsdetails op id. Gebruik dit endpoint bij voorkeur voor opgeslagen integraties, omdat ids niet wijzigen wanneer een slug wijzigt.
Voorbeeldverzoeken
Bedrijf op ID
GET /properties/{property-id}
Antwoorden
Publiek bedrijfsobject met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.
Antwoord
{
"id": 12,
"slug": "demo-park",
"name": "Demo Park",
"formatted_address": "Example Street 1, 1234 AB Amsterdam",
"coordinates": { "lat": 52.37, "lng": 4.89 },
"url": "https://example.com/demo-park",
"logo_url": "https://example.com/storage/properties/logos/demo.png",
"header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
}
Bedrijf bestaat niet of is niet publiek.
GET
/properties/by-slug/{property-slug}
GET /properties/by-slug/{property-slug}
Geeft publieke bedrijfsdetails op slug. Gebruik dit voor ontdekking of gebruikerslinks; gebruik bij opgeslagen integraties bij voorkeur id.
Voorbeeldverzoeken
Bedrijf op slug
GET /properties/by-slug/{property-slug}
Antwoorden
Publiek bedrijfsobject met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.
Antwoord
{
"id": 12,
"slug": "demo-park",
"name": "Demo Park",
"formatted_address": "Example Street 1, 1234 AB Amsterdam",
"coordinates": { "lat": 52.37, "lng": 4.89 },
"url": "https://example.com/demo-park",
"logo_url": "https://example.com/storage/properties/logos/demo.png",
"header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
}
Bedrijf bestaat niet of is niet publiek.