Quotas & rate limits | Rijwind docs
Quotas & rate limits
Every Rijwind plan ships with a monthly request budget. We measure usage in quota units, not raw HTTP requests — most endpoints cost one unit per call, with a few exceptions.
Cost per endpoint
| Endpoint | Cost | Notes |
|---|---|---|
GET /v1/tiles-token | 1 unit | One "tile session", not one tile. |
GET /v1/geocode/search | 1 unit | Free-text address → coords. |
GET /v1/geocode/autocomplete | 0.1 unit | Same backend, billed at a tenth so you can fire on every keystroke. |
GET /v1/geocode/reverse | 1 unit | Coords → nearest place. |
POST /v1/route | 1 unit | Two or more waypoints. |
POST /v1/matrix | M × N units | M = sources, N = targets. Capped at 2500. |
POST /v1/isochrone | 5 × L × C units | L = locations, C = contours. Capped at L×C ≤ 4 → max 20 units. |
Sub-unit costs (autocomplete = 0.1) are tracked internally with
integer arithmetic at ×10 resolution; the dashboard rounds to whole
units when displaying usage.
When usage resets
The quota period is a per-user 30-day cycle, not a calendar month. On a paid plan the cycle starts at your current billing anniversary (the moment your subscription was last renewed); on the free plan it starts at the moment you verified your email. The next reset moment is shown on your dashboard so two users on the same plan can reset on different days.
The boundary is checked on every billable request: when the cycle rolls over, the counter resets to zero before the request is counted. There is no separate cron job to wait for.
Hard cap vs soft cap
Each plan has a cap_mode:
hard— once you reachmonthly_request_limit, every billable request returns429 quota_exhausteduntil the next period rolls over. This is the default for free + low-tier plans.soft— usage is logged past the limit but requests are never blocked. The overage is invoiced on top of the base subscription at the end of the month. This is for plans where unblocked traffic matters more than predictable cost.
You can see your plan's cap mode on the Plans page and your current usage on the dashboard.
Request-shape caps (hard, plan-independent)
A few endpoints reject oversized request shapes before billing — these caps protect the routing backend from runaway workloads and are not plan-specific.
| Endpoint | Cap | Response |
|---|---|---|
/v1/matrix | M × N ≤ 2500 | 400 matrix_too_large if exceeded. |
/v1/isochrone | len(locations) × len(contours) ≤ 4 | 400 if exceeded. |
Asking for more than a cap allows is a request-shape error, not a quota error — fix the request, retry.
Per-IP and burst limits
The /v1/tiles-token endpoint additionally enforces a per-IP rate cap
at the CDN edge. This is independent of monthly quota — its job is to
bound the blast radius of a leaked token, not to ration anyone.
For now there is no hot-path per-second rate limit on the other v1
endpoints; quota is the only ceiling. If we add one, it will land here
first as a Retry-After header on 429.