Laras RouterDocs

Referensi API

Membuat chat completion

POST /v1/chat/completions menghasilkan pesan assistant berikutnya untuk sebuah percakapan, sebagai JSON atau stream.

Di halaman ini
POSThttps://api.larasrouter.com/v1/chat/completions

Menghasilkan pesan assistant berikutnya untuk sebuah percakapan, dalam format OpenAI Chat Completions. Mendukung streaming, tool calling, dan output JSON.

Autentikasi
Kirim kunci di salah satu header berikut:Authorization: Bearer lr_live_…x-api-key: lr_live_…
Tipe konten
application/json

Body request

  • modelstringwajib

    ID model. Satu-satunya nilai yang diterima adalah deepseek-flash.

  • messagesarraywajib

    Percakapan sejauh ini, dari yang paling lama.

    • rolestringwajib

      system, user, assistant, atau tool.

    • contentstring | array | nullwajib

      Teks pesan, atau array berisi bagian {"type": "text"}. Bagian gambar ditolak dengan 400 unsupported_content. Boleh null pada pesan assistant yang hanya membawa tool_calls.

    • tool_callsarray

      Pada pesan assistant: tool call yang dibuat model, dikirim kembali tanpa diubah.

    • tool_call_idstring

      Pada pesan tool: id tool call yang dijawab oleh hasil ini.

  • max_tokensinteger

    Batas 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_tokensinteger

    Alias dari max_tokens. Jika Anda mengirim keduanya, nilai yang lebih kecil yang dipakai.

  • streamboolean

    Kirim respons sebagai Server-Sent Events. Default false.

  • stream_optionsobject

    Opsi streaming.

    • include_usageboolean

      Kirim chunk terakhir berisi pemakaian token sebelum [DONE].

  • toolsarray

    Definisi fungsi yang boleh dipanggil model: {"type": "function", "function": {name, description, parameters}}.

  • tool_choicestring | object

    auto, 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
  }'

Body respons

  • idstring

    ID completion.

  • objectstring

    chat.completion, atau chat.completion.chunk untuk chunk stream.

  • createdinteger

    Unix timestamp dalam detik.

  • modelstring

    Model yang menjawab.

  • choicesarray

    Satu pilihan jawaban.

    • message.contentstring | null

      Teks jawaban.

    • message.reasoning_contentstring | null

      Penalaran model, jika ada. Ditagih sebagai output.

    • message.tool_callsarray

      Tool call yang perlu Anda jalankan.

    • finish_reasonstring

      stop, length (batas output tercapai), atau tool_calls.

  • usageobject

    Jumlah token yang menjadi dasar perhitungan biaya.

    • prompt_tokensinteger

      Seluruh token input.

    • prompt_cache_hit_tokensinteger

      Token input yang dilayani dari cache, ditagih $0.010 / 1M.

    • prompt_cache_miss_tokensinteger

      Token input yang tidak ada di cache, ditagih $0.400 / 1M.

    • completion_tokensinteger

      Token output, termasuk reasoning, ditagih $1.600 / 1M.

    • total_tokensinteger

      Input ditambah output.

200 OK
{
  "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.

text/event-stream
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

200Completion: objek JSON, atau stream SSE jika stream bernilai true.
application/jsontext/event-stream
  • X-Laras-Request-ID string — Identitas penagihan request (UUID). Sertakan saat Anda menghubungi support soal tagihan.
400Request tidak valid.
application/json
KodeTipeArti
invalid_requestinvalid_request_errorBody bukan JSON yang valid atau tidak menyebutkan model.
max_tokens_exceededinvalid_request_errormax_tokens atau max_completion_tokens di atas 384.000.
unsupported_contentinvalid_request_errorAda pesan yang berisi gambar atau bagian non-teks lainnya.
401Autentikasi gagal.
application/json
KodeTipeArti
invalid_api_keyinvalid_request_errorKunci tidak ada, formatnya salah, sudah dicabut, atau tidak dikenal.
402Wallet atau anggaran kunci tidak cukup untuk request ini. Ditolak sebelum model dipanggil; tidak ada saldo yang ditahan.
application/json
KodeTipeArti
insufficient_creditinsufficient_quotaSaldo tersedia $0.00 atau kurang. Isi saldo.
key_budget_exceededinsufficient_quotaRequest akan membuat kunci melampaui anggaran bulanannya.
403Kunci tidak memiliki scope chat:write.
application/json
KodeTipeArti
insufficient_scopeinsufficient_permissionsKunci tidak bisa memanggil endpoint ini.
404Model tidak tersedia.
application/json
KodeTipeArti
model_not_foundinvalid_request_errorGunakan deepseek-flash.
413Body request lebih besar dari 16 MB.
application/json
KodeTipeArti
request_too_largeinvalid_request_errorRingkas percakapan atau output tool.
429Batas per kunci tercapai. Tunggu sesuai Retry-After.
application/json
  • Retry-After integer — Jumlah detik yang perlu ditunggu sebelum mencoba lagi.
KodeTipeArti
rate_limit_exceededrate_limit_exceededLebih dari 300 request dalam satu menit pada kunci ini.
concurrency_limit_exceededrate_limit_exceededLebih dari 16 request berjalan bersamaan pada kunci ini.
502Penyedia model gagal atau tidak bisa dihubungi.
application/json
KodeTipeArti
provider_unavailableapi_errorCoba lagi dengan backoff.
503Billing sementara tidak tersedia; request tidak dijalankan.
application/json
KodeTipeArti
billing_unavailableapi_errorCoba lagi nanti. Anda tidak ditagih.