DEV Community

Cover image for Cara Menggunakan API Claude Fable 5.1 Langkah demi Langkah dengan Apidog
Walse
Walse

Posted on Originally published at apidog.com

Cara Menggunakan API Claude Fable 5.1 Langkah demi Langkah dengan Apidog

Claude Fable 5.1 API: Panduan Praktis dari Permintaan Pertama hingga Prompt Caching

Claude Fable 5.1 dirilis pada 1 September 2026. ID model API-nya adalah claude-fable-5-1, tanpa sufiks tanggal. Harganya sama seperti Fable 5—$10 per juta token input dan $50 per juta token output—tetapi pembacaan cache turun menjadi $0,25 per juta token. Model ini juga membawa tiga perubahan besar yang tidak ada di Fable 5.

Coba Apidog hari ini

Claude Fable 5.1 API

Panduan ini mencakup:

  • mendapatkan kunci API;
  • mengirim permintaan pertama;
  • mengontrol kedalaman dan biaya dengan effort;
  • streaming;
  • penggunaan alat tanpa memaksa tool_choice;
  • fallback saat penolakan;
  • pembaruan kemajuan;
  • memeriksa objek usage untuk memastikan prompt caching berjalan.

Semua permintaan menggunakan HTTP dan JSON biasa, sehingga Anda dapat membangun serta men-debug-nya di Apidog sebelum memasukkannya ke kode aplikasi.

Jika Anda memigrasikan layanan Fable 5 atau Opus 5 yang sudah ada, baca juga panduan migrasi lengkap. Untuk gambaran umum, mulai dengan artikel apa itu Claude Fable 5.1.

Sebelum panggilan pertama: tiga penyebab 400

1. Thinking tidak dapat dinonaktifkan

Fable 5.1 menjalankan adaptive thinking pada setiap permintaan. Hapus bidang thinking, atau gunakan:

{"type": "adaptive"}
Enter fullscreen mode Exit fullscreen mode

Konfigurasi berikut menghasilkan 400:

{"type": "disabled"}
Enter fullscreen mode Exit fullscreen mode
{"type": "enabled", "budget_tokens": N}
Enter fullscreen mode Exit fullscreen mode

Jika Anda berasal dari Opus 5, disabled mungkin diterima pada effort high atau lebih rendah. Pada Fable 5.1, kontrol pengeluaran dilakukan melalui output_config.effort.

2. Forced tool use sudah tidak didukung

Konfigurasi berikut menghasilkan error:

{"type": "any"}
Enter fullscreen mode Exit fullscreen mode
{"type": "tool", "name": "..."}
Enter fullscreen mode Exit fullscreen mode

Pesan error-nya:

tool_choice: type "tool" and "any" are not supported for this model
Enter fullscreen mode Exit fullscreen mode

Gunakan tool_choice: {"type": "auto"}, instruksi eksplisit, dan strict: true. Contohnya tersedia pada bagian penggunaan alat.

3. Retensi data organisasi harus 30 hari

Fable 5.1 adalah Covered Model. Permintaan dari organisasi atau workspace dengan retensi data nol akan menghasilkan 400 invalid_request_error, meskipun isi permintaan valid.

Jika panggilan pertama gagal tanpa alasan yang jelas, periksa konfigurasi retensi data terlebih dahulu. Detailnya tersedia pada dokumentasi Yang Baru di Claude Fable 5.1.

Langkah 1: Dapatkan kunci API

Masuk ke Claude Console, buka pengaturan organisasi, lalu buat kunci API. Salin kunci tersebut segera karena tidak dapat dibaca kembali.

Simpan sebagai environment variable:

export ANTHROPIC_API_KEY="sk-ant-..."
Enter fullscreen mode Exit fullscreen mode

Di Apidog, simpan kunci dengan nama ANTHROPIC_API_KEY, lalu gunakan {{ANTHROPIC_API_KEY}} pada header. Dengan begitu, kunci tidak masuk ke body permintaan yang tersimpan.

Langkah 2: Kirim permintaan pertama

Buat permintaan POST ke:

https://api.anthropic.com/v1/messages
Enter fullscreen mode Exit fullscreen mode

