Referensi API
Membuat chat completion
POST /v1/chat/completions menghasilkan pesan assistant berikutnya untuk sebuah percakapan, sebagai JSON atau stream.
Di halaman ini
Menghasilkan pesan assistant berikutnya untuk sebuah percakapan, dalam format OpenAI Chat Completions. Mendukung streaming, tool calling, dan output JSON.
Body request
modelstringwajibID model. Satu-satunya nilai yang diterima adalah
deepseek-flash.messagesarraywajibPercakapan sejauh ini, dari yang paling lama.
rolestringwajibsystem,user,assistant, atautool.contentstring | array | nullwajibTeks pesan, atau array berisi bagian
{"type": "text"}. Bagian gambar ditolak dengan400 unsupported_content. Bolehnullpada pesan assistant yang hanya membawatool_calls.tool_callsarrayPada pesan
assistant: tool call yang dibuat model, dikirim kembali tanpa diubah.tool_call_idstringPada pesan
tool:idtool call yang dijawab oleh hasil ini.
max_tokensintegerBatas output, 1 sampai 384.000. Default 8.192 jika tidak diisi. Nilai yang lebih besar ditolak dengan
400 max_tokens_exceeded, tidak pernah diturunkan diam-diam. Token reasoning ikut dihitung.max_completion_tokensintegerAlias dari
max_tokens. Jika Anda mengirim keduanya, nilai yang lebih kecil yang dipakai.streambooleanKirim respons sebagai Server-Sent Events. Default
false.stream_optionsobjectOpsi streaming.
include_usagebooleanKirim chunk terakhir berisi pemakaian token sebelum
[DONE].
toolsarrayDefinisi fungsi yang boleh dipanggil model:
{"type": "function", "function": {name, description, parameters}}.tool_choicestring | objectauto,none,required, atau fungsi tertentu.response_formatobject{"type": "json_object"}membuat model mengembalikan objek JSON yang valid.temperature, top_p, stop, presence_penalty, frequency_penalty—Parameter sampling, diteruskan ke model tanpa diubah.
Contoh request
curl https://api.larasrouter.com/v1/chat/completions \
-H "Authorization: Bearer $LARAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-flash",
"messages": [
{"role": "system", "content": "Kamu adalah asisten yang ringkas."},
{"role": "user", "content": "Sebutkan tiga kegunaan hash map."}
],
"max_tokens": 1024
}'
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.larasrouter.com/v1",
api_key=os.environ["LARAS_API_KEY"],
)
response = client.chat.completions.create(
model="deepseek-flash",
messages=[
{"role": "system", "content": "Kamu adalah asisten yang ringkas."},
{"role": "user", "content": "Sebutkan tiga kegunaan hash map."},
],
max_tokens=1024,
)
print(response.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.larasrouter.com/v1",
apiKey: process.env.LARAS_API_KEY,
});
const response = await client.chat.completions.create({
model: "deepseek-flash",
messages: [
{ role: "system", content: "Kamu adalah asisten yang ringkas." },
{ role: "user", content: "Sebutkan tiga kegunaan hash map." },
],
max_tokens: 1024,
});
console.log(response.choices[0].message.content);
Body respons
idstringID completion.
objectstringchat.completion, atauchat.completion.chunkuntuk chunk stream.createdintegerUnix timestamp dalam detik.
modelstringModel yang menjawab.
choicesarraySatu pilihan jawaban.
message.contentstring | nullTeks jawaban.
message.reasoning_contentstring | nullPenalaran model, jika ada. Ditagih sebagai output.
message.tool_callsarrayTool call yang perlu Anda jalankan.
finish_reasonstringstop,length(batas output tercapai), atautool_calls.
usageobjectJumlah token yang menjadi dasar perhitungan biaya.
prompt_tokensintegerSeluruh token input.
prompt_cache_hit_tokensintegerToken input yang dilayani dari cache, ditagih $0.010 / 1M.
prompt_cache_miss_tokensintegerToken input yang tidak ada di cache, ditagih $0.400 / 1M.
completion_tokensintegerToken output, termasuk reasoning, ditagih $1.600 / 1M.
total_tokensintegerInput ditambah output.
{
"id": "chatcmpl-…",
"object": "chat.completion",
"created": 1760241600,
"model": "deepseek-flash",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "1. Menyimpan hasil (cache) berdasarkan key…",
"reasoning_content": "Pengguna meminta tiga kegunaan…"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 180,
"total_tokens": 204,
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 24
}
}
Streaming
Dengan "stream": true, respons berupa aliran event chat.completion.chunk yang diakhiri dengan data: [DONE]. Atur stream_options.include_usage untuk menerima pemakaian token di chunk terakhir. Lihat Streaming.
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"1. Menyimpan"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":24,"completion_tokens":180,"total_tokens":204,"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":24}}
data: [DONE]
Respons
stream bernilai true.X-Laras-Request-IDstring — Identitas penagihan request (UUID). Sertakan saat Anda menghubungi support soal tagihan.
| Kode | Tipe | Arti |
|---|---|---|
invalid_request | invalid_request_error | Body bukan JSON yang valid atau tidak menyebutkan model. |
max_tokens_exceeded | invalid_request_error | max_tokens atau max_completion_tokens di atas 384.000. |
unsupported_content | invalid_request_error | Ada pesan yang berisi gambar atau bagian non-teks lainnya. |
| Kode | Tipe | Arti |
|---|---|---|
invalid_api_key | invalid_request_error | Kunci tidak ada, formatnya salah, sudah dicabut, atau tidak dikenal. |
| Kode | Tipe | Arti |
|---|---|---|
insufficient_credit | insufficient_quota | Saldo tersedia $0.00 atau kurang. Isi saldo. |
key_budget_exceeded | insufficient_quota | Request akan membuat kunci melampaui anggaran bulanannya. |
chat:write.| Kode | Tipe | Arti |
|---|---|---|
insufficient_scope | insufficient_permissions | Kunci tidak bisa memanggil endpoint ini. |
| Kode | Tipe | Arti |
|---|---|---|
model_not_found | invalid_request_error | Gunakan deepseek-flash. |
| Kode | Tipe | Arti |
|---|---|---|
request_too_large | invalid_request_error | Ringkas percakapan atau output tool. |
Retry-After.Retry-Afterinteger — Jumlah detik yang perlu ditunggu sebelum mencoba lagi.
| Kode | Tipe | Arti |
|---|---|---|
rate_limit_exceeded | rate_limit_exceeded | Lebih dari 300 request dalam satu menit pada kunci ini. |
concurrency_limit_exceeded | rate_limit_exceeded | Lebih dari 16 request berjalan bersamaan pada kunci ini. |
| Kode | Tipe | Arti |
|---|---|---|
provider_unavailable | api_error | Coba lagi dengan backoff. |
| Kode | Tipe | Arti |
|---|---|---|
billing_unavailable | api_error | Coba lagi nanti. Anda tidak ditagih. |