Get API key
How llm.buzz worksAuthentication
How llm.buzz works

Authentication

Every request carries one of your keys. You create keys in the console, send them in the Authorization header, and can give each one a spending limit.

On this page

Create a key

Open Keys in the console and create a key. A key looks like exp_vk_.... The console shows the whole key once, when you create it, so copy it then and keep it in an environment variable or a secret store.

A key is one of two kinds:

KindWhat it calls
InferenceThe model API: Chat Completions, Responses, Messages and its count_tokens, Embeddings, Images, audio, the generation record (/api/v1/generation) and the model listings.
ManagementOnly the key routes: /api/v1/key, /api/v1/credits and /api/v1/keys.

A key expires after 30, 90 or 365 days, or never, as you choose when you create it. On the Keys page you can disable a key and enable it again, or revoke it for good.

Send the key

Send the key as a bearer token on every request:

curl https://api.llm.buzz/api/v1/models \
  -H "Authorization: Bearer $LLM_BUZZ_KEY"

The Messages API (/api/v1/messages) also takes the key in x-api-key, the header the Anthropic SDK sends. Point the Anthropic SDK at https://api.llm.buzz/api, without /v1: the SDK adds /v1/messages itself.

from anthropic import Anthropic
import os

client = Anthropic(
    base_url="https://api.llm.buzz/api",
    api_key=os.environ["LLM_BUZZ_KEY"],
)
message = client.messages.create(
    model="deepseek/deepseek-v4.1-flash",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(message.content[0].text)

Model names are matched exactly, and Claude Code's own default model names do not resolve on llm.buzz, so set every model it uses to a name from llm.buzz: ANTHROPIC_MODEL for the main model, and ANTHROPIC_DEFAULT_HAIKU_MODEL for the small model it runs background tasks on. If you switch models with /model, set ANTHROPIC_DEFAULT_SONNET_MODEL and ANTHROPIC_DEFAULT_OPUS_MODEL too. Any model on llm.buzz works there, Claude or not.

Organizations

Keys, credit and logs belong to an organization. Signing up creates your own organization, and you can join others by invitation: an organization's owners and admins invite its members from the console, each with a role (owner, admin, billing or member). In an organization, each member has their own keys and logs, every member's requests draw on the organization's one prepaid balance, and its admins set its data policy and prompt logging on the Prompt logs page. The console's organization switcher picks the organization you work in.

Check a key

GET /api/v1/key describes the key you send: its name, its limit, what is left of it and when it resets, its spend today, this week, this month and in total, and when it expires.

curl https://api.llm.buzz/api/v1/key \
  -H "Authorization: Bearer $LLM_BUZZ_KEY"

Spending limits

An inference key can carry a limit in US dollars, per day, per week, per month or for the key's whole life. Days, weeks and months are UTC; a week starts on Monday. Set the limit when you create the key, or change it later on the Keys page. A management key can change it with PATCH /api/v1/keys/{hash}.

The limit is checked when a request arrives, against the key's spend in the current period. The request that crosses the limit completes, and the next one is refused with 403 key_limit_exceeded. Its metadata.resets_at says when the period ends, and is null for a lifetime limit. Model listings spend nothing and are never refused for the limit.

When a key is refused

StatusCodeWhat it means
401invalid_keyThe request has no key, or the key is unknown, expired, revoked or disabled.
401missing_authenticationA key route was called without an Authorization header.
403key_limit_exceededThe key's spend in its period has reached its limit. Wait for resets_at, or raise the limit.
403management_key_not_allowedA management key called a model route. Use an inference key.
403management_key_requiredAn inference key called /api/v1/keys or /api/v1/credits. Use a management key.
Docs