Conventions
Rate limits and quotas
Limits are per token. Every response says where you stand, so you can slow down before you hit a 429.
The numbers
| Limit | Value |
|---|---|
| Requests per minute, per token | 120 |
| Requests per day, per token (default) | 10,000 |
| Items per page | default 25, at most 100 |
| OAuth: registrations per address | 30 per 10 minutes |
| OAuth: registrations for the whole platform | 1,000 per hour |
| OAuth: token requests per address | 120 per minute |
The headers
| Header | Meaning |
|---|---|
X-Request-Id | Id of this request, quote it in a support mail. |
X-RateLimit-Limit | Requests allowed per minute for this token. |
X-RateLimit-Remaining | Requests left in the current minute. |
X-RateLimit-Reset | Unix seconds at which the minute window resets. |
Retry-After | On a 429: how many seconds to wait. |
Over the limit? You get 429 rate_limited with Retry-After in seconds. For the daily quota that is the time until midnight in Amsterdam, when the quota starts again.
Caching and ETag
Public responses (the agenda) are the same for everyone and carry an ETag and a Cache-Control with max-age. Send the ETag back in If-None-Match; when nothing changed you get 304 without a body. Responses about your own organisation or your token are private, no-store.
curl -s -i "https://api.partyppl.nl/v1/genres" \
-H "Authorization: Bearer $PPL_TOKEN" \
-H 'If-None-Match: "<etag>"'Making more tokens to get around the limits is not allowed. If you really need more, mail api@partyppl.nl: the daily quota can be raised per token.
Updated