Biaya & batas
Kompatibilitas & batasan
Apa yang diterjemahkan antar format dan apa yang sengaja ditolak.
Kompatibilitas & batasan jalur terjemah
Semua model bisa dipanggil lewat ketiga format. Bila format klien sama dengan format upstream → passthrough. Bila berbeda → terjemah:
| Klien \ Upstream | openai_chat | openai_responses | anthropic |
|---|---|---|---|
| Chat | passthrough | terjemah | terjemah |
| Responses | terjemah | passthrough | terjemah |
| Messages | terjemah | terjemah | passthrough |
Format upstream ditentukan oleh route model itu (Anthropic Messages, OpenAI Responses, atau OpenAI Chat) dan bisa berbeda antar model maupun berubah dari waktu ke waktu. Kamu tidak perlu menyesuaikan apa pun: terjemahan berjalan otomatis.
Yang diterjemahkan
- System prompt: Chat
system/developer, Responsesinstructions+ inputsystem/developer, Anthropicsystem(string/blok) — saling dipetakan. - Tool fungsi saja: Chat
tools[].function, Responsestools[]{type:"function"}, Anthropictools[]. Hasil tool (role:"tool"/function_call_output/tool_result) menjadi bagian pesan user; pesan berurutan dengan role sama digabung. - Gambar:
image_url/input_image/image(base64 atau URL https). - Reasoning effort:
reasoning_effort/reasoning.effort/thinking:{type:"adaptive"}+output_config.effort— saling dipetakan. Thinking Anthropic kembali ke klien OpenAI sebagaireasoning_content(Chat) / itemreasoning(Responses). - JSON schema:
response_format/text.format→output_config.formatdi Anthropic. - Model: id publik di body selalu diganti ke nama upstream saat request, dan dikembalikan ke id publik di respons (termasuk tiap chunk stream).
- Parameter tak dikenal di jalur terjemah diabaikan (bukan error) — kecuali yang di bawah.
Yang ditolak
Alasannya: tool server yang tidak kami jalankan sendiri ditagih di luar token (per panggilan / harga berbeda), sehingga tidak bisa dijual per credit dengan jelas. mcp lebih berisiko lagi: server akan memanggil URL klien atas akun kami. Web search, web fetch, dan X search kami jalankan sendiri dan ditagih per credit — lihat Server tools.
Tool
| Format | Tool klien | Dijalankan Ngoding (server tools) | Ditolak → 400 unsupported_tool |
|---|---|---|---|
| Chat | function, custom | web_search_options | file_search, code_interpreter, image_generation, mcp*, … |
| Responses | function, custom, local_shell, apply_patch, shell tanpa environment atau environment.type: "local" (dieksekusi klien) | web_search, x_search | sama seperti Chat, plus shell dengan container hosted (container_auto, container_reference; menunggu sandbox milik kami) |
| Messages | tanpa type, custom, tool klien versi-an (bash_*, text_editor_*, computer_*, memory_*) | web_search_*, web_fetch_*, x_search_20261005 | code_execution* (menunggu sandbox milik kami), mcp*, … |
Berlaku di semua jalur — termasuk passthrough. Server tool yang tidak aktif untuk sebuah model (cek capabilities di GET /v1/models) juga ditolak 400 unsupported_tool. Request Responses dan Chat yang memakai server tool selalu lewat jalur terjemah, juga bila upstream-nya berformat sama, dan hanya menerima tool klien berjenis function (detail).
Parameter yang ditolak → 400 unsupported_parameter
| Format | Parameter |
|---|---|
| Messages | mcp_servers, container |
| Chat | audio, modalities berisi "audio" |
Yang dibuang diam-diam (bukan error)
service_tier— selalu tier default.- Nilai header
anthropic-betaberawalancode-execution,mcp-client,web-fetch,web-search,files-api,skills,context-1m(context-1m= harga premium konteks panjang di luar tier katalog). Nilai beta lain diteruskan. - Responses:
previous_response_id,background,conversation,prompt→ 400unsupported_parameterdi semua jalur (termasuk passthrough); request ke upstream selalustore: false. Kirim ulang konteks tiap request (stateless). n > 1(Chat) di jalur terjemah → 400.max_tokensmelebihi batas keluaran model → dipotong, bukan error.- Ke Anthropic tidak pernah dikirim
budget_tokens(ditolak model 4.7+).
Privasi & keamanan terjemahan
- Header
Authorization/x-api-keyklien, cookie, danx-forwarded-*tidak diteruskan ke upstream. Header respons upstream tidak diteruskan (bisa membocorkan org id). - Pesan error upstream disanitasi (≤ 500 karakter, nama model upstream → id publik, redaksi
sk-…,org-…,req_…,user-…). - Tidak ada retry otomatis ke upstream (menghindari tagihan ganda).