Obrolan

Penyelesaian chat

Chat Completions API dari OpenAI, untuk semua model teks: permintaan dan respons yang sama, streaming yang sama, SDK yang sama.

POST/v1/chat/completions

Permintaan

modelstringwajib
ID model dari Model halaman, seperti claude-opus-5-5 atau gpt-6-sol.
messagesarraywajib
Percakapan: pesan system (atau developer), user, assistant dan tool. content berupa string, atau array bagian untuk menambahkan gambar, PDF, audio atau video.
streamboolean
Kirim jawaban sebagai server-sent events saat sedang ditulis. Lihat Streaming di bawah.
stream_optionsobject
{ "include_usage": true } menambahkan chunk terakhir yang berisi penggunaan token.
max_completion_tokensinteger
Jumlah maksimum token yang dihasilkan, termasuk penalaran. max_tokens juga bisa digunakan.
temperaturenumber
0 hingga 2. Nilai lebih rendah membuat jawaban lebih terfokus, nilai lebih tinggi membuatnya lebih bervariasi. Beberapa model penalaran mengabaikannya. Claude mulai dari Opus 4.7 (Opus 5 dan 5.5, Fable 5 dan 5.1, Sonnet 5.5, Haiku 5.5) tidak menerima parameter ini, jadi kami tidak menyertakannya untuk model-model tersebut.
top_pnumber
Nucleus sampling, 0 hingga 1. Ubah parameter ini atau temperature, jangan keduanya. Tidak disertakan untuk model Claude yang sama, begitu juga top_k untuk model-model tersebut dan Muse Wonder.
stopstring | array
Hingga 4 urutan yang menghentikan pembuatan teks.
toolsarray
Fungsi yang dapat dipanggil model. Lihat Pemanggilan alat di bawah.
tool_choicestring | object
auto, none, required, atau fungsi tertentu. Jika lab model menolak atau mengabaikan salah satunya (pemaksaan alat pada Claude Opus 5.5, Sonnet 5.5 dan Fable 5.1; apa pun selain auto pada Muse Wonder; none pada beberapa model Gemini, DeepSeek Flash, MiMo, HY4 dan MiniMax), kami mengirimkannya dalam bentuk yang dipatuhi model dan memberi tahu model apa yang Anda minta; fungsi yang dipaksakan berdasarkan nama dikirim sebagai satu-satunya fungsi yang tersedia.
response_formatobject
Output JSON: { "type": "json_object" }, atau json_schema dengan skema. Lihat Output terstruktur di bawah.
reasoning_effortstring
Seberapa dalam model penalaran berpikir: none, minimal, low, medium, high, xhigh atau max. Setiap model menerima sebagian level ini (lihat Penalaran di bawah); level lain dijalankan pada level terdekat yang didukung. Level lebih tinggi membuat model berpikir lebih lama dan menggunakan lebih banyak token output.
seedinteger
Upaya terbaik untuk menghasilkan hasil yang sama, bagi model yang mendukungnya.
modelsarray
Perutean cerdas untuk permintaan ini: alternatif yang dicoba secara berurutan jika model tidak tersedia. Lihat Perutean cerdas.
Parameter OpenAI lainnya diteruskan ke model tanpa perubahan, kecuali user dan metadata, yang tetap kami tangani. Parameter yang dipatuhi model (alat, skema JSON, penalaran) bergantung pada model, sama seperti saat mengaksesnya langsung melalui lab pembuatnya. Dengan OpenAI Python SDK, kirim models sebagai extra_body={"models": [...]}.

Respons

Respons
{
"id": "chatcmpl-AbC123...",
"object": "chat.completion",
"created": 1790870400,
"model": "claude-opus-5-5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Here's the summary..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1204,
"completion_tokens": 312,
"total_tokens": 1516,
"prompt_tokens_details": { "cached_tokens": 1024 },
"completion_tokens_details": { "reasoning_tokens": 128 }
}
}
  • model adalah model yang menjawab. Model ini sesuai permintaan Anda, kecuali perutean cerdas menggunakan model alternatif.
  • Model penalaran dapat menambahkan reasoning_content ke pesan: proses berpikir model, jika dibagikan.
  • usage adalah penggunaan yang ditagihkan kepada Anda. cached_tokens adalah token input yang dibaca dari cache prompt model, ditagihkan dengan harga cache jika model menyediakan harga tersebut.

