EN ZalogujOtwórz Studio
Wersja podglądowa. Katalog modeli, ceny, kalkulator i dokumentacja działają. Generowanie uruchomimy po starcie serwisu.

Anthropic Messages

Dokumentacja: spis stron

Drugi endpoint czatu, POST /v1/messages, odwzorowuje API Messages firmy Anthropic. Sięgnij po niego, jeśli twoja aplikacja jest już napisana na SDK Anthropic albo korzystasz z narzędzia, które wysyła zapytania w tym formacie - na przykład Claude Code. Działają tu wyłącznie modele z rodziny Claude. Wszystkie pozostałe modele czatu obsługuje /v1/chat/completions.

Obsługiwane modele

IdStawka
claude-opus-5.520,53 zł / 102,64 zł za 1 mln tokenów
claude-sonnet-517,60 zł / 87,98 zł za 1 mln tokenów
claude-fable-5.151,32 zł / 256,61 zł za 1 mln tokenów

Jeśli podasz id modelu, który nie jest Claude'em, serwer zwróci błąd.

Nagłówki i ciało

http
POST https://kadraris.com/v1/messages
x-api-key: sk-kd-...
anthropic-version: 2023-06-01
Content-Type: application/json

Bez anthropic-version: 2023-06-01 zapytanie nie przejdzie, ale oficjalne SDK dokładają ten nagłówek automatycznie. Klucz wysyłasz w x-api-key albo w Authorization: Bearer - oba warianty opisuje Uwierzytelnianie.

PoleTypObowiązkoweZnaczenie
modelstringtakId modelu Claude
max_tokensintegertakNajwięcej tokenów, ile może mieć odpowiedź
messagesarraytakTury user i assistant na zmianę, w formacie Anthropic
systemstring albo arraynieInstrukcja systemowa
streambooleannieWartość true przełącza na zdarzenia SSE w stylu Anthropic
temperaturenumbernieTemperatura losowania
toolsarraynieNarzędzia opisane po anthropicowemu

Pierwsze zapytanie

bash
curl https://kadraris.com/v1/messages \
  -H "x-api-key: $KADRARIS_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-5.5",
    "max_tokens": 1024,
    "system": "Sprawdzasz kod krótko i rzeczowo.",
    "messages": [{"role": "user",
      "content": "Co tu nie gra: def area(w, h): return w + h"}]
  }'
python
# pip install anthropic
import os
from anthropic import Anthropic

client = Anthropic(
    base_url="https://kadraris.com",
    api_key=os.environ["KADRARIS_API_KEY"],
)

msg = client.messages.create(
    model="claude-opus-5.5",
    max_tokens=1024,
    system="Sprawdzasz kod krótko i rzeczowo.",
    messages=[{"role": "user",
               "content": "Co tu nie gra: def area(w, h): return w + h"}],
)
print(msg.content[0].text)
print(msg.usage)
javascript
// npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://kadraris.com",
  apiKey: process.env.KADRARIS_API_KEY,
});

const msg = await client.messages.create({
  model: "claude-opus-5.5",
  max_tokens: 1024,
  system: "Sprawdzasz kod krótko i rzeczowo.",
  messages: [
    { role: "user",
      content: "Co tu nie gra: def area(w, h): return w + h" },
  ],
});
console.log(msg.content[0].text);

Uwaga na adres w SDK Anthropic: wpisujesz samo https://kadraris.com, bez końcówki /v1. Ścieżkę /v1/messages biblioteka dodaje sama, więc podwójne /v1 skończyłoby się błędem.

Co wraca

json
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "claude-opus-5.5",
  "content": [{ "type": "text",
    "text": "Funkcja dodaje boki zamiast je mnożyć..." }],
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 31, "output_tokens": 57 }
}

Rozliczenie opiera się na usage: osobno tokeny wejścia, osobno wyjścia, każde po stawce modelu.

Strumień zdarzeń

Gdy ustawisz stream: true, dostaniesz sekwencję zdarzeń w formacie Anthropic, m.in. message_start, content_block_delta i message_stop.

bash
curl -N https://kadraris.com/v1/messages \
  -H "x-api-key: $KADRARIS_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-5", "max_tokens": 512,
       "stream": true,
       "messages": [{"role": "user",
         "content": "Czym różni się kadr od ujęcia?"}]}'
python
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user",
               "content": "Czym różni się kadr od ujęcia?"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
javascript
const stream = client.messages.stream({
  model: "claude-sonnet-5",
  max_tokens: 512,
  messages: [
    { role: "user", content: "Czym różni się kadr od ujęcia?" },
  ],
});
stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();

Narzędzia w formacie Anthropic

Każde narzędzie opisujesz polami name, description i input_schema. Gdy model postanowi go użyć, w odpowiedzi pojawi się blok tool_use. Ty uruchamiasz funkcję i w kolejnej turze użytkownika odsyłasz blok tool_result.

python
tools = [{
    "name": "get_render_status",
    "description": "Podaje stan renderu filmu po id",
    "input_schema": {
        "type": "object",
        "properties": {"render_id": {"type": "string"}},
        "required": ["render_id"],
    },
}]

messages = [{"role": "user",
             "content": "Czy render R-207 jest gotowy?"}]
first = client.messages.create(
    model="claude-sonnet-5", max_tokens=1024,
    tools=tools, messages=messages)

if first.stop_reason == "tool_use":
    call = next(b for b in first.content if b.type == "tool_use")
    # tu odpytujesz własny system
    result = {"render_id": call.input["render_id"],
              "status": "gotowy"}
    messages += [
        {"role": "assistant", "content": first.content},
        {"role": "user", "content": [{
            "type": "tool_result",
            "tool_use_id": call.id,
            "content": str(result)}]},
    ]
    final = client.messages.create(
        model="claude-sonnet-5", max_tokens=1024,
        tools=tools, messages=messages)
    print(final.content[0].text)

Błędy na tym endpoincie

Odpowiedzi z błędem mają kształt znany z API Anthropic, więc SDK zgłasza swoje typowe wyjątki:

json
{ "type": "error", "error": { "type": "authentication_error", "message": "Invalid API key." } }

Kody HTTP nie różnią się od reszty API. Jeden klucz może domyślnie wysłać 600 zapytań na minutę. Całość opisuje strona Błędy.

Messages czy chat completions

Twoje narzędzieWłaściwy endpoint
SDK Anthropic, Claude Code/v1/messages
SDK OpenAI, Cursor, Cline, Continue, n8n, Make/v1/chat/completions
Claude wywoływany przez SDK OpenAI/v1/chat/completions z model: "claude-..."