Header yang diperlukan:

  • x-api-key
  • anthropic-version: 2023-06-01
  • content-type: application/json

Contoh dengan curl:

curl https://api.anthropic.com/v1/messages \
  -H "x-[REDACTED CREDENTIAL] \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-fable-5-1",
    "max_tokens": 16000,
    "messages": [
      {"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

Permintaan yang sama dengan SDK Python resmi:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    messages=[{"role": "user", "content": "Explain the difference between idempotent and safe HTTP methods, with one example each."}],
)

if response.stop_reason == "refusal":
    print("declined:", response.stop_details.category if response.stop_details else None)
else:
    for block in response.content:
        if block.type == "text":
            print(block.text)
Enter fullscreen mode Exit fullscreen mode

Bangun dua kebiasaan sejak awal:

  1. Periksa stop_reason sebelum membaca content. Penolakan classifier dikembalikan sebagai HTTP 200 dengan array konten kosong.
  2. Berikan ruang yang cukup pada max_tokens. Nilai ini membatasi token thinking dan token respons secara bersamaan. Karena thinking selalu aktif, nilai yang terlalu kecil dapat memotong respons.

Pada konfigurasi display default omitted, respons dapat berisi blok thinking dengan teks kosong. Itu normal. Kembalikan blok tersebut tanpa perubahan pada giliran berikutnya.

Langkah 3: Kontrol biaya dan kedalaman dengan effort

Parameter effort berada di dalam output_config, bukan di tingkat teratas. Nilai yang tersedia:

  • low
  • medium
  • high
  • xhigh
  • max

Default-nya adalah high.

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "output_config": {"effort": "medium"},
  "messages": [
    {
      "role": "user",
      "content": "Summarize this changelog in five bullets."
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Menurut panduan parameter effort, mulai dengan high, lalu uji level lain menggunakan evaluasi Anda sendiri. Jalankan kembali evaluasi meskipun sebelumnya sudah dilakukan pada Fable 5, karena nama level tidak berarti jumlah thinking yang sama di semua model.

Klaim Anthropic:

  • medium kira-kira menyamai Fable 5 dengan biaya lebih rendah;
  • low sering kompetitif dengan Opus dan Sonnet berdasarkan biaya per tugas.

Perhatikan juga dua perilaku berikut:

  • Pada low, Fable 5.1 lebih jarang memanggil alat pencarian atau retrieval dan lebih banyak menjawab dari memori.
  • Pada xhigh dan max, model dapat menyusun hasil panjang di dalam thinking lalu menuliskannya kembali. Sediakan max_tokens yang lebih besar untuk kedua level tersebut.

Mengubah effort di tengah percakapan

Pada Fable 5, perubahan effort tingkat atas antarpermintaan dapat menghapus cached prefix. Pada Fable 5.1, Anda dapat menyisipkan pesan system kosong dengan output_config baru untuk mengubah effort mulai dari giliran pengguna berikutnya tanpa membatalkan cache.

Fitur beta ini memerlukan header:

mid-conversation-output-config-2026-07-01
Enter fullscreen mode Exit fullscreen mode

Gunakan namespace client.beta.messages:

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    output_config={"effort": "high"},
    betas=["mid-conversation-output-config-2026-07-01"],
    messages=[
        {"role": "user", "content": "Plan a migration from SQLite to PostgreSQL in three short steps."},
        {"role": "assistant", "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts."},
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."},
    ],
)
Enter fullscreen mode Exit fullscreen mode

Menurunkan effort dengan cara ini dapat diandalkan. Untuk menaikkannya, hasil terbaik biasanya diperoleh dari lompatan besar, misalnya low langsung ke xhigh.

Langkah 4: Streaming respons

Tugas sulit pada effort tinggi dapat berjalan selama beberapa menit. Gunakan streaming untuk respons yang mungkin panjang. SDK juga memerlukannya saat max_tokens mendekati batas 128.000 agar terhindar dari HTTP timeout.

with client.messages.stream(
    model="claude-fable-5-1",
    max_tokens=64000,
    messages=[{"role": "user", "content": "Write a test plan for a rate-limited public API."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    final = stream.get_final_message()

print(final.stop_reason, final.usage.output_tokens)
Enter fullscreen mode Exit fullscreen mode

Apidog merender respons streaming saat data tiba. Ini membantu Anda mengukur waktu yang dibutuhkan effort: high sebelum token teks pertama muncul.

Langkah 5: Gunakan alat tanpa forced tool choice

Definisi alat tetap sama seperti pada Fable 5. Perbedaannya adalah cara memastikan alat dipanggil.

Pada Fable 5, Anda dapat memaksa alat dengan:

{"type": "tool", "..."}
Enter fullscreen mode Exit fullscreen mode

Pada Fable 5.1, forced tool use menghasilkan 400 karena dapat melewati proses thinking dan membuat model menulis alur kerjanya langsung ke argumen.

Gunakan tiga bagian berikut:

  1. Pertahankan tool_choice pada auto.
  2. Sebutkan nama alat secara eksplisit dalam instruksi.
  3. Gunakan strict: true dan additionalProperties: false agar argumen selalu tervalidasi.
record_summary_tool = {
    "name": "record_summary",
    "description": "Record the structured summary of the document.",
    "strict": True,
    "input_schema": {
        "type": "object",
        "properties": {"summary": {"type": "string"}},
        "required": ["summary"],
        "additionalProperties": False,
    },
}

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    tools=[record_summary_tool],
    tool_choice={"type": "auto"},
    messages=[{"role": "user", "content": "Summarize: The meeting moved to Thursday. Call the record_summary tool with your result."}],
)
Enter fullscreen mode Exit fullscreen mode

Jika forced tool use hanya dipakai untuk mendapatkan JSON, gunakan structured output melalui output_config.format sebagai gantinya.

Jika aplikasi memerlukan alat tertentu pada giliran tertentu dalam percakapan multi-giliran, tambahkan pesan system setelah giliran pengguna terbaru. Sebutkan nama alat dan nyatakan bahwa pemanggilan alat diperlukan. Simpan pesan tersebut dalam riwayat percakapan.

tool_choice: {"type": "none"} tetap berfungsi untuk giliran yang tidak boleh memanggil alat.

Loop agentik

Loop-nya tetap sama:

  1. Saat stop_reason adalah tool_use, jalankan setiap blok tool_use.
  2. Kembalikan semua blok tool_result dalam satu pesan pengguna.
  3. Tambahkan kembali giliran asisten persis seperti yang dikembalikan, termasuk blok thinking.

Langkah terakhir semakin penting pada Fable 5.1 karena preserved thinking terikat pada percakapan. Lihat panduan preserved thinking.

Dalam loop panjang, Fable 5.1 mungkin menghasilkan satu panggilan alat per giliran, sedangkan Fable 5 dapat melakukan batch beberapa panggilan. Untuk mendorong batching, tambahkan pesan sistem berikut setelah setiap pesan hasil alat:

Pertama, daftar secara pribadi apa yang Anda butuhkan selanjutnya; lalu minta setiap item yang tidak bergantung pada hasil item lain dalam satu respons ini.
Enter fullscreen mode Exit fullscreen mode

Gunakan pesan dengan cakupan per giliran:

{"clear_at": "next_user_message"}
Enter fullscreen mode Exit fullscreen mode

Fitur ini memerlukan header beta:

mid-conversation-system-clear-at-2026-08-21
Enter fullscreen mode Exit fullscreen mode

Simpan setiap salinan pesan sebelumnya di tempatnya.

Langkah 6: Tangani penolakan dengan fallback

Fable 5.1 menjalankan security classifier. Permintaan yang ditolak dikembalikan sebagai HTTP 200 dengan:

stop_reason: "refusal"
Enter fullscreen mode Exit fullscreen mode

Objek stop_details dapat berisi kategori:

  • cyber
  • bio
  • frontier_llm
  • reasoning_extraction
  • general_harms

Penolakan sebelum output tidak ditagih.

Fallback default

Cara paling sederhana adalah menggunakan:

fallbacks: "default"
Enter fullscreen mode Exit fullscreen mode

dengan header beta:

server-side-fallback-2026-07-01
Enter fullscreen mode Exit fullscreen mode

Sistem akan mencoba ulang pada model yang direkomendasikan Anthropic untuk kategori tersebut. Untuk Fable 5.1, target yang diizinkan adalah claude-opus-4-8 dan claude-opus-5.

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    fallbacks="default",
    betas=["server-side-fallback-2026-07-01"],
    messages=[{"role": "user", "content": "Audit this authentication middleware for logic bugs."}],
)

fallback_ran = any(
    entry.type == "fallback_message" for entry in (response.usage.iterations or [])
)
if fallback_ran and response.stop_reason != "refusal":
    print("served by", response.model)
Enter fullscreen mode Exit fullscreen mode

Respons menampilkan model penyedia layanan pada field model tingkat atas. Blok konten fallback menandai serah terima; pertahankan blok tersebut pada posisi aslinya saat mengembalikan giliran.

Batasan fallback:

  • tidak didukung pada API Batches;
  • tidak tersedia di Bedrock, Google Cloud, atau Foundry.

Pada platform tersebut, daftarkan BetaRefusalFallbackMiddleware SDK pada client. Detail tentang penagihan, sticky routing, dan retry manual tersedia di panduan penanganan penolakan.

Langkah 7: Dapatkan pembaruan kemajuan

Di antara pemanggilan alat, Fable 5.1 dapat menulis catatan singkat tentang temuan dan langkah berikutnya. Catatan ini hadir sebagai blok thinking terpisah tepat sebelum pemanggilan alat.

Secara default, blok tersebut kosong. Untuk menerimanya sebagai teks sementara, gunakan:

{
  "model": "claude-fable-5-1",
  "max_tokens": 16000,
  "thinking": {"type": "adaptive", "display": "updates"},
  "tools": [],
  "messages": [
    {
      "role": "user",
      "content": "Review the PRs open against our billing service."
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

Fitur ini memerlukan header beta:

thinking-display-updates-2026-08-18
Enter fullscreen mode Exit fullscreen mode

Setiap blok thinking dengan teks tidak kosong dapat ditampilkan sebagai baris status. Fable 5.1 menghasilkan lebih sedikit pembaruan dibandingkan Fable 5. Jika UI Anda bergantung pada narasi kemajuan, hapus prompt yang meminta model menahan temuan hingga respons akhir.

Langkah 8: Verifikasi tarif cache $0,25

Perubahan harga utama Fable 5.1 ada pada prompt caching. Tandai prefiks stabil dengan cache_control, lalu periksa field usage:

response = client.messages.create(
    model="claude-fable-5-1",
    max_tokens=16000,
    system=[
        {
            "type": "text",
            "text": LONG_STABLE_SYSTEM_PROMPT,
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": "Which endpoints in the spec lack an error schema?"}],
)

u = response.usage
print(u.input_tokens, u.cache_creation_input_tokens, u.cache_read_input_tokens)
Enter fullscreen mode Exit fullscreen mode

Pada pengiriman pertama:

cache_creation_input_tokens != 0
Enter fullscreen mode Exit fullscreen mode

Token tersebut ditagih $12,50 per juta untuk TTL lima menit.

Pada pengiriman identik berikutnya dalam lima menit:

cache_read_input_tokens > 0
Enter fullscreen mode Exit fullscreen mode

Token cache read ditagih $0,25 per juta. Informasi tambahan tersedia di dokumentasi Prompt Caching dan penjelasan harga Fable 5.1.

Jika cache_read_input_tokens selalu nol, berarti ada bagian prefiks yang berubah. Periksa:

  • timestamp dalam system prompt;
  • JSON yang tidak diurutkan;
  • array alat yang berubah-ubah;
  • panjang prefiks di bawah 512 token.

Karena cache miss 40 kali lebih mahal daripada cache hit, menjaga cache tetap hangat lebih penting pada Fable 5.1. effort per pesan dan pesan sistem per giliran memungkinkan perubahan konfigurasi di tengah sesi tanpa mereset cache.

Namun, perubahan yang mereset cache—misalnya membangun ulang system prompt atau mengedit giliran sebelumnya—juga membatalkan blok thinking. Menjaga riwayat percakapan tetap immutable dapat menghindari biaya ganda.

Uji seluruh alur di Apidog

Simpan setiap skenario dalam satu koleksi Apidog:

  • panggilan pertama;
  • variasi effort;
  • streaming;
  • loop alat;
  • fallback;
  • pemeriksaan cache.

Gunakan environment variable untuk API key dan model. Dengan begitu, Anda dapat mengganti seluruh koleksi antara claude-fable-5 dan claude-fable-5-1 melalui satu pengeditan.

Tambahkan assertion berikut:

stop_reason != "refusal"
Enter fullscreen mode Exit fullscreen mode

untuk prompt pengujian yang tidak berbahaya,

usage.cache_read_input_tokens > 0
Enter fullscreen mode Exit fullscreen mode

pada permintaan cache kedua, serta pemeriksaan bahwa tidak ada entri input_transformations dengan:

reason: "prefix_binding_mismatch"
Enter fullscreen mode Exit fullscreen mode

Jalankan koleksi sebelum dan sesudah mengubah harness. Unduh Apidog untuk mengaturnya. Koleksi yang sama dapat digunakan sebagai pemeriksaan CI melalui Apidog CLI.

Kesalahan dan jebakan umum

  • 400 tool_choice: type "tool" and "any" are not supported for this model

    Gunakan auto, instruksi eksplisit, dan strict: true.

  • 400 pada thinking: {"type": "disabled"}

    Hapus konfigurasi tersebut dan turunkan effort.

  • 400 invalid_request_error meskipun body valid

    Periksa apakah organisasi atau workspace memiliki retensi data 30 hari.

  • 400 Invalid signature in thinking block. The block is bound to a different conversation.

    Kode mungkin mengedit giliran sebelumnya, system prompt, atau array alat. Ikuti aturan pada panduan preserved thinking.

  • Blok thinking kosong

    Ini normal pada display: "omitted". Gunakan summarized atau updates jika ingin menampilkannya.

  • Pembacaan cache selalu nol

    Prefiks tidak stabil. Audit timestamp, urutan JSON, dan variasi array alat.

  • Permintaan Priority Tier gagal validasi

    Fable 5.1 tidak mendukung Priority Tier, meskipun Fable 5 mendukungnya.

FAQ

Apa ID model API Claude Fable 5.1?

Gunakan:

claude-fable-5-1
Enter fullscreen mode Exit fullscreen mode

Di Amazon Bedrock:

anthropic.claude-fable-5-1
Enter fullscreen mode Exit fullscreen mode

Google Cloud, Microsoft Foundry, dan Claude Platform di AWS menggunakan:

claude-fable-5-1
Enter fullscreen mode Exit fullscreen mode

Apakah saya memerlukan header beta?

Tidak untuk model dasar, adaptive thinking, effort, tools, dan caching. Semuanya berfungsi dengan header standar:

anthropic-version: 2023-06-01
Enter fullscreen mode Exit fullscreen mode

Header beta hanya diperlukan untuk:

  • effort per pesan;
  • pesan sistem dengan cakupan per giliran;
  • pembaruan kemajuan;
  • server-side fallback;
  • kontrol thinking binding.

Bisakah saya memaksa pemanggilan alat?

Tidak. tool_choice: any dan tool_choice: tool menghasilkan 400.

Gunakan auto, sebutkan nama alat dalam prompt, dan gunakan strict: true. Jika tujuan Anda hanya mengekstrak JSON, gunakan structured output.

Berapa output maksimum API Claude Fable 5.1?

API Messages mendukung hingga 128.000 token output. Gunakan streaming untuk respons besar.

Beta API Batch yang mendukung 300.000 token belum terdaftar untuk Fable 5.1.

Bagaimana cara melihat cache read yang lebih murah?

Periksa:

usage.cache_read_input_tokens
Enter fullscreen mode Exit fullscreen mode

Pada Fable 5.1, token tersebut ditagih $0,25 per juta, dibandingkan dengan $1 pada Fable 5 dan $0,50 pada Opus 5.

Apakah panduan API Fable 5 masih berlaku?

Sebagian besar masih berlaku karena endpoint-nya sama. Namun, contoh forced tool use pada panduan API Fable 5 akan menghasilkan 400 pada Fable 5.1. Panduan tersebut juga belum mencakup effort per pesan dan progress updates.

Top comments (0)