Langsung ke konten
Search documentation titles, headings, and guides
API v1Updated 2026-09-16

Chat Completions

Endpoint POST /v1/chat/completions yang drop-in kompatibel OpenAI, dengan streaming, function calling, dan parameter passthrough.

POST /v1/chat/completions adalah pengganti drop-in untuk protokol Chat Completions OpenAI. Arahkan klien apa pun yang kompatibel OpenAI ke base URL gateway dan kode Anda tetap berjalan — satu-satunya perubahan hanyalah identifier model.

Endpoint#

POST/v1/chat/completions
Auth: api-key

Membuat chat completion. Respons mengikuti bentuk objek chat.completion OpenAI, dan streaming mengikuti protokol chunk OpenAI yang dinormalisasi oleh zrouter (terminator data: [DONE]).

Parameters

modelstringbodyrequired

Identifier model. Gunakan nilai `<public-name>` dari Katalog Model — lihat [Katalog Model](/id/docs/api-reference/models).

messagesarraybodyrequired

Percakapan sebagai array terurut berisi objek `{ role, content }`. Minimal satu message.

streambooleanbodyoptionaldefault: false

Set `true` untuk menerima stream Server-Sent Events alih-alih satu respons JSON. Lihat [Streaming & SSE](/id/docs/api-reference/streaming).

max_tokensintegerbodyoptional

Jumlah maksimum token yang akan digenerate. Diteruskan ke upstream tanpa perubahan bila diberikan.

temperaturenumberbodyoptional

Temperature sampling. Diteruskan ke upstream tanpa perubahan bila diberikan.

top_pnumberbodyoptional

Nucleus sampling. Diteruskan ke upstream tanpa perubahan bila diberikan.

Request Example

curl -X POST "https://api.zrouter.dev/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<public-name>",
    "messages": [{"role": "user", "content": "Say hello!"}]
  }'

Responses

200Completion berhasil.
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1720000000,
  "model": "<public-name>",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "Hello!" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 9, "completion_tokens": 3, "total_tokens": 12 }
}
400`invalid_request` — body salah format atau tidak valid.
401`invalid_api_key` — key hilang, salah, atau dua header bernilai berbeda.
402`insufficient_balance` — saldo Token Plan dan PAYG tidak mencukupi.
404`model_not_found` — identifier model tidak ada atau disembunyikan.
429`technical_limit` — passthrough 429 dari upstream, bukan rate limit zrouter.
502`upstream_error` — penyedia upstream gagal memproses request.
503`overloaded` atau `circuit_open` — kapasitas penuh atau circuit breaker terbuka.

Parameter yang tidak tercantum di atas (misalnya field tool/function-calling atau response_format) diteruskan ke upstream apa adanya. zrouter tidak menulis ulang body request kecuali parameter yang ia perlukan untuk routing, metering, dan billing.

Streaming#

Set "stream": true untuk mengalirkan token secara inkremental. Gateway menormalkan stream upstream ke protokol chunk OpenAI klasik dan mengakhirinya dengan data: [DONE]. Contoh event mentah untuk ketiga protokol ada di Streaming & SSE.