Teks

Create Chat Completion

Membuat penyelesaian (completion) untuk pesan chat

POST
/v1/chat/completions

Isi Permintaan

Parameter opsional yang didukung, nilai yang diterima, dan nilai default bergantung pada model yang dipilih. Periksa detail model sebelum mengatur opsi sampling, reasoning, atau tool.

modelstringwajib

ID model yang akan digunakan. Lihat Models untuk opsi yang tersedia.

messagesarraywajib

Daftar pesan yang membentuk percakapan.

Setiap objek pesan berisi:

  • role (string): system, developer, user, assistant, tool, function
  • content (string | array | null): Isi pesan

Untuk pesan assistant yang berisi tool_calls, content dapat dihilangkan atau diatur ke null.

Ketika content berupa array, TokenLab mendukung blok multimodal terstruktur untuk model yang kompatibel:

  • text: { "type": "text", "text": "..." }
  • image: { "type": "image_url", "image_url": { "url": "https://..." } }
  • video: { "type": "video_url", "video_url": { "url": "https://..." } }
  • audio: { "type": "audio_url", "audio_url": { "url": "https://..." } }

Untuk input multimodal, gunakan URL https yang dapat diakses publik. Jenis media yang didukung bergantung pada model yang dipilih.

temperaturenumber

Temperatur sampling. Dukungan, nilai yang diizinkan, dan nilai default bergantung pada model yang dipilih; hilangkan kolom ini untuk menggunakan nilai defaultnya.

max_tokensinteger

Jumlah maksimum token yang akan dihasilkan.

Untuk deepseek-v4.1-flash (dan alias deepseek-flash), model secara default berpikir (thinking) terlebih dahulu. Token thinking dihitung dalam max_tokens. Jika max_tokens terlalu kecil, seluruh anggaran bisa habis untuk thinking sehingga isi pesan kosong, sementara permintaan tetap ditagih. Untuk jawaban panjang, gunakan max_tokens sekitar 32000, atau matikan thinking. Untuk mematikan thinking, tambahkan "thinking": {"type": "disabled"} (atau "reasoning_effort": "none") ke body permintaan; ini berlaku untuk permintaan streaming maupun non-streaming. "enable_thinking": false dan "reasoning": {"enabled": false} tidak mematikannya.

streambooleanbawaan: false

Jika true, delta pesan parsial akan dikirim sebagai event SSE.

Untuk output panjang (ribuan token atau lebih), atur stream=true agar klien non-streaming tidak mengalami timeout saat menunggu respons lengkap. Pengukuran tim: GPT-6.1 Sol yang menghasilkan sekitar 12 ribu karakter membutuhkan sekitar 147 detik tanpa streaming.

stream_optionsobject

Opsi untuk streaming. Atur include_usage: true untuk menerima penggunaan token dalam potongan stream.

top_pnumber

Parameter sampling nucleus. Kami menyarankan untuk mengubah parameter ini atau temperature, jangan keduanya.

frequency_penaltynumber

Angka antara -2.0 dan 2.0. Nilai positif memberikan penalti pada token yang berulang.

presence_penaltynumber

Angka antara -2.0 dan 2.0. Nilai positif memberikan penalti pada token yang sudah ada dalam teks.

stopstring | array

Urutan berhenti (stop sequence) atau daftar urutan. Dukungan dan batas urutan bergantung pada model yang dipilih.

toolsarray

Daftar alat (tools) yang mungkin dipanggil oleh model (function calling).

tool_choicestring | object

Mengontrol bagaimana model menggunakan alat. Opsi: auto, none, required, atau objek alat tertentu.

parallel_tool_callsboolean

Mengizinkan beberapa panggilan alat dalam satu giliran asisten, jika didukung oleh model yang dipilih.

max_completion_tokensinteger

Token maksimum untuk penyelesaian. Alternatif untuk max_tokens, berguna untuk keluarga model baru yang mendukung reasoning.

reasoning_effortstring

Upaya reasoning untuk model yang mendukungnya. Nilai yang diterima bergantung pada model yang dipilih.

Untuk model Claude, nilai ini mengatur cara berpikir model: tingkat upaya pada model dengan adaptive thinking, atau anggaran berpikir (thinking budget) pada model yang menggunakannya. none mematikan fitur berpikir pada model yang mengizinkannya. Saat fitur berpikir aktif, Claude menolak temperature selain 1, top_k, top_p di luar 0.95–1, dan pesan asisten yang telah diisi sebelumnya (prefilled). tool_choice paksa berfungsi dengan adaptive thinking tetapi tidak dengan anggaran berpikir.

