De API gebruiken
Limieten en quota
Drie limieten, die elk gemeld worden voor je ze bereikt: requests per seconde, requests per maand en match-evaluaties per maand.
Per plan
| Developer | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Requests per maand | 10.000 | 100.000 | 500.000 | Onbeperkt |
| Match-evaluaties per maandEén onderneming geëvalueerd tegen alle maatregelen. | 100 | 1.000 | 10.000 | Onbeperkt |
| Requests per seconde | 5 | 15 | 40 | 150 |
| API-sleutels | 2 | 3 | 5 | 50 |
| Rijen per pagina | 100 | 200 | 200 | 500 |
| Ondernemingen per bulkmatch | Niet inbegrepen | Niet inbegrepen | 500 | 5.000 |
| Ondernemingen op watchlists | Niet inbegrepen | Niet inbegrepen | 5.000 | Onbeperkt |
| Webhook-endpoints | Niet inbegrepen | 5 | 10 | 50 |
| Change feedGET /v1/changes | Inbegrepen | Inbegrepen | Inbegrepen | Inbegrepen |
| Versies van elke maatregelGET /v1/subsidies/{id}/versions | Niet inbegrepen | Inbegrepen | Inbegrepen | Inbegrepen |
| Een maatregel zoals hij op een datum was?as_of= | Niet inbegrepen | Inbegrepen | Inbegrepen | Inbegrepen |
| Webhooks | Niet inbegrepen | Inbegrepen | Inbegrepen | Inbegrepen |
| BulkmatchingPOST /v1/match/bulk | Niet inbegrepen | Niet inbegrepen | Inbegrepen | Inbegrepen |
| Watchlists | Niet inbegrepen | Niet inbegrepen | Inbegrepen | Inbegrepen |
| Export van de hele catalogusNDJSON | Niet inbegrepen | Niet inbegrepen | Inbegrepen | Inbegrepen |
| Herverdelingsrechten (bij contract) | Niet inbegrepen | Niet inbegrepen | Niet inbegrepen | Inbegrepen |
Rechtstreeks uit GET /v1/plans, de tabel die de API toepast. De prijzen staan op prijzen.
Een account zonder plan kan een sleutel aanmaken, maar die sleutel antwoordt op elke route 402 subscription_required, nog voor er een limiet geteld wordt, tot er in het dashboard een plan gekozen is.
Requests per seconde
Elk account heeft een token bucket op maat van zijn plan, gedeeld door al zijn sleutels, met een burst van één seconde aan requests: een handvol parallelle requests gevolgd door een pauze is prima, een lus zonder rem niet. Daarboven is het antwoord 429 rate_limit_exceeded met Retry-After: 1. De rate limit wordt vóór het quotum gecontroleerd, zodat een client in zo’n lus te horen krijgt dat hij moet vertragen, en niet dat zijn maand op is. De routes zonder sleutel worden in de plaats daarvan per adres van de client beperkt.
Requests per maand
Elke request naar een route met sleutel telt één keer, wat hij ook teruggeeft, het MCP-endpoint en GET /v1/key inbegrepen; een request zonder geldige sleutel of zonder plan, of een die door de rate limit of het quotum zelf geweigerd wordt, telt niet. Live- en testsleutels tellen op dezelfde manier. De maand is de UTC-kalendermaand. Is ze op, dan is het antwoord 429 quota_exceeded, met in Retry-After het aantal seconden tot de volgende maand begint. Enterprise heeft geen maandlimiet.
Match-evaluaties
Matching heeft een eigen maandelijkse hoeveelheid, los van de requests geteld. Een match-evaluatie is één onderneming, geëvalueerd tegen alle maatregelen:
| Call | Evaluaties |
|---|---|
| POST /v1/match | 1 |
| POST /v1/match/bulk | Eén per onderneming met geldige gegevens; een onderneming die een eigen fout terugkrijgt, telt niet. |
| POST /v1/watchlists/{id}/companies | Eén per aanvaarde onderneming, toegevoegd of vervangen. |
| MCP match_company, explain_eligibility | Elk 1. |
| Een watchlist opnieuw evalueren als een maatregel verandert | Niets. Inbegrepen in het plan. |
Is de hoeveelheid op, dan antwoordt matching 429 match_quota_exceeded (met details.limit en Retry-After), en al de rest blijft werken: je kunt nog altijd maatregelen zoeken en lezen. Een bulkrequest of watchlist-upload die over de hoeveelheid zou gaan, wordt in zijn geheel geweigerd, en er wordt niets van geëvalueerd of geteld. GET /v1/key meldt match_evaluations_this_month.
Headers
Elk antwoord van een route met sleutel bevat de maandcijfers:
| Header | Betekenis |
|---|---|
| RateLimit-Limit | Het maandelijkse requestquotum van je plan. |
| RateLimit-Remaining | Resterende requests deze maand, na deze. Het wordt 0 bij de laatste request die je mag doen. |
| RateLimit-Reset | Seconden tot het quotum opnieuw begint, bij het begin van de volgende UTC-maand. |
| X-Quota-Limit, X-Quota-Remaining | Dezelfde twee cijfers onder een tweede naam. |
curl -sI "https://api.subsido.be/v1/subsidies?limit=1" -H "Authorization: Bearer sb_live_..." | grep -i -E "ratelimit|quota"- Een onbeperkt plan stuurt geen header
-Limitof-Remainingin plaats van een heel groot getal;RateLimit-Resetwordt wel gestuurd. - De headers beschrijven het maandelijkse requestquotum, niet de limiet per seconde en niet de match-evaluaties.
- Browsers kunnen ze lezen: de API stelt ze open voor cross-origin JavaScript.
Andere grenzen
Per request
| Wat | Limiet |
|---|---|
| Rijen per pagina | De max_page_size van het plan. Zie paginering. |
| Matches die POST /v1/match teruggeeft | limit, 1 tot 100 (standaard 25). |
| Ondernemingen in POST /v1/match/bulk | De max_bulk_companies van het plan; daarboven plan_required, met het plan dat het wel toelaat. |
| Ondernemingen per watchlist-upload | 1.000. |
| Zoektekst q | 200 tekens. |
| Downloads van de volledige export | Twee tegelijk voor de hele dienst; een derde wacht (429, Retry-After: 5). |
Per account
| Wat | Limiet |
|---|---|
| API-sleutels | De api_keys van het plan. |
| Watchlists | 50. |
| Ondernemingen over alle watchlists | De watchlist_companies van het plan. |
| Webhook-endpoints | De webhook_endpoints van het plan. |
Meer nodig?
