Reference
Meta
The API describing itself: the specification and the terms. No token needed.
The API describing itself.
GET/terms
Terms of use
What you agree to by using this API: attribution, what you may not redistribute, the limits and where the data comes from. Needs no token, so you can read it before you ask for one.
Example request
curl -s "https://api.partyppl.nl/v1/terms"const res = await fetch("https://api.partyppl.nl/v1/terms");
if (!res.ok) throw new Error((await res.json()).error.message);
const { data, meta } = await res.json();import os
import requests
res = requests.get(
"https://api.partyppl.nl/v1/terms",
timeout=30,
)
res.raise_for_status()
payload = res.json()Show the example response
{
"data": {
"version": "2026-09-22",
"attribution": {
"text": "Event data from PartyPPL. Link back to the event page on partyppl.nl.",
"url": "https://partyppl.nl",
"terms": "https://api.partyppl.nl/v1/terms"
},
"rules": [
"Credit PartyPPL wherever you show this data, with a link back to the event's page on partyppl.nl."
],
"rate_limits": {
"per_minute": 120,
"per_day": 10000
},
"data_sources": "Organisers who publish with us, and the public agendas we import from.",
"sources_url": "https://partyppl.nl/bronnen",
"contact": "api@partyppl.nl",
"provider": {
"name": "PartyPPL",
"chamber_of_commerce": "97359866",
"vat": "NL005264805B67",
"address": "Pater R.D. Kloegstraat 7, 5684 TK Best, the Netherlands"
}
},
"meta": {
"request_id": "9f1c2b4a-7e3d-4a10-9c2f-6b8d1e5a0c33",
"attribution": {
"text": "Event data from PartyPPL. Link back to the event page on partyppl.nl.",
"url": "https://partyppl.nl",
"terms": "https://api.partyppl.nl/v1/terms"
}
}
}Statuses
200Terms of use400The request is wrong.error.details.paramsnames every bad parameter.500Something went wrong on our side. Quoterequest_id.
GET/openapi.json
The OpenAPI document
This API as OpenAPI 3.1, generated from the same declarations the router dispatches on. Needs no token. Not wrapped in the envelope: it is the specification itself.
Example request
curl -s "https://api.partyppl.nl/v1/openapi.json"const res = await fetch("https://api.partyppl.nl/v1/openapi.json");
if (!res.ok) throw new Error((await res.json()).error.message);
const { data, meta } = await res.json();import os
import requests
res = requests.get(
"https://api.partyppl.nl/v1/openapi.json",
timeout=30,
)
res.raise_for_status()
payload = res.json()Show the example response
{
"openapi": "3.1.0",
"info": {
"title": "PartyPPL API",
"version": "1.0.0"
}
}Statuses
200The OpenAPI document400The request is wrong.error.details.paramsnames every bad parameter.500Something went wrong on our side. Quoterequest_id.