Limits and quotas

Every limit here exists so that one identity cannot make the service unusable for everyone else. They are set by the operator and can differ between deployments; the numbers your deployment enforces are the ones the API reports back to you.

Per identity

Domains. An identity may hold a bounded number of registrations. Registering past it answers QuotaExceeded, and the message names the limit. Releasing a domain frees a slot.

Tiles. A bounded number of tile records per identity, answered as TileQuotaExceeded.

Live preparations. A bounded number of validated-but-unpublished records at once, answered as PreparedQuotaExceeded. Publish the ones you meant to publish, or let them expire. At most one preparation is live per record key regardless, so the usual way to hit this is to have started many different records.

Per record

Site bytes and tile bytes are each capped, as is the number of entries in a manifest. The app shows both as running totals while you assemble a bundle, so you see the ceiling approaching rather than discovering it at publish.

Both caps count the resolved result. A site bound to a tile is measured against the tile's bytes, not against a fresh copy — binding a tile does not consume your site budget twice over.

Per upload

Blobs go to your own personal data server, so its limit applies to a single file, not ours. When you exceed it the server's own message is relayed to you verbatim, with the size, because it is the server that refused and it knows why.

Our per-request cap on the upload shim is separate and larger; it exists so that a single request cannot exhaust the process.

Rate limits

The control plane is rate-limited per identity and per address. Two specific ones are worth knowing:

Exceeding a limit answers RateLimitExceeded. Back off; do not retry in a loop.

Reservations that expire

An unverified registration is released after 168 hours. A preparation expires after its own shorter window. Neither expiry loses anything you wrote — the record, if you wrote one, is in your repository, and re-registering or re-validating starts the process again.

Asking for more

Quotas are an operator setting. If you are running into one for a legitimate reason, the contact address in the footer is the place to ask.