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.
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:
name— a label for your own bookkeeping (max 50 characters).expired_time— set-1for no expiration, otherwise a Unix timestamp.unlimited_quota— toggle on if you do not want a per-key spend cap. When off, setremain_quotato a positive value.model_limits— optional comma-separated list of model IDs the key may call. Leave blank to allow all models in the assigned group.allow_ips— optional newline-separated IP allow-list.group— the upstream channel group used by default.
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.
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:
| Field | What it means |
|---|---|
| id | Unique message ID, prefixed msg_ |
| content[0].text | The model's reply text — should contain hello world |
| stop_reason | end_turn means the model finished naturally; max_tokens means you hit the cap |
| usage.input_tokens / output_tokens | What 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:
| HTTP | error.type | Likely cause |
|---|---|---|
| 401 | buzz_error | Missing or invalid API key. Re-export BUZZ_API_KEY. |
| 403 | permission_error | Key has an IP allow-list that excludes your machine, or the key is disabled. |
| 503 | buzz_error / model_not_found | BUZZ 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:
| Model | Best for |
|---|---|
| claude-opus-4-7 | Hardest reasoning, agentic workflows, extended thinking |
| claude-sonnet-4-6 | Balanced cost and quality for most production work |
| claude-haiku-4-5-20251001 | Lowest 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"
GET /v1/models, or update the key's group on the dashboard.
Next steps
- Authentication — full reference for header forms, key management, IP allow-lists, and security tips.
- POST /v1/messages reference — every request and response field, including tools, system prompts, and extended thinking.
- Prompt Caching — cut input cost by 90% on repeat prompts.
- Claude Code on BUZZ — point the official CLI at BUZZ in one environment variable.
- Error Handling — retry policy, backoff, and the BUZZ-specific 503 case.