Dokumentasi

Dokumentasi

Messages API

Anthropic Messages API native untuk keluarga Claude. Kirim bentuk permintaan Anthropic yang sesungguhnya — cache_control, tools, dan extended thinking diteruskan langsung tanpa diterjemahkan.

Endpoint: POST /v1/messages. Permintaan dan respons sama persis dengan Messages API Anthropic, sehingga Anthropic SDK — atau alat apa pun yang mendukungnya — dapat digunakan dengan Kunavo hanya dengan mengubah base URL dan kunci.

Endpoint mana yang sebaiknya saya gunakan?

Kunavo menyediakan keluarga Claude melalui dua cara. Keduanya ditagih dengan tarif yang sama; pilih berdasarkan bentuk permintaan yang sudah digunakan kode Anda.

EndpointStrukturGunakan jika
/v1/chat/completionsObrolan OpenAIAnda sudah menggunakan OpenAI SDK, atau ingin satu jalur kode untuk Claude dan GPT.
/v1/messagesAnthropic MessagesAnda menggunakan Anthropic SDK / Claude Code, atau menginginkan cache_control, tools, dan thinking native tanpa lapisan penerjemahan.

Autentikasi

Arahkan base URL ke https://api.kunavo.com — Anthropic SDK menambahkan /v1/messages sendiri. Berikan kunci Kunavo Anda (sk-kn-...) sebagai kunci API; endpoint menerima kunci melalui header x-api-key (bawaan Anthropic SDK) maupun Authorization: Bearer.

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-kn-...",                  # your Kunavo key
    base_url="https://api.kunavo.com",    # SDK appends /v1/messages
)

msg = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    system="You are a senior staff engineer.",
    messages=[
        {"role": "user", "content": "Pros and cons of event sourcing?"},
    ],
)
print(msg.content[0].text)

caching prompt

Inilah alasan utama menggunakan endpoint native. Lampirkan titik pemisah cache_control pada blok sistem, blok konten pesan, atau definisi tool mana pun. Awalan yang ditandai ditulis ke cache sekali, lalu digunakan kembali pada panggilan berikutnya yang memakainya.

Caching itu sendiri tidak memerlukan endpoint ini: pada /v1/chat/completions dan /v1/responses, Kunavo menetapkan sendiri breakpoint untuk model Claude pada prompt yang panjang. Yang berbeda dari endpoint ini adalah tidak menambahkan satu pun: isi permintaan Anda diteruskan persis seperti yang Anda kirim, sehingga setiap breakpoint di dalamnya adalah yang Anda tetapkan sendiri.

# Mark a large, stable prefix with cache_control. The first call writes that
# span to cache at 1.25× the input token price; later calls that reuse it read
# it back at ~10%.
msg = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": LONG_STYLE_GUIDE,            # tens of thousands of tokens
            "cache_control": {"type": "ephemeral"},
        },
    ],
    messages=[{"role": "user", "content": "Review this PR against the guide."}],
)
u = msg.usage
print(u.cache_creation_input_tokens, u.cache_read_input_tokens)

Harga keluarga Claude di Kunavo:

  • cache_read_input_tokens — disajikan dari cache, ditagih sebesar 0.10× tarif input (diskon 90%); 0.025× di Claude Fable 5.1, 0.05× di Claude Opus 5.5.
  • cache_creation_input_tokens — ditulis ke cache, ditagih sebesar 1.25× tarif input. Kunavo menagih penulisan dengan TTL 1 jam sebesar 1.25× juga, lebih rendah daripada 2× Anthropic.
Kunavo menjaga cache Anda tetap hangat secara otomatis: permintaan dengan awalan prompt yang sama dirutekan ke akun upstream yang sama tanpa perlu konfigurasi di pihak Anda.

Pengaliran data

Atur stream: true (atau gunakan helper SDK stream()). Kunavo meneruskan aliran event native Anthropic — message_start, content_block_delta, message_delta, message_stop — secara langsung.

with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain CRDTs in one paragraph."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Gambar

Kirim gambar sebagai sumber base64 atau url. Sumber url adalah satu-satunya bagian isi permintaan yang ditulis ulang oleh Kunavo: Kunavo mengunduh sendiri gambar https (atau membuka URI data:) lalu meneruskannya sebagai base64, karena upstream mengabaikan sumber url dan akan menjawab seolah-olah tidak ada gambar yang dikirim. Gambar di dalam tool_result ditangani dengan cara yang sama. Batas: 16 gambar per permintaan, 5 MB per gambar, total 20 MB; gambar yang tidak dapat diambil akan menghasilkan kesalahan, bukan dilewati.

Objek penggunaan

Setiap respons (serta event streaming message_delta / message_start) memuat objek native usage Anthropic:

KolomMakna
input_tokensToken input baru (tidak di-cache).
cache_read_input_tokensToken yang disajikan dari cache, ditagih sebesar 0.10× input (0.025× di Claude Fable 5.1, 0.05× di Claude Opus 5.5).
cache_creation_input_tokensToken yang ditulis ke cache pada panggilan ini (ditagih 1.25× input).
output_tokensToken output, termasuk extended thinking.

Tool server

Tool server Anthropic (web_search, web_fetch, code_execution) diteruskan sebagai definisi tool biasa. Konten yang ditambahkan ke percakapan (hasil pencarian, halaman yang diambil, keluaran program) dikembalikan dalam usage sebagai token dan ditagih dengan tarif di atas.

Pencarian web juga ditagih per pencarian, di luar biaya token tersebut: Anthropic mencantumkan tarif $10 per 1.000 pencarian, dan Kunavo mengenakan biaya dengan diskon masing-masing model. Jumlahnya adalah usage.server_tool_use.web_search_requests, dalam respons atau message_delta terakhir dari stream; pencarian yang menghasilkan kesalahan (seperti max_uses_exceeded) tidak dihitung. Pengambilan web dan eksekusi kode tidak dikenai biaya selain tokennya.

Per 1.000 pencarian webModel
$7.00claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-5, claude-sonnet-4-6, claude-haiku-4-5

Model yang didukung

Model Claude apa pun yang diaktifkan menerima /v1/messages. Kirim slug Kunavo sebagai model:

  • claude-fable-5, claude-sonnet-5
  • claude-opus-5, claude-opus-4-7, claude-opus-4-6
  • claude-sonnet-4-6, claude-haiku-4-5

Model GPT tidak tersedia di sini — panggil melalui /v1/chat/completions.

HTTP mentah

Tidak perlu SDK — endpoint ini menerima POST JSON biasa:

curl https://api.kunavo.com/v1/messages \
  -H "x-api-key: sk-kn-..." \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, Claude"}]
  }'

Langkah selanjutnya