A gateway for agencies and freelancers: per-client billing

When several client projects run through one account, the hard part isn't finding a model — it's not losing track of who spent what.

5 min · · Updated · бизнес

If you're running several AI-driven projects at once — an agency with five clients, or a freelancer delivering work against different budgets — a single shared key for everything quickly turns into "figure out later who spent what." The gateway has concrete tools for this, not just one account-wide balance.

One key per client, not one key for everything

Keys in the fetch_... format are created in the cabinet at https://zukko.pro/app/api-keys, and nothing stops you from creating a separate key per client or project. This isn't just a formality, but note: /v1/usage history is shared across the whole account (all keys together, no per-key filter), and the balance is account-wide too. The practical way to split spend by client is the X-Zukko-Cost-Micros header — on every regular (non-streaming) response it shows the exact cost of that specific call; log it on your side together with the key that made the request, and you get a precise number to invoice against without manually parsing a shared log. Streaming responses (stream: true) don't carry this header — if you need strict separation for those too, set up a separate account for the client.

bash
curl https://api.zukko.pro/v1/usage \
  -H "Authorization: Bearer fetch_your_key"

Cursor-based pagination on /v1/usage lets you pull the whole account's charge history in chunks — useful for building your own periodic report instead of eyeballing numbers.

Limits as insurance, not just savings

Every key can carry a daily and monthly dollar spend limit plus a list of allowed models, set in the cabinet. For an agency, this covers two different problems at once.

The first: a client on a fixed budget shouldn't accidentally blow past it because of an automation bug or a looping agent. A hard monthly limit on the key handles this at the infrastructure level instead of relying on manual watching.

The second: if a client only paid for access to a certain tier of models — say glm-5.3-flash and glm-5.3, but not claude-opus-5-5 — the allowed-models list on that key stops the project from accidentally sliding onto an expensive model midway through. Calling a blocked model returns a clean 403 model_not_allowed_for_key, not a silent budget overrun.

Idempotency matters especially in client-facing automation

Agent pipelines that generate content or reports for clients on a schedule usually build in retries for network failures. Without an Idempotency-Key (unique per logical request and identical across its retries), every retry after a response that actually went through but wasn't received by the client's code becomes a duplicate charge against someone else's budget. With the header, a retry within 24 hours simply returns the same stored result for free. For per-client billing this isn't a minor detail — the difference between "correctly counted spend" and "an accidentally doubled invoice" hits margin directly.

Caching pays off on templated work

If part of the client work is repetitive — the same checks, repeated classification of the same content, templated generations — turn on caching with X-Zukko-Cache: true (temperature: 0 also enables it, but only on models that accept it — Claude models may reject a temperature other than 1). A fully identical request (the whole body matches) repeated within 7 days for chat comes back instantly and free, flagged with X-Zukko-Cache: hit. Across several client projects at once, that's a real saving, not a theoretical one.

The referral program as income, not just a discount

If you bring other freelancers or agencies onto the platform, the referral program pays 10% of what invited users top up — worth treating as an ongoing revenue stream as your own practice scales, not a one-time bonus.

Payment options for international clients

Payment methods include SBP, a bank card via PayPear, crypto, and, as of 2026-09-16, a foreign Mastercard EU card via Fride (about 13% fee, amounts from $2 to $594; the minimum top-up for the other methods is $1). That matters if part of your client base or your own team operates outside Russia and needs a way to top up without a local card.

Split by language when it comes to documentation

The site is bilingual: the Russian version sits at the root, the English one under /en. If you're handing a client documentation or reporting in English, you can link directly to the matching language version of the cabinet and docs pages instead of translating by hand.

What the gateway doesn't do for you

Worth being clear about the boundaries: the gateway doesn't invoice your clients for you and doesn't build a ready-made per-project dashboard — it gives you precise raw data (keys, limits, /v1/usage history, cost headers on every request), and rolling that into a client-facing report or your own billing system is on you. For an agency with a handful of clients, a spreadsheet updated weekly from your per-key X-Zukko-Cost-Micros logs, reconciled against the shared /v1/usage history, is usually enough; as the number of projects grows, a small script that pulls this automatically into your own database is worth writing.

A practical setup to start with

  1. Create a separate key per active client at https://zukko.pro/app/api-keys.
  2. Set a daily/monthly limit matching that client's budget, plus an allowed-models list.
  3. Turn on Idempotency-Key (a fresh one per logical request) in any automation that retries.
  4. Log X-Zukko-Cost-Micros per key on your side and reconcile the totals against the shared /v1/usage history each billing period before invoicing the client.
  5. For billing questions or outages, support is on Telegram: https://t.me/zukkopro?direct.

None of this requires anything beyond what's already in the cabinet and the API — it just maps the existing tools onto individual clients instead of one shared account for everything.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

API gateway for agencies: per-client cost tracking · Zukko