Skip to content

Reference

Meta

The API describing itself: the specification and the terms. No token needed.

The API describing itself.

GET/terms

Terms of use

Access
No token needed
operationId
getTerms

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
curl -s "https://api.partyppl.nl/v1/terms"
JavaScript
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();
Python
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
200 · 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 use
  • 400The request is wrong. error.details.params names every bad parameter.
  • 500Something went wrong on our side. Quote request_id.

GET/openapi.json

The OpenAPI document

Access
No token needed
operationId
getOpenApi

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
curl -s "https://api.partyppl.nl/v1/openapi.json"
JavaScript
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();
Python
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
200 · Example response
{
  "openapi": "3.1.0",
  "info": {
    "title": "PartyPPL API",
    "version": "1.0.0"
  }
}

Statuses

  • 200The OpenAPI document
  • 400The request is wrong. error.details.params names every bad parameter.
  • 500Something went wrong on our side. Quote request_id.

The specification as JSON