Docs navigation
Pricing & quotas
Tilery uses prepaid credits, metered per request. No subscription required and no tiers — top up a credit pack, then pay only for what you serve. When the balance runs out, requests stop. No surprise invoices.
What a credit is
A credit is Tilery’s metering unit. Every capability has a published price in credits, and a credit pack buys a fixed number of them — so your balance tells you how much service you have left, not how much money.
| Capability | Credits per request | Per 1 000 requests |
|---|---|---|
| Vector tiles | 10 | €0.04 |
€10 buys 2 500 000 credits — about 250 000 vector tiles. Prices excl. VAT.
How metering works
Each /map/tiles/vector/{z}/{x}/{y} response counts as one billable event, priced at the published rate for its capability below. Fonts, sprites, style JSON and TileJSON are free and unmetered, and a request that doesn’t return 200 is never billed.
Counts are tracked in ClickHouse and rolled up hourly. Once per hour the accumulated spend is deducted from your credit balance.
Your balance is your cap
When your balance reaches zero (with a small grace allowance — roughly 12 500 tiles — so a final in-flight hour can still settle), the API returns 402 Payment Required on tile requests until you top up again.
If usage outruns your balance
Because spend settles hourly, the last hours before the stop can serve slightly more tiles than your remaining balance covers. That overshoot is never invoiced — it is recorded as unbilled usage, shown on Credits, and collected automatically from your next top-up: the top-up first clears what's outstanding, and the rest becomes available balance.
Outstanding usage is only ever collected from top-ups — Tilery never sends a separate invoice, and your balance never goes negative.
VAT
All prices on Tilery are quoted excl. VAT. Creem (our merchant of record) calculates VAT based on your billing country and adds it as a separate line at checkout. EU VAT-registered businesses can supply a VAT number to apply the reverse charge and pay no VAT through Tilery.
Creem issues the tax invoice for each purchase. The Tilery dashboard shows the credit history (purchases in, hourly spend out) so you can reconcile usage against the invoice.
Rate limits
Separate from the balance check, two per-second limits protect the service:
- Per-IP RPS limit — returns
429 Too Many Requestswhen exceeded. Normal map rendering never comes close. - Auth failure limit — an IP racking up repeated failed auth attempts is temporarily blocked. Brute-force protection, also
429.
Caching stretches your quota
Tile requests carry the access token as a ?token= query param, so a naive browser cache would miss on every token rotation. The @tilery/client service worker normalizes cache keys by stripping the token param — so repeat tiles come from the cache even after the token rotates, and offline tiles keep working.
If you integrate without the client SDK you lose this benefit and each token rotation re-downloads every tile in view. Use the SDK unless you have a specific reason not to.
You're also free to proxy tile requests through your own backend and cache them in your own CDN or origin — that's fully allowed and is often a good fit if you already run a CDN or need per-user gating. See proxying through your own backend for the architecture sketch.