anthropic_optionsobject

Opsi untuk model Claude.

  • prompt_caching (boolean): Atur true untuk melakukan caching pada awal prompt. TokenLab menandai akhir dari prompt sistem dan pesan pengguna terbaru sebagai titik cache. Permintaan berikutnya yang dimulai dengan konten yang sama akan membacanya dari cache. Jika pesan apa pun sudah memiliki cache_control, TokenLab tidak menambahkan titik cache.
  • prompt_caching_ttl (string): 5m (default) atau 1h. Jika rute penyajian tidak mendukung satu jam, TokenLab menggunakan lima menit dan tidak menolak permintaan tersebut.

extra.prompt_caching dan extra.prompt_caching_ttl diterima sebagai opsi yang sama. Lihat Prompt caching untuk harga dan cara memeriksa token yang di-cache.

seedinteger

Seed sampling untuk model yang mendukungnya. Output yang identik tidak dijamin.

ninteger

Jumlah penyelesaian yang akan dihasilkan (1-128).

logprobsboolean

Apakah akan mengembalikan log probabilitas.

top_logprobsinteger

Jumlah log probabilitas teratas yang akan dikembalikan (0-20). Memerlukan logprobs: true.

top_kinteger

Sampling Top-K untuk model yang mendukungnya.

response_formatobject

Format respons. Gunakan {"type": "json_object"} untuk mode JSON atau {"type": "json_schema", "json_schema": {...}} untuk skema JSON. Dukungan bergantung pada model yang dipilih.

logit_biasobject

Memodifikasi kemungkinan munculnya token tertentu. Petakan ID token (sebagai string) ke nilai bias dari -100 hingga 100.

userstring

Pengidentifikasi unik yang mewakili pengguna akhir Anda untuk pemantauan penyalahgunaan.

Response

idstring

Pengidentifikasi unik untuk penyelesaian.

objectstring

Selalu chat.completion.

createdinteger

Unix timestamp kapan penyelesaian dibuat.

modelstring

Model yang digunakan untuk penyelesaian.

choicesarray

Daftar pilihan penyelesaian.

Setiap pilihan berisi:

  • index (integer): Indeks pilihan
  • message (object): Pesan yang dihasilkan
  • finish_reason (string): Alasan model berhenti, contohnya stop, length, atau tool_calls

Ketika model berpikir, message juga dapat berisi:

  • reasoning_content (string): Teks pemikiran. Beberapa model hanya mengembalikan ringkasan, atau tidak ada teks sama sekali.
  • reasoning_details (array): Blok pemikiran beserta tanda tangannya. Untuk melanjutkan percakapan dengan pemikiran, misalnya setelah panggilan alat, kirimkan kembali tanpa perubahan dalam pesan asisten.

Dalam stream, bidang yang sama akan tiba sebagai delta.reasoning_content dan delta.reasoning_details.

usageobject

Statistik penggunaan token.

  • prompt_tokens (integer): Token dalam prompt
  • completion_tokens (integer): Token dalam penyelesaian, termasuk token pemikiran
  • total_tokens (integer): Total token yang digunakan
  • completion_tokens_details.reasoning_tokens (integer): Token pemikiran, saat model melaporkannya

Permintaan

curl -X POST "https://api.tokenlab.sh/v1/chat/completions" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-terra",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello!"}
    ],
    "max_tokens": 1000
  }'

Contoh Multimodal

{
  "model": "gemini-2.5-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "Describe this video briefly." },
        { "type": "video_url", "video_url": { "url": "https://example.com/demo.mp4" } }
      ]
    }
  ],
  "max_tokens": 64
}

Respons

Response
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1706000000,
  "model": "gpt-5.6-terra",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 9,
    "total_tokens": 29
  }
}

Otorisasi

BearerAuth
AuthorizationBearer <token>

Autentikasi API Key. Buat atau kelola API key di Dashboard > API > API Keys.

Lokasi: header

Header

X-TokenLab-Delivery-Policy?string

Kebijakan Pengiriman per-permintaan. Menggantikan default API key dan Workspace. Secara otomatis mencoba TokenLab Verified terlebih dahulu dan dapat beralih satu kali ke Official saja sebelum output, penerimaan permintaan, atau pembuatan sumber daya persisten.

Nilai yang tersedia

  • "auto"
  • "verified"
  • "official"

Body permintaan

application/json

Respons

application/json

application/json

application/json

application/json

application/json

application/json

application/json