Responses (OpenAI agent wire)
Endpoint POST /v1/responses kompatibel dengan OpenAI Responses API dan menyediakan subset stateless untuk klien coding-agent seperti Codex CLI (wire_api = "responses"). Codex CLI versi terbaru tidak lagi mendukung wire chat (wire_api = "chat" langsung gagal sejak sekitar versi 0.140). Karena itu, gunakan endpoint ini untuk memakai Codex melalui kenari.
Stateless
Section titled “Stateless”kenari tidak menyimpan response di server, sehingga chaining melalui previous_response_id tidak tersedia. Field store tetap diterima, tetapi diabaikan sehingga perilakunya selalu sama dengan store: false. Jika previous_response_id berisi nilai selain null, request akan ditolak dengan status 400 disertai pesan yang jelas. Dengan begitu, klien tidak akan mengira continuation tersedia padahal tidak.
Request
Section titled “Request”Field yang wajib ada: model dan input.
| Field | Tipe | Keterangan |
|---|---|---|
model | string | Wajib. Id model, misalnya gpt-5-5. |
input | array | Wajib. Daftar item percakapan: message (role developer/user/assistant), function_call, function_call_output. |
instructions | string | Opsional. Instruksi sistem/developer level atas, dilebur ke system prompt. |
tools | array | Opsional. Deklarasi tool function FLAT di level atas (bukan bersarang seperti wire chat). Tipe tool lain (namespace, web_search, dst.) diabaikan diam-diam di v1. |
tool_choice | string/object | Opsional. "auto", "none", "required", atau {"type": "function", "name": "..."}. |
reasoning | object | Opsional. {"effort": "low"|"medium"|"high"|"xhigh"|"max"} untuk model penalaran, lihat Penalaran. |
max_output_tokens | integer | Opsional. Batas token yang dihasilkan. |
temperature | number | Opsional. |
top_p | number | Opsional. |
stream | boolean | Opsional. Aktifkan streaming. |
store | boolean | Opsional. Diterima, diabaikan. |
previous_response_id | string/null | Opsional. Wajib null atau tidak diisi. Nilai lain ditolak 400. |
Response
Section titled “Response”{ "id": "resp_...", "object": "response", "created_at": 1730000000, "status": "completed", "model": "gpt-5-5", "output": [ {"type": "message", "id": "msg_1", "role": "assistant", "content": [ {"type": "output_text", "text": "Halo! Ada yang bisa saya bantu?"} ]} ], "usage": { "input_tokens": 9, "output_tokens": 12, "total_tokens": 21, "input_tokens_details": {"cached_tokens": 0} }}Pemanggilan function tool ditampilkan sebagai item function_call di dalam array output, dengan call_id, name, dan arguments berupa string JSON. Item ini dapat muncul sebelum atau sesudah item message, mengikuti urutan aslinya.
Codex CLI
Section titled “Codex CLI”model = "gpt-5-5"model_provider = "kenari"
[model_providers.kenari]name = "kenari"base_url = "https://kenari.id/v1"wire_api = "responses"env_key = "KENARI_API_KEY"requires_openai_auth = falseexport KENARI_API_KEY=kn-...codexStreaming
Section titled “Streaming”Atur "stream": true untuk menerima respons secara bertahap dalam bentuk server-sent events dengan format Responses (response.created, response.output_item.added, response.reasoning_summary_part.added, response.reasoning_summary_text.delta, response.reasoning_summary_text.done, response.reasoning_summary_part.done, response.output_text.delta / response.function_call_arguments.delta, response.function_call_arguments.done, response.output_item.done, response.completed, response.failed). Untuk model penalaran, ringkasan penalaran dikirim lewat event response.reasoning_summary_* sebagai satu item output reasoning sebelum jawaban. Penjelasan umum tentang format event tersedia di Streaming.