Rate limits
Hoeveel verzoeken je mag doen, hoe je ziet waar je staat en hoe je netjes terugschaalt.
Limieten
| Limiet | Aantal | Omschrijving | Venster (seconden) |
|---|---|---|---|
key_minute | 120 | verzoeken per minuut voor deze sleutel | 60 |
company_minute | 300 | verzoeken per minuut voor dit bedrijf | 60 |
company_writes | 60 | schrijfacties per minuut voor dit bedrijf | 60 |
company_heavy | 10 | zware acties per minuut voor dit bedrijf | 60 |
company_day | 50.000 | verzoeken per dag voor dit bedrijf | 86400 |
auth_failures | 20 | mislukte aanmeldingen per minuut vanaf dit IP-adres | 60 |
De limiet per bedrijf geldt voor alle sleutels van je bedrijf samen. Schrijfacties (POST, PATCH, DELETE) tellen daarnaast mee voor de schrijflimiet. De vensters zijn vast: een minuutlimiet begint elke hele minuut opnieuw, de daglimiet om middernacht UTC. Een geweigerd verzoek telt ook mee. Heb je structureel meer nodig? Neem dan contact op met support.
Zware acties hebben een eigen, krappere limiet: een offerte of factuur mailen, een pdf ophalen, een bericht in de inbox sturen, een reviewverzoek versturen, een klant een bericht over een afspraak sturen en een testbericht naar een webhook-endpoint.
Daarnaast gelden er een paar grenzen die niets met het tempo van je verzoeken te maken hebben, maar die je wel als 429 rate_limited terugziet:
- maximaal 200 uploads (bijlagen en werkbonfoto's) per bedrijf per dag, als
429 rate_limited; - maximaal 20 berichten per uur in hetzelfde gesprek, als
429 rate_limited; - maximaal 250 uitgaande berichten en mails aan klanten per bedrijf per uur (inbox, offerte- en
factuurmail samen) en hoogstens 20 verzendingen van hetzelfde document per 24 uur. In de inbox komt
dat terug als
429 rate_limited; bij het mailen van een offerte of factuur als403 forbidden.
Headers
Elk antwoord vertelt waar je staat:
| Header | Betekenis |
|---|---|
RateLimit-Policy |
Alle limieten die voor dit verzoek gelden |
RateLimit |
Resterend aantal en seconden tot de reset, voor de krapste limiet |
X-RateLimit-Limit |
Omvang van de krapste limiet |
X-RateLimit-Remaining |
Nog beschikbaar in het huidige venster |
X-RateLimit-Reset |
Unix-tijd waarop het venster opnieuw begint |
Bij een 429
Een 429 rate_limited heeft een header Retry-After met het aantal seconden dat je moet wachten. Het veld limit in het antwoord noemt de limiet die je raakte.
async function request(url, options, attempt = 0) {
const response = await fetch(url, options);
if (response.status === 429 && attempt < 5) {
const seconds = Number(response.headers.get('Retry-After') ?? 1);
await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
return request(url, options, attempt + 1);
}
return response;
}Tip
Verdeel grote synchronisaties over de tijd en gebruik limit=100, dan haal je met minder verzoeken meer op.
Laatst bijgewerkt op 21 september 2026