Skip to main content
Docs navigation

Pricing

Tilery uses prepaid credits, metered per operation. No subscription and no tiers — top up a credit pack, then pay only for what you serve. When the balance runs out, serving stops. No surprise invoices.

What a credit is

A credit is the unit everything is counted in — your balance, each operation’s price, and every line of your usage. It exists because operations cost wildly different amounts and all of them cost a fraction of a cent: pricing them in euros would mean quoting six decimal places, and pricing them in tiles would stop working the moment Tilery serves anything that is not a tile. Credits stay exact whatever the catalogue grows to hold.

  • Vector tiles10 credits per 1 000 · €0.04 per 1 000

Before VAT, from the €10 pack.

The €10 pack buys:

2 500 credits
€10.00 · 250 000 vector tiles

How metering works

Each /map/tiles/vector/{z}/{x}/{y} response is one vector tile, priced at the published rate above. Fonts, sprites, style JSON and TileJSON are free and unmetered, and anything that doesn’t return 200 is never billed.

What you serve counts against your balance within about two hours. Your usage dashboard shows it sooner than that; the balance follows.

Your balance is your cap

When your balance reaches zero we keep serving a little longer — the overrun allowance, so a final in-flight hour is never cut off mid-map:

125 credits
€0.50 · 12 500 vector tiles

Past that, the API returns 402 Payment Required until you top up again.

If usage outruns your balance

Because usage counts against your balance within about two hours, the last hours before the stop can serve slightly more than the balance covers. That is never invoiced — it is recorded as unbilled usage, shown on Credits, and collected automatically once your balance covers it: the top-up that brings your balance to at least that amount clears it, and the rest stays as available balance. The Credits page says how much that top-up needs to be, and which pack covers it.

Unbilled usage is only ever collected from top-ups — Tilery never sends a separate invoice, and your balance never goes negative.

Running out stops serving; it is not a soft alert. An email always fires when the balance reaches zero, and you can configure up to two additional low-balance alert levels under Credits → Alerts — but if you want to be paged earlier, wire your own monitoring against the usage dashboard.

VAT

All prices on Tilery are quoted before 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 your credit history (top-ups in, spend out, both in credits with their euro value) 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 Requests when 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 balance

Tile URLs 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 tiles 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.

Top up