Claude and GPT API for studying: how a student avoids overpaying

Five subscriptions for five different tasks makes no sense on a student budget. Here's how to get one key for every model and pay only for what you use.

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

A paper needs Claude to parse a text, a lab report needs GPT to crunch numbers, and a language essay is easier to draft with GLM. Signing up for three separate subscriptions for that is pointless — each has its own minimum payment, and you spend half the month paying for tools you're not touching.

One key instead of a stack of subscriptions

A fetch_... key gives access to Claude, GPT and GLM models: currently claude-opus-5-5, claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3 and glm-5.3-flash (current list: GET https://api.zukko.pro/v1/models). Image generation through Zukko is temporarily unavailable. You get it from the dashboard at /app/api-keys, shown once at creation, then it's just a header:

bash
curl https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"glm-5.3-flash","messages":[{"role":"user","content":"Shorten this text to three paragraphs"}]}'

You pay as you go — not a flat fee, but a charge for the tokens of the specific request. If you didn't touch the API during a session, the bill doesn't grow.

Balance is checked before the request reaches the model

If the balance is empty, the request returns 402 with the body {"error":{"message":"Недостаточно средств на балансе","code":"insufficient_balance"}} before it ever reaches the provider — meaning a failed attempt costs nothing. That matters in practice: if you're looping on a request body with a typo, the retries don't quietly drain your balance.

Cheap models for routine work, expensive ones for what actually needs it

Not every task needs the top-tier model. Summarizing a textbook chapter, translating a paragraph, cleaning up an email to a professor — that can go to a cheap model like glm-5.3-flash ($0.04 per 1M tokens) or gpt-5.6-luna ($0.10). Working through a theorem's proof, finding a bug in your thesis code, or synthesizing a literature review from fifty sources is worth trying on claude-opus-5-5 or gpt-5.6-sol ($0.30, 1M token context) — test which one does better on your own tasks.

Current limits and pricing per model are visible without a key:

bash
curl https://api.zukko.pro/v1/models/info

Check the price before running something a lighter model could handle through the flagship — over a semester, the difference adds up.

Connecting without fighting configs

For Claude Code and the official Anthropic SDK, the base URL is https://api.zukko.pro, no /v1 at the end — the client appends the path itself:

bash
export ANTHROPIC_BASE_URL=https://api.zukko.pro
export ANTHROPIC_AUTH_TOKEN=fetch_your_key

For Cursor, Codex, and other OpenAI-compatible tools, it's with /v1:

OPENAI_BASE_URL=https://api.zukko.pro/v1 OPENAI_API_KEY=fetch_your_key

A mixed-up suffix is the most common cause of a 404 on first connection — if nothing works right away, check this first.

A hard spending ceiling on the key page

On the key's page in the dashboard you can set a daily and monthly spend limit in dollars and restrict which models the key can call. For a student budget, that's a real safety net: set a $3 monthly cap, and the system won't charge past it even if you accidentally leave a script running in a loop. Hitting a key's own limit returns 429 with key_daily_limit_reached or key_monthly_limit_reached.

Fifty free cents to try it out

There's no starting balance on regular signup anymore — that practice was dropped on September 18, 2026, after abuse from disposable-email registrations. But there is a one-time $0.50 bonus for subscribing to the Telegram channel @zukkopro — link Telegram in the dashboard, subscribe to the channel and press "Check"; the bonus is given once per Telegram account. That's enough to run your first requests and see whether a model actually fits your task before topping up for real.

If you're sharing keys with classmates on a joint project, there's also a referral program — 10% of whatever people you invite top up gets credited to your balance.

Paying from Russia and elsewhere

Top-ups work via SBP, bank card (through PayPear), crypto, and — since September 16, 2026 — foreign Mastercard EU cards through Fride (about 13% fee, amounts $2–$594). The minimum top-up is $1. For most students that settles the "how do I even pay for this" question that usually pushes people toward sketchy reseller services.

If something breaks an hour before a deadline

Test the key on its own, separate from whatever tool you're using:

bash
curl https://api.zukko.pro/v1/messages \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-5","max_tokens":64,"messages":[{"role":"user","content":"test"}]}'

If a response comes back, the problem is in Cursor's or Claude Code's settings, not the key. If a support question is stuck, write to Telegram support — they answer faster than most university offices.

Dorm Wi-Fi drops connections, but you shouldn't get charged twice for it

One detail that saves real frustration on shaky internet: if a request went out but the response never arrived because the connection dropped, resending the same request risks paying twice for the same generation. That's what the Idempotency-Key header is for: send it with a unique value (a UUID generated once for that specific logical request, and kept the same across its retries, works fine), and repeating the request with the same value within 24 hours returns the exact same response without charging again.

bash
curl https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f29a1-thesis-chapter2" \
  -d '{"model":"claude-sonnet-5","messages":[{"role":"user","content":"Check the argument in section two"}]}'

If the request body changes between the first send and the retry while keeping the same Idempotency-Key, the server responds with 422 idempotency_conflict — that's a safeguard against accidental mix-ups, not a bug. Keep the idempotency key stable for retries of the same request, and generate a new one for a new request.

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_*

Claude and GPT API for students: avoid overpaying · Zukko