BUZZ AI Gateway
Docs · Guides · Quickstart

Quickstart

Sign up, create an API key, and send your first Claude message in about five minutes. BUZZ is drop-in compatible with the Anthropic Messages API, so most existing code only needs a different base URL and key.

POST https://buzzai.cc/v1/messages
What you will have at the end. A working API key, a verified hello-world response from Claude, a streaming variant of the same request, and the model IDs you can switch between.

1Create a BUZZ account

Open https://buzzai.cc/auth?action=register and finish the sign-up flow. After registration you will land in the dashboard.

2Create an API key

In the dashboard, open the Tokens page and click Add Token. The form lets you set:

The key itself is generated server-side and the create call returns success without echoing it. To retrieve the full key, open the token row in the dashboard, or call POST /api/token/<id>/key; the dashboard wraps that endpoint behind a copy button. List endpoints return a masked form like OnyH**********esAm for safety.

Treat the key like a password. The full key is shown once on creation. If you lose it, generate a new one rather than trying to recover it. Store it in an environment variable, not in source code.

Export it in your shell so the rest of this guide can reference it:

export BUZZ_API_KEY="sk-..."

3Send your first request

The base URL is https://buzzai.cc. The endpoint is POST /v1/messages. Pick the language you prefer.

curl -X POST https://buzzai.cc/v1/messages \
  -H "Authorization: Bearer $BUZZ_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-haiku-4-5-20251001",
    "max_tokens": 80,
    "messages": [
      {"role": "user", "content": "reply with exactly: hello world"}
    ]
  }'
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://buzzai.cc",
    api_key=os.environ["BUZZ_API_KEY"],
)

message = client.messages.create(
    model="claude-haiku-4-5-20251001",
    max_tokens=80,
    messages=[
        {"role": "user", "content": "reply with exactly: hello world"}
    ],
)

print(message.content[0].text)
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://buzzai.cc",
  apiKey: process.env.BUZZ_API_KEY,
});

const message = await client.messages.create({
  model: "claude-haiku-4-5-20251001",
  max_tokens: 80,
  messages: [
    { role: "user", content: "reply with exactly: hello world" },
  ],
});

console.log(message.content[0].text);

The Python and Node.js SDKs are the official Anthropic clients. BUZZ accepts both Authorization: Bearer <key> and x-api-key: <key>, so the unmodified Anthropic SDKs work as long as you point base_url / baseURL at https://buzzai.cc.

4Verify the response

A successful response looks like this:

{
  "id": "msg_01ouKJ3o9AnAJb7JtWF25Dk2",
  "type": "message",
  "role": "assistant",
  "model": "claude-haiku-4-5-20251001",
  "content": [
    {"type": "text", "text": "hello world"}
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 6,
    "output_tokens": 2,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "service_tier": "standard"
  }
}

The fields you should sanity check:

FieldWhat it means
idUnique message ID, prefixed msg_
content[0].textThe model's reply text — should contain hello world
stop_reasonend_turn means the model finished naturally; max_tokens means you hit the cap
usage.input_tokens / output_tokensWhat you will be billed for

BUZZ may include extra accounting fields like usage.iterations[] and context_management.applied_edits. Your parser should accept unknown fields without erroring.

If you got an error instead, here are the common ones:

HTTPerror.typeLikely cause
401buzz_errorMissing or invalid API key. Re-export BUZZ_API_KEY.
403permission_errorKey has an IP allow-list that excludes your machine, or the key is disabled.
503buzz_error / model_not_foundBUZZ has no available channel for that model under your key's group. Try a different model ID.

5Enable streaming

Add "stream": true to the request body and BUZZ will return a Server-Sent Events stream instead of a single JSON document.

curl -N -X POST https://buzzai.cc/v1/messages \
  -H "Authorization: Bearer $BUZZ_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-haiku-4-5-20251001",
    "max_tokens": 80,
    "stream": true,
    "messages": [
      {"role": "user", "content": "count from 1 to 3"}
    ]
  }'

You will see a sequence of event: lines: message_start, content_block_start, one or more content_block_delta with the text deltas, content_block_stop, message_delta, then message_stop. The official Anthropic SDKs handle this automatically when you call the streaming variant of the API.

For the full event-by-event schema and SDK examples, see the Streaming guide.

6Switch models

Swap the model field to use a different generation. The current Claude lineup on BUZZ:

ModelBest for
claude-opus-4-7Hardest reasoning, agentic workflows, extended thinking
claude-sonnet-4-6Balanced cost and quality for most production work
claude-haiku-4-5-20251001Lowest cost, lowest latency, high-volume tasks

Dated aliases are also valid (for example claude-haiku-4-5-20251001, claude-sonnet-4-5-20250929, claude-opus-4-5-20251101). To get the live list of model IDs available to your key, call GET /v1/models:

curl https://buzzai.cc/v1/models \
  -H "Authorization: Bearer $BUZZ_API_KEY"
If a model returns 503 model_not_found, the channel group attached to your key does not currently route that model. Pick another model from GET /v1/models, or update the key's group on the dashboard.

Next steps