Migrasi ke versi API 2026-10-21
Tingkatkan integrasi Claude API dari versi API 2023-06-01 ke 2026-10-21: versi SDK yang perlu diinstal dan perubahan kode yang perlu dilakukan.
Panduan ini mencantumkan perubahan kode untuk berpindah dari versi API 2023-06-01 ke 2026-10-21. Langkah-langkah peningkatan menjelaskan apa yang harus dilakukan, secara berurutan.
Langkah-langkah peningkatan
Beralih ke 2026-10-21
Jika Anda menggunakan SDK, permintaan Anda menggunakan versi API yang berlaku saat versi mayor SDK Anda dirilis. Versi yang ditampilkan untuk bahasa Anda adalah yang pertama menggunakan
2026-10-21, jadi tingkatkan ke versi tersebut. Jika Anda memanggil API tanpa SDK, atur headeranthropic-versionke2026-10-21.Tingkatkan paket
anthropicke versi 2.0.0.Rilis peningkatan ini bersama dengan perbaikan Anda dari langkah berikutnya.
Perbarui kode Anda untuk perubahan yang merusak kompatibilitas
Tinjau perubahan yang merusak kompatibilitas, dan perbarui kode Anda untuk setiap perubahan yang memengaruhi Anda. Lakukan juga perubahan kode yang diperlukan oleh versi SDK atau CLI yang baru.
Uji terhadap 2026-10-21
Uji integrasi Anda terhadap
2026-10-21sebelum Anda merilis.
Perubahan yang merusak kompatibilitas
Messages API
Perubahan ini berlaku untuk permintaan ke Messages API (POST /v1/messages), untuk penghitungan token, dan untuk setiap permintaan dalam Message Batch yang dibuat dengan 2026-10-21.
Blok dokumen dalam pesan assistant mengembalikan error
Memengaruhi Anda jika Anda mengirim blok document secara langsung dalam pesan assistant.
Di 2026-10-21, permintaan yang menempatkan blok document secara langsung dalam pesan assistant mengembalikan error 400. Kirim dokumen dalam pesan user sebagai gantinya. Dokumen yang bersarang di dalam blok lain, seperti hasil alat web fetch yang dikembalikan Claude, tetap diterima.
Sitasi dalam pesan user mengembalikan error
Memengaruhi Anda jika Anda mengirim citations pada blok text dalam pesan user, termasuk di dalam blok search_result.
Di 2026-10-21, permintaan yang mengirim blok text dengan array citations yang tidak kosong dalam pesan user mengembalikan error 400. Hapus citations dari blok-blok tersebut. Sitasi pada blok text dalam pesan assistant, seperti balasan Claude sebelumnya yang Anda kirim kembali, tetap diterima, begitu pula pengaturan "citations": {"enabled": true} pada dokumen dan hasil pencarian.
Parameter sampling dihapus
Memengaruhi Anda jika Anda mengirim temperature, top_p, atau top_k dalam permintaan Messages atau permintaan Message Batch.
Di 2026-10-21, permintaan yang mengirim temperature, top_p, atau top_k mengembalikan error 400, bahkan pada nilai default parameter tersebut.
Hapus ketiga parameter tersebut dari permintaan Anda.
Sejak versi mayor terbaru, SDK dan CLI tidak lagi memiliki ketiga parameter tersebut.
Tanpa parameter ini, permintaan melakukan sampling dengan nilai default-nya, termasuk temperature sebesar 1.0, sama seperti permintaan 2023-06-01 yang tidak menyertakannya. Model yang sudah hanya menerima nilai default, seperti model Claude 4.7 dan yang lebih baru, melakukan sampling seperti sebelumnya. Pada model yang menerima nilai lain, seperti Claude Sonnet 4.6, permintaan yang menurunkan temperature untuk output yang lebih konsisten kehilangan efek tersebut. Tidak ada pengaturan lain yang menggantikannya. Jika suatu permintaan bergantung pada nilai non-default, hentikan pengiriman parameter tersebut, atau pertahankan permintaan itu pada 2023-06-01.
Admin API dan Claude Enterprise Analytics API
Memengaruhi Anda jika kode Anda membaca field respons Admin API atau Claude Enterprise Analytics API dalam tabel berikut.
Di 2026-10-21, respons dari Admin API dan Claude Enterprise Analytics API tidak lagi menyertakan nama lama dari field yang diganti namanya. Gunakan nama baru sebagai gantinya.
Admin API:
| Endpoint | Nama lama | Nama baru |
|---|---|---|
| Grup RBAC: create, list, retrieve, dan update | roles | role_ids |
| Anggota grup RBAC: list dan add, serta respons untuk menghapus anggota | group_id | rbac_group_id |
| Peran RBAC: list dan retrieve | name | display_name |
| Batas laju organisasi dan workspace: list, serta respons untuk mengatur batas laju workspace | group_type | group.type |
| Kunci API: list, retrieve, dan update | workspace_id | scope (nilai berbeda; lihat workspace_id pada kunci API) |
Claude Enterprise Analytics API:
| Endpoint | Nama lama | Nama baru |
|---|---|---|
| Laporan penggunaan dan biaya per pengguna | actor.email | actor.email_address |
| Ringkasan aktivitas | summaries | data |
Parameter kueri group_type pada endpoint list batas laju dan filter workspace_id pada endpoint list kunci API tidak berubah.
workspace_id pada kunci API
Memengaruhi Anda jika kode Anda membaca workspace_id pada kunci API.
Di 2023-06-01, workspace_id dari kunci API adalah ID workspace tempat kunci tersebut terikat, atau null untuk kunci yang terikat ke Default Workspace dan untuk kunci yang tidak terikat ke satu workspace (kunci semua workspace).
Di 2026-10-21, workspace_id dihapus. Baca scope sebagai gantinya: untuk kunci yang terikat ke workspace, termasuk Default Workspace, scope.workspace_id adalah ID sebenarnya dari workspace tersebut, dan kunci semua workspace memiliki scope berupa {"type": "organization"}, tanpa workspace_id.
Jika kode Anda memperlakukan workspace_id yang bernilai null sebagai Default Workspace, bandingkan scope.workspace_id dengan ID Default Workspace Anda sebagai gantinya. Untuk menemukan ID tersebut, panggil List Workspaces dengan include_default=true dan ambil workspace bernama "Default".
Perubahan SDK dan CLI
Versi SDK dan CLI sebelumnya mengirim anthropic-version: 2023-06-01 pada setiap permintaan. Versi di bawah Beralih ke 2026-10-21 mengirim 2026-10-21. Perubahan dalam Perubahan yang merusak kompatibilitas juga berlaku untuk versi tersebut: parameter yang dihapus dan nama field lama juga hilang dari tipe SDK serta dari flag dan output CLI.
Versi API di Amazon Bedrock dan Google Cloud
Klien SDK untuk Google Cloud's Agent Platform menyebutkan versi di body permintaan, bukan di header. Klien ini mengirim anthropic_version: 2026-10-21, sedangkan versi sebelumnya mengirim vertex-2023-10-16, dan tidak mengirim header anthropic-version.
Klien Amazon Bedrock melakukan hal yang sama. Klien ini mengirim anthropic_version: 2026-10-21, sedangkan versi sebelumnya mengirim bedrock-2023-05-31, dan tidak mengirim header anthropic-version. Model yang lebih lama dari Claude Opus 4.7 belum mendukung versi API 2026-10-21 di Bedrock, dan permintaan yang menyebutkannya mungkin mendapatkan error 400. Jika Anda menggunakan salah satunya, tetaplah pada versi SDK sebelumnya untuk saat ini, atau tingkatkan dan kirim bedrock-2023-05-31 sendiri.
Ini berlaku untuk AnthropicVertex, AsyncAnthropicVertex, AnthropicBedrock, dan AsyncAnthropicBedrock.
Untuk mengirim bedrock-2023-05-31, teruskan extra_body={"anthropic_version": "bedrock-2023-05-31"} pada setiap permintaan.
MessageParam adalah union dengan satu tipe per peran
Pada versi sebelumnya, MessageParam adalah satu tipe untuk setiap peran. Setiap peran sekarang memiliki tipenya sendiri: UserMessageParam, AssistantMessageParam, dan SystemMessageParam. BetaMessageParam dipecah dengan cara yang sama, menjadi BetaUserMessageParam, BetaAssistantMessageParam, dan BetaSystemMessageParam. Permintaan yang dikirim SDK memiliki field dan nilai yang sama seperti sebelumnya.
Pesan yang ditulis sebagai literal dict, seperti {"role": "user", "content": "Hello"}, tidak memerlukan perubahan.
Di v1, anthropic.types.MessageParam adalah satu TypedDict. Di v2, ini adalah union dari ketiga tipe, dan anthropic.types.beta.BetaMessageParam adalah union dari ketiga tipenya. Kedua nama tersebut masih berfungsi dalam anotasi, seperti list[MessageParam].
Memanggil salah satu nama tersebut sekarang memunculkan TypeError, dan type checker menandainya. Tulis pesan sebagai dict:
# Sebelum
message = MessageParam(role="user", content="Hello")
# Sesudah
message: MessageParam = {"role": "user", "content": "Hello"}Membuat subclass dari salah satu nama tersebut juga memunculkan TypeError. Buat subclass dari tipe untuk peran tersebut, seperti UserMessageParam.
Perubahan lainnya hanya memengaruhi pemeriksaan tipe. Dict yang role-nya berupa variabel yang dapat menampung lebih dari satu peran tidak cocok dengan tipe mana pun dalam union, jadi buat dict untuk satu peran pada satu waktu:
# Sebelum
def to_message(role: Literal["user", "assistant"], text: str) -> MessageParam:
return {"role": role, "content": text}
# Sesudah
def to_message(role: Literal["user", "assistant"], text: str) -> MessageParam:
if role == "user":
return {"role": "user", "content": text}
return {"role": "assistant", "content": text}Dua perubahan lagi hanya berlaku untuk BetaMessageParam:
clear_atdanoutput_configadalah key dariBetaSystemMessageParam, sehingga pesan user atau assistant tidak dapat memilikinya.contentbersifat opsional diBetaSystemMessageParam, sehingga pyright melaporkanmessage["content"]. Bacalah denganmessage.get("content"), atau periksa terlebih dahulu bahwamessage["role"]bukan"system".
Enum bernilai tunggal menjadi konstanta
Ini memengaruhi SDK C#, Go, Java, PHP, dan Ruby serta satu flag CLI. Pada versi sebelumnya, field wajib yang hanya dapat menampung satu nilai memiliki tipe enum tersendiri dengan satu anggota. Field-field ini sekarang menjadi konstanta, dan tipe enum tersebut telah dihapus. JSON yang dikirim dan dibaca oleh SDK tetap sama.
--type bersifat opsional pada ant beta:sessions:resources add. file adalah satu-satunya nilai yang dapat diambil --type di sana, sehingga v2 mengirimkannya untuk Anda. Perintah yang masih meneruskan --type file tetap berfungsi, jadi tidak ada yang perlu diubah.
Compaction sisi klien dihapus dari tool runner
Ini memengaruhi SDK TypeScript dan Ruby. "Client-side compaction" (pemadatan sisi klien) di tool runner telah dihapus dan digantikan oleh compaction sisi server, yang merangkum percakapan di dalam API alih-alih dengan request tambahan dari klien.
Opsi compactionControl dan modul @anthropic-ai/sdk/lib/tools/CompactionControl telah dihapus. Opsi tersebut berhenti berfungsi di v0.129.0, di mana meneruskannya akan melempar AnthropicError. Opsi tersebut tidak ada di tipe params, sehingga TypeScript melaporkannya sebagai properti yang tidak dikenal.
Untuk tetap melakukan compaction secara otomatis pada ambang batas token:
// Sebelum
const runner = client.beta.messages.toolRunner({
// ...
compactionControl: { enabled: true, contextTokenThreshold: 100_000 }
});
// Sesudah
const runner = client.beta.messages.toolRunner({
// ...
betas: ["compact-2026-01-12"],
context_management: {
edits: [{ type: "compact_20260112", trigger: { type: "input_tokens", value: 100_000 } }]
}
});Untuk memutuskan sendiri kapan percakapan dipadatkan, panggil runner.compactBeforeNextTurn().
Ambang batas pemicu harus setidaknya 50.000 token. Lihat compaction untuk opsi lainnya (pause_after_compaction, instructions kustom).
Text Completions dihapus
Text Completions API lama dihapus dari SDK TypeScript, Go, Java, dan Ruby serta dari CLI. Model dan fitur yang lebih baru tidak mendukungnya. Gunakan Messages API sebagai gantinya.
Perintah ant completions create telah dihapus.
# Sebelum
ant completions create \
--model "$MODEL" \
--max-tokens-to-sample 1024 \
--prompt $'\n\nHuman: Hello, Claude\n\nAssistant:'
# Sesudah
ant messages create \
--model "$MODEL" \
--max-tokens 1024 \
--message '{role: user, content: "Hello, Claude"}'Teks balasan berpindah dari field completion ke content.0.text, sehingga skrip yang meneruskan --transform completion kini meneruskan --transform content.0.text sebagai gantinya.
ant messages create juga menerima --stream, tetapi event-nya memiliki bentuk yang berbeda: teks tiba di delta.text dari event content_block_delta, sehingga --transform content.0.text tidak berlaku untuk stream.
betas dihapus dari metode Models non-beta
Metode Models non-beta tidak lagi menerima betas, dan perintah ant models tidak lagi menerima --beta. Untuk mengirim header beta, panggil metode yang sama pada client.beta.models, atau ant beta:models di CLI. Di SDK, metode-metode tersebut mengembalikan BetaModelInfo sedangkan metode non-beta mengembalikan ModelInfo.
client.models.retrieve() dan client.models.list() tidak lagi menerima betas (meneruskannya menghasilkan TypeError, dan type checker akan menandainya), dan anthropic.types.ModelListParams tidak lagi memiliki key betas.
# Sebelum
page = client.models.list(betas=[beta])
# Sesudah
page = client.beta.models.list(betas=[beta])Kunci API dikirim sebagai Authorization: Bearer
SDK dan CLI mengirim kunci API Anda sebagai Authorization: Bearer <key> alih-alih di header X-Api-Key, jadi ubah proxy atau gateway apa pun yang membaca atau mengatur X-Api-Key agar menggunakan Authorization, atau kirim sendiri kunci tersebut di X-Api-Key. Claude API menerima kunci di salah satu header tersebut, sehingga program yang berkomunikasi langsung dengan API tidak memerlukan perubahan.
# Before
X-Api-Key: <key>
# After
Authorization: Bearer <key>Authorization adalah header yang sudah digunakan oleh auth_token.
Ini berlaku untuk argumen api_key dan variabel lingkungan ANTHROPIC_API_KEY dari Anthropic dan AsyncAnthropic, serta untuk api_key dan ANTHROPIC_AWS_API_KEY dari AnthropicAWS. AnthropicFoundry masih mengirim kuncinya sebagai x-api-key, dan AnthropicBedrockMantle sudah mengirim bearer token sebelumnya.
Jika proxy atau gateway membaca X-Api-Key
Pindahkan kembali kunci dengan fungsi auth pada klien HTTP. Fungsi ini berjalan pada setiap request yang dikirim klien, termasuk retry:
import httpx2
from anthropic import Anthropic, DefaultHttpxClient
def send_x_api_key(request: httpx2.Request) -> httpx2.Request:
if request.headers.get("Authorization") == f"Bearer {api_key}":
del request.headers["Authorization"]
request.headers["X-Api-Key"] = api_key
return request
client = Anthropic(api_key=api_key, http_client=DefaultHttpxClient(auth=send_x_api_key))AsyncAnthropic menerima fungsi yang sama, dalam http_client=DefaultAsyncHttpxClient(auth=send_x_api_key).
Jika Anda mengatur atau menghapus X-Api-Key pada request
Ini memengaruhi SDK Python, TypeScript, Go, PHP, dan Ruby.
Jika Anda menghapus X-Api-Key agar request hanya mengirim auth token, hapus kode tersebut alih-alih mengubahnya, karena menghapus Authorization akan menghapus token. Sebuah klien memegang satu kredensial, jadi pastikan kredensial tersebut adalah token: jika tidak ada yang diteruskan dalam kode dan ANTHROPIC_API_KEY serta ANTHROPIC_AUTH_TOKEN keduanya diatur, klien menggunakan kunci.
Kode yang meneruskan extra_headers={"X-Api-Key": omit} untuk mencegah kunci dikirim pada request tidak lagi melakukannya. Teruskan extra_headers={"Authorization": omit} sebagai gantinya.
extra_headers={"X-Api-Key": other_key} tidak lagi menggantikan kunci klien: kedua kunci dikirim. Untuk mengirim kunci lain dengan satu request, teruskan extra_headers={"Authorization": f"Bearer {other_key}"}.
Klien memegang satu kredensial
Kunci API dan token autentikasi kini berbagi satu header, sehingga klien SDK memegang satu kredensial. Jika tidak ada yang diteruskan dalam kode, klien mengikuti urutan prioritas kredensial.
v1 mengirim kunci API dan token autentikasi sekaligus ketika klien memiliki keduanya, masing-masing dalam header-nya sendiri. Kredensial adalah salah satu dari api_key, auth_token, credentials, config, atau profile.
- Teruskan paling banyak satu. Dua atau lebih di konstruktor, atau dalam satu panggilan
copy()atauwith_options(), memunculkanValueError.Nonetidak dihitung. v1 memunculkanTypeError, dan hanya untuk dua daricredentials,config, danprofile. - Yang Anda teruskan adalah satu-satunya. Seperti di v1, klien tidak mencari kredensial lain di environment atau di disk.
- Jika tidak ada yang diteruskan, hanya yang pertama dari berikut ini yang disetel yang digunakan:
ANTHROPIC_API_KEY,ANTHROPIC_AUTH_TOKEN, profil yang dinamai olehANTHROPIC_PROFILE, variabel "workload identity federation" (federasi identitas beban kerja), profil aktif di disk (yang dinamai oleh fileactive_config, jika tidak makadefault). Ketika dua yang pertama sama-sama disetel, klien mencatat peringatan satu kali. v1 menggunakan profil aktif sebelum variabel federasi ketikaANTHROPIC_CONFIG_DIRdisetel atau fileactive_configada; setelANTHROPIC_PROFILEuntuk tetap menggunakannya. copy()danwith_options()menggantikan. Kredensial yang Anda teruskan menggantikan kredensial milik klien, apa pun jenis keduanya. Base URL dan header yang berasal dari config atau profil kredensial lama ikut terbuang, dan milik kredensial baru yang digunakan. Base URL yang Anda teruskan tetap dipertahankan.
client = Anthropic(api_key=key, auth_token=token)
# Sebelum: mengirim `X-Api-Key: <key>` dan `Authorization: Bearer <token>`
# Sesudah: memunculkan `ValueError`Klien platform mempertahankan aturannya sendiri. AnthropicAWS menerima auth_token di samping api_key tanpa error, dan mengirim kuncinya.
Docstring dari Anthropic.__init__ dan Anthropic.copy di _client.py berisi detailnya.
Jika Anda mengandalkan pengiriman keduanya, misalnya token untuk gateway dan kunci untuk API di belakangnya, teruskan token sebagai auth_token dan setel X-Api-Key di default_headers. Minta gateway menghapus header Authorization-nya sebelum meneruskan permintaan. Claude API mengharapkan satu kredensial per permintaan.
Perubahan pada satu SDK atau CLI
Masing-masing perubahan ini memengaruhi satu SDK atau CLI.
--api-key dan --auth-token dihapus. ant tidak lagi menerima kunci API atau token autentikasi sebagai nilai flag, karena nilai di baris perintah terlihat di riwayat shell dan daftar proses. Kedua flag telah mencetak peringatan deprecation sejak v1.27.0. Perintah yang masih meneruskan salah satunya akan berhenti dengan flag provided but not defined.
| Dihapus | Gunakan sebagai gantinya |
|---|---|
--api-key <key> | ANTHROPIC_API_KEY, --api-key-stdin, atau ant auth login |
--auth-token <token> | ANTHROPIC_AUTH_TOKEN atau --auth-token-stdin |
# Sebelum
ant --api-key "$KEY" models list
# Sesudah, dari environment
export ANTHROPIC_API_KEY="$KEY"
ant models list
# Sesudah, dari secret manager
op read op://vault/anthropic/api-key | ant --api-key-stdin models list--api-key-stdin dan --auth-token-stdin membaca seluruh standard input, sehingga perintah yang menggunakan salah satunya mengambil body permintaannya dari flag.
ant auth status, prompt pertama kali dari ant apply, dan catatan tentang beberapa sumber autentikasi kini menyebut kredensial ini ANTHROPIC_API_KEY dan ANTHROPIC_AUTH_TOKEN, sedangkan sebelumnya mencetak --api-key / ANTHROPIC_API_KEY dan --auth-token / ANTHROPIC_AUTH_TOKEN.
Lisensinya adalah Apache 2.0
Mulai dari versi-versi ini, SDK dan CLI dilisensikan di bawah Apache License, Version 2.0. Versi sebelumnya tetap di bawah MIT License. Tidak ada perubahan kode yang diperlukan. Jika Anda melacak lisensi dependensi Anda, perbarui entri-entrinya.
- TypeScript: Paket platform (
@anthropic-ai/bedrock-sdk,@anthropic-ai/vertex-sdk,@anthropic-ai/foundry-sdk,@anthropic-ai/aws-sdk, dan@anthropic-ai/google-cloud-sdk) berganti lisensi dalam rilis 1.0.0 masing-masing. - C#: Paket lainnya (
Anthropic.Bedrock,Anthropic.Vertex,Anthropic.Foundry,Anthropic.Aws,Anthropic.GoogleCloud, danAnthropic.Mcp) berganti lisensi dalam rilis 1.0.0 masing-masing. - Java: Perubahan ini mencakup setiap artefak
com.anthropic.
Was this page helpful?