Skip to main content
Pass your raw API key in the Authorization header on every request (same convention as Mobula, zero migration friction). No Bearer prefix: the header value is the key itself.

Get a key

1

Create an account

Sign up at serialized.xyz/signup with an email and password, Google or GitHub.
2

Add a card, unlock 100,000 free credits

In Billing, add a payment method. Nothing is charged today: the card unlocks your 100,000 free credits.
3

Create your keys

In API keys, create up to 5 active keys, one per app or environment. A key is shown once: store it as a secret. Rename, rotate or revoke it at any time from the same page.
Usage, invoices and your spend cap live in the portal at serialized.xyz/portal.

Try it instantly

Every endpoint page has an interactive playground that runs live against https://demo.serialized.xyz: no key needed, read endpoints, rate-limited per IP. Fill the parameters and send. To test with your own key, switch the server to https://api.serialized.xyz and paste your key in the Authorization field.

Pricing

  • Billed monthly for what you use. Credits are counted per calendar month (UTC). Your card is charged as usage accrues, then for the balance at the end of the month. Invoices and receipts are in Billing.
  • Free credits are granted once per account and carry over from month to month until they are used.
  • Monthly spend cap. Every account has a spend cap, 10,000permonthbydefault.Setyourownin[Billing](https://serialized.xyz/portal/billing),from10,000 per month by default. Set your own in [Billing](https://serialized.xyz/portal/billing), from 0 to $100,000. Reaching it pauses billable calls until you raise it or the next month starts.
  • Enterprise: high volume, dedicated limits, custom endpoints or chains. Talk to us.

Credits

Most endpoints cost 1 credit. The heavier ones: POST batch endpoints bill per item. Streams bill 1 credit per delivered event (see WebSocket). Only successful (2xx) responses are billed: you never pay for your own 4xx, for auth, billing or rate-limit rejections, or for a 5xx on our side. The full grid is also in the portal, under “What a call costs”. Every billable response carries X-Credits-Remaining: the credits your account can use right now, shared by all the keys of the account. It counts your free credits left plus your current billing allowance, which grows each time a usage payment goes through, up to your monthly spend cap. In a batch, only the items served are billed. An item that comes back as an { error } slot (unknown token, malformed address, a failure on our side) costs nothing, and a batch where every item fails still answers 200 and costs 0 credits.

Rate limits

The limit is per key, on a 1-minute window, with a per-second burst cap so a full minute’s budget cannot land in a single second. Standard X-RateLimit-* headers are on every response; exceeding a limit returns 429 with code RATE_LIMITED and a Retry-After header. Against the per-minute limit and the burst cap, a batch call counts as one request; batch items have their own per-second allowance of 10 × the burst cap (400 items/s on pay as you go). Against the group caps below, a batch counts one per item. A few endpoint groups carry their own per-key cap. The defaults below apply to every key and are raised on request: tell us your expected peak and we size the key.

Payment and quota responses

A billable call your account cannot pay for returns HTTP 402, with X-Credits-Remaining: 0 when the monthly allowance is reached. The body tells you why and what to do next:
error.code is PAYMENT_REQUIRED (the account needs a billing step) or QUOTA_EXCEEDED (the account reached its allowance for now). Branch on details.action, not on the message: the message is written for a human and may evolve. account_pending, verify_payment and payment_processing clear on their own: retry with a backoff (for example 30 seconds, then longer). The other actions need someone on your side to act in the portal: surface the message to your operators rather than retrying in a loop. A suspended account returns HTTP 403 with code FORBIDDEN (details.action = account_suspended). Contact hello@serialized.xyz. Zero-credit endpoints (including usage) stay reachable in every case, so you can always inspect your own state. Enterprise keys follow their contract: when a contracted monthly allowance is spent, billable endpoints return 402 QUOTA_EXCEEDED.

Usage introspection

Query your own consumption programmatically, at no credit cost, and a level of self-serve visibility no other provider exposes over the API:
  • GET /v1/usage: current month: { keyId, tenant, plan, month, scope, credits: { used, limit, remaining }, requests }. For keys created in the portal, scope is "account": the figures cover the whole account, all keys included.
  • GET /v1/usage/history: time series of requests and credits for the calling key, bucketed at 15m, 1h, 6h or 1d.
  • GET /v1/usage/breakdown: per endpoint for the calling key, stream channels included.
A key only ever sees its own account. The portal shows the same data across all your keys, with cost per endpoint and errors.

WebSocket

The first frame authenticates with your key. Close codes: On 4402, read the action from the close reason and handle it as in the table above; reconnect only once it is resolved. Streaming bills 1 credit per delivered event, on every channel; the connection itself is free. Details in the Streams overview.