Setiap respons juga menyertakan header berikut:

HeaderNilai
x-request-idID permintaan, seperti yang tercantum di log permintaan Anda. Sertakan ID ini saat menghubungi dukungan.
x-zurelay-modelModel yang menjawab.
x-zurelay-routed-fromHanya setelah perutean cerdas: model yang Anda minta.
x-zurelay-reasoning-effortHanya jika permintaan menetapkan level penalaran: level yang digunakan model, yaitu level terdekat yang didukung (lihat Penalaran).
x-zurelay-stoppedHanya jika saldo atau anggaran kunci habis di tengah proses, atau jawaban mencapai max_tokens yang telah diturunkan karena saldo atau anggaran tidak cukup untuk lebih banyak token: insufficient_quota, key_budget_exceeded atau key_daily_budget_exceeded. Jawaban berisi teks yang sudah ditulis hingga saat itu, dengan finish_reason: "length".

Streaming

Dengan stream: true, jawaban diterima sebagai server-sent events dalam format chunk OpenAI, diakhiri dengan data: [DONE]. Setiap SDK membacanya untuk Anda.

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
stream = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[
{
"role": "user",
"content": "Write a limerick about databases."
}
],
stream=True,
stream_options={
"include_usage": True
},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
  • Jawaban baru dikirim setelah model menghasilkan token pertama, sehingga percobaan ulang atau perpindahan ke jalur lain tidak terlihat oleh Anda.
  • Saat tidak ada data (model berpikir di antara langkah), baris komentar SSE (: keep-alive) dikirim setiap 15 detik. Klien mengabaikannya; baris ini mencegah proxy menutup koneksi. Jika token pertama membutuhkan lebih dari 20 detik (prompt panjang, atau jalur yang macet dan sedang diganti), stream dibuka saat itu: header dan komentar keep-alive dikirim selama Anda menunggu. Setiap jalur diberi waktu hingga 3 menit untuk mulai (5 pada tingkat penalaran tinggi) sebelum jalur berikutnya dicoba, jadi atur timeout klien Anda ke 10 menit.
  • Stream yang dibuka sebelum token pertama hanya menyertakan x-zurelay-model jika tidak ada model lain yang dapat menjawab (perutean cerdas nonaktif), dan error setelah stream dibuka dikirim sebagai event error di dalam stream (dengan struktur yang sama seperti body error), bukan sebagai status error.
  • Dengan include_usage, chunk terakhir sebelum [DONE] berisi daftar choices kosong dan usage.

Pemanggilan alat

Jelaskan fungsi dalam tools; saat model ingin memanggil fungsi, model merespons dengan tool_calls, bukan teks. Jalankan fungsi, kirim kembali hasilnya sebagai pesan tool dengan ID pemanggilan tersebut, lalu model melanjutkan.

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
response = client.chat.completions.create(
model="gpt-6-sol",
messages=[
{
"role": "user",
"content": "What's the weather in Lisbon right now?"
}
],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
}
],
)
print(response.choices[0].message.content)

Output terstruktur

Minta JSON dengan response_format. json_schema memastikan model yang mendukungnya mengikuti skema Anda; json_object meminta JSON valid dalam bentuk apa pun (nyatakan juga di prompt Anda).

import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.zurelay.com/v1",
api_key=os.environ["ZURELAY_API_KEY"],
)
response = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[
{
"role": "user",
"content": "Extract the people: 'Ana met Ben and Chloe in Porto.'"
}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "people",
"schema": {
"type": "object",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"names"
]
}
}
},
)
print(response.choices[0].message.content)

Penalaran

Model penalaran berpikir sebelum menjawab. Atur reasoning_effort untuk menyeimbangkan kecepatan dan biaya dengan kedalaman penalaran: tingkat yang lebih tinggi membuat model berpikir lebih lama, membutuhkan lebih banyak waktu, dan menggunakan lebih banyak token output. Setiap model mendukung tingkat yang didokumentasikan oleh labnya, mulai dari none (tanpa berpikir), lalu minimal, low, medium, high dan xhigh (sangat tinggi), hingga max; semuanya tercantum dalam tabel di bawah. Jika tidak diisi, model menggunakan pengaturan defaultnya. Cara kerjanya sama dengan SDK OpenAI apa pun, dan Anda dapat mencoba setiap tingkat di Playground dasbor.

from openai import OpenAI
client = OpenAI(base_url="https://api.zurelay.com/v1", api_key="YOUR_ZURELAY_KEY")
response = client.chat.completions.create(
model="zurelay-auto",
reasoning_effort="high",
messages=[{"role": "user", "content": "How many primes are there below 1,000?"}],
)
message = response.choices[0].message
print(getattr(message, "reasoning_content", None)) # the thinking, when the model shares it
print(message.content)

Untuk model yang membagikannya, proses berpikir dikembalikan bersama jawaban dalam message.reasoning_content (saat streaming, dalam delta.reasoning_content); beberapa model menamai kolomnya reasoning. Proses ini ditagih sebagai token output dan selalu termasuk dalam completion_tokens; completion_tokens_details.reasoning_tokens menghitungnya secara terpisah jika model melaporkannya. Pada tingkat penalaran tinggi, jawaban bisa membutuhkan waktu beberapa menit sebelum mulai muncul, jadi beri klien Anda batas waktu yang cukup longgar (lihat Keandalan dan batas waktu).

Tingkat untuk setiap model

Bersumber dari dokumentasi resmi masing-masing lab. Tingkat yang tidak didukung model akan dijalankan pada tingkat terdekat yang didukung (jika ada dua yang sama dekat, dipilih yang lebih rendah; dan proses berpikir hanya dinonaktifkan jika Anda mengirim none), jadi satu permintaan bisa digunakan untuk semua model, termasuk dengan perutean cerdas. Header respons x-zurelay-reasoning-effort menunjukkan tingkat yang dijalankan. Kata yang bukan merupakan tingkat akan ditolak dengan 400 yang mencantumkan tingkat yang didukung model.

ModelIDTingkatBawaan
Abliterated Large V2abliterated-large-v2low, high, maxmax
Claude Fable 5claude-fable-5low, medium, high, xhigh, maxhigh
Claude Fable 5.1claude-fable-5-1low, medium, high, xhigh, maxhigh
Claude Haiku 5.5claude-haiku-5-5low, medium, high, xhigh, maxmedium
Claude Opus 4.6claude-opus-4-6low, medium, high, maxNonaktif sampai Anda mengatur levelnya
Claude Opus 4.7claude-opus-4-7low, medium, high, xhigh, maxNonaktif sampai Anda mengatur levelnya
Claude Opus 4.8claude-opus-4-8low, medium, high, xhigh, maxNonaktif sampai Anda mengatur levelnya
Claude Opus 5claude-opus-5low, medium, high, xhigh, maxhigh
Claude Opus 5.5claude-opus-5-5low, medium, high, xhigh, maxmedium
Claude Sonnet 5.5claude-sonnet-5-5low, medium, high, xhigh, maxhigh
DeepSeek V4 Flashdeepseek-v4-flashnone, high, maxhigh
DeepSeek V4 Flash 0731deepseek-v4-flash-0731none, low, high, maxhigh
DeepSeek V4 Pro 0813deepseek-v4-pro-0813none, low, high, maxhigh
DeepSeek V4.1 Flashdeepseek-v4.1-flashnone, high, maxhigh
DeepSeek V4.1 Flash 1017deepseek-v4.1-flash-1017none, high, maxhigh
Gemini 3.1 Flash-Litegemini-3.1-flash-liteminimal, low, medium, highminimal
Gemini 3.1 Progemini-3.1-prolow, medium, highhigh
Gemini 3.5 Flash-Litegemini-3.5-flash-liteminimal, low, medium, highminimal
Gemini 3.7 Flashgemini-3.7-flashlow, medium, highmedium
Gemini 3.8 Flashgemini-3.8-flashlow, medium, highmedium
Gemini 4 Argongemini-4-argonlow, medium, highmedium
GLM-5.2glm-5.2none, high, maxmax
GLM-5.3glm-5.3low, high, maxmax
GLM-5.3 Flashglm-5.3-flashlow, high, maxmax
GLM-5.3 FlashXglm-5.3-flashxlow, high, maxmax
GPT-5.6 Lunagpt-5.6-lunanone, low, medium, high, xhigh, maxmedium
GPT-5.6 Solgpt-5.6-solnone, low, medium, high, xhigh, maxmedium
GPT-5.6 Terragpt-5.6-terranone, low, medium, high, xhigh, maxmedium
GPT-6 Astragpt-6-astralow, medium, high, xhigh, maxmedium
GPT-6 Lunagpt-6-lunanone, low, medium, high, xhigh, maxmedium
GPT-6 Solgpt-6-solnone, low, medium, high, xhigh, maxmedium
GPT-6.1 Solgpt-6.1-sollow, medium, high, xhigh, maxmedium
GPT-6.1 Terragpt-6.1-terranone, low, medium, high, xhigh, maxmedium
Grok 4.7grok-4.7low, medium, high, xhighhigh
HY4 Previewhy4-previewnone, highhigh
Kimi K2.5kimi-k2.5none, highhigh
Kimi K2.6kimi-k2.6none, highhigh
Kimi K3kimi-k3low, high, maxmax
Kimi K3.1 Prokimi-k3.1-prolow, high, maxmax
Kimi K3.1 Pro Highspeedkimi-k3.1-pro-highspeedlow, high, maxmax
MiMo V2.6 Flashmimo-v2.6-flashnone, highhigh
MiMo V2.6 Promimo-v2.6-pronone, highhigh
MiniMax M3minimax-m3none, highhigh
MiniMax M3.1 Flashminimax-m3.1-flashlow, medium, high, xhigh, maxmax
Muse Spark 1.3 Contributormuse-spark-1.3-contributorminimal, low, medium, high, xhighmedium
Muse Wondermuse-wonder-1.0minimal, low, medium, high, xhigh, maxhigh
Qwen 3.8 Flashqwen3.8-flashnone, low, medium, xhighxhigh
Qwen 3.8 Maxqwen3.8-maxnone, low, medium, xhighxhigh
Qwen 3.8 Omni Flashqwen3.8-omni-flashnone, low, medium, xhighxhigh
Langkah 5 Previewstep-5-previewlow, medium, highmedium
Zurelay Autozurelay-autonone, minimal, low, medium, high, xhigh, maxNonaktif sampai Anda mengatur levelnya
MiniMax M2.5minimax-m2.5Tidak ada yang perlu diaturSelalu berpikir
Claude Haiku 4.5claude-haiku-4-5Tidak ada (anggaran berpikir dalam format Anthropic)Nonaktif
Ministral 3 14Bministral-3-14bTidak adaNonaktif
Ministral 3 3Bministral-3-3bTidak adaNonaktif

Proses berpikir Claude

Melalui endpoint ini, Claude menerima reasoning_effort seperti model lainnya: low, medium, high, xhigh atau max (Opus 4.6 tidak mendukung xhigh). Dalam format asli Anthropic, Claude berpikir secara adaptif pada tingkat tertentu: kirim thinking: { type: "adaptive", display: "summarized" } dengan output_config: { effort: "xhigh" } dan baca blok pemikirannya. Lihat Anthropic Messages.

Ada pertanyaan, atau ada yang kurang? Tanyakan kepada tim dukungan kami dan kami akan menjawab lewat email, biasanya dalam satu menit.