Browser Chat or API: Choosing the Right Tool for Your Task

Browser chat suits hands-on work, the API suits automation. Per-token prices are the same; the differences are control, history, and how a conversation's cost grows.

5 min · · API keys · development · payments

Browser chat or API is a choice everyone faces when they start working with models. On Zukko both charge the same dollar balance at the same per-token prices, but they fit different scenarios. Here is when the chat is enough, when you need the API, and how cost is calculated in both cases.

What the Zukko chat is

The chat lives in the dashboard at zukko.pro/app/chat. It is a familiar conversation interface connected to your account:

  • models: the same ones available via the API, picked from a list in the chat;
  • billing: each answer is charged to the shared dollar balance;
  • transparency: every answer shows its token count and cost;
  • history: conversations are saved in your account, where you can continue or delete them.

You do not need an API key for the chat: you only need to sign in with a verified email and have a positive balance.

When the chat is enough

  1. You work by hand. You ask, read the answer, refine. No integration is needed.
  2. The task is one-off or rare. Analyzing one file, drafting a text, understanding an error.
  3. You are tuning a prompt. The chat is convenient for trying wordings and comparing answers from different models before moving them into code.

Example cost: a question with 3,000 input tokens of context and a 1,000-token answer on claude-sonnet-5: (3,000 × 0.3 + 1,000 × 0.3) / 1,000,000 = $0.0012. $10 covers 10 / 0.0012 ≈ 8,300 such requests.

How a long conversation adds up

The model does not "remember" the conversation by itself: with every new message, the whole previous exchange is sent to it again. So each next message in a long conversation costs more than the previous one.

Example: 20 messages, each a 200-token question and a 500-token answer, on claude-sonnet-5.

  • Input at message n: 700 × (n − 1) + 200 tokens.
  • Total input over 20 messages: 700 × 190 + 20 × 200 = 137,000 tokens; output: 20 × 500 = 10,000.
  • Cost: (137,000 + 10,000) × 0.3 / 1,000,000 ≈ $0.044.

The same 20 questions in 20 fresh conversations: (4,000 + 10,000) × 0.3 / 1,000,000 ≈ $0.0042. The takeaway is simple: when the topic changes, start a new conversation. This holds for both the chat and the API.

When you need the API

  1. Requests are frequent and similar. Processing every new email, classifying tickets, generating product descriptions.
  2. The model must work without a human. A bot, a backend, a scheduled script, CI.
  3. You need control. Your own system prompt, request parameters (max_tokens, response format), error handling, logging, retries.
  4. You need batch processing. A thousand documents is a loop in code, not a thousand copy-pastes.

The same request via the API costs the same $0.0012. The API saves time and manual mistakes, not money per token.

Convenience compared

AspectBrowser chatAPI
Getting startedSign in to the dashboardCreate a key, write code
RequestBy handA programmatic call
HistorySaved in your accountYou log it yourself
Conversation contextThe chat sends history for youYou pass messages yourself
Spend controlShared balanceLimits on each key
ResultYou read and copy itAlready in your program

A minimal API example

Python with the official OpenAI SDK:

bash
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.zukko.pro/v1",
    api_key=os.environ["OPENAI_API_KEY"],  # a fetch_... key
)

response = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Suggest three names for a note-taking service"}],
)

print(response.choices[0].message.content)
usage = response.usage
cost = (usage.prompt_tokens + usage.completion_tokens) * 0.3 / 1_000_000  # claude-sonnet-5 price
print(f"Tokens: {usage.prompt_tokens} + {usage.completion_tokens}, cost ≈ ${cost:.6f}")

The same with curl:

bash
curl https://api.zukko.pro/v1/chat/completions \
  -H "Authorization: Bearer fetch_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Hi!"}]
  }'

More in the quick start and the Chat Completions reference.

Spend control

In the chat, spending is limited only by your balance. For the API, each key can have a daily and a monthly dollar limit and a list of allowed models. When a limit is reached, requests with that key get HTTP 429 with code key_daily_limit_reached or key_monthly_limit_reached. If the balance is below $0.01, any request gets 402 insufficient_balance. Details are in the key limits section.

A practical order: chat first, then API

  1. Tune the prompt in the chat. Try several wordings and models, and look at the cost of the answers.
  2. Move the final version into code. The system instruction goes into role: system, examples go into messages.
  3. Create a separate key for the app with limits.
  4. Watch spending in the "Usage" section of the dashboard.

The chat and the API offer the same models: Claude, GPT and GLM. The current list is at GET https://api.zukko.pro/v1/models or on the "Models" page in the dashboard.

Creating an API key

  1. Open the keys page and click "Create key".
  2. Set a name (for example, python-script) and, if you like, daily and monthly limits and allowed models.
  3. Copy the fetch_... key right away: the full key is shown only once, at creation.
  4. Store it in an environment variable, not in code.

FAQ

Do I need a key to use the chat?

No. The chat works from your account and charges the shared balance. A key is only needed for API requests from programs and tools.

Do key limits apply to the chat?

Limits are set on keys and apply to API requests made with that key. The chat is limited by the account balance. To separate spending, use different keys for different apps and track their usage in the dashboard.

What if a key leaks?

Revoke it on the keys page with the "Revoke key" button; it stops working immediately. Then create a new one and update it in your app.

Can I continue the same conversation in the chat and the API?

No, they are separate: chat history is stored in the dashboard, while in the API you pass the conversation history yourself in the messages field. Just copy a good prompt from the chat into your code.

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

Browser Chat vs API: Differences, Pricing, When to Use Each · Zukko