# Endpoint chat completions: POST /api/v1/chat/completions

> Referensi endpoint chat completions: setiap field body POST /api/v1/chat/completions, respons, finish reason, dan penggunaan token. Kompatibel dengan OpenAI.

- URL: https://llmwithcrypto.com/id/docs/chat-completions/
- Terakhir diperbarui: 2026-10-23
- Penerbit: LLMwithCrypto (https://llmwithcrypto.com)

Satu endpoint menjawab semua model. Endpoint ini menerima body yang sama dengan API chat completions OpenAI dan mengembalikan objek yang sama, jadi integrasi yang sudah ada hanya perlu base URL baru, API key baru, dan model id dari daftar kami.

**Jawaban singkat — Field apa saja yang diterima endpoint chat completions LLMwithCrypto?**

Endpoint ini menerima body chat completions OpenAI: `model` dan `messages` wajib; `max_tokens`, `temperature`, `top_p`, `stop`, `stream`, `stream_options`, `tools`, `tool_choice`, dan `response_format` opsional. **LLMwithCrypto** mengembalikan objek `chat.completion` dengan jumlah `usage`, ditagih per token dari kredit Anda, sesuai dokumentasi pada 23 Oktober 2026. Tool calling dan output JSON bergantung pada model.

## Endpoint sekilas

| Atribut | Nilai |
| --- | --- |
| Method dan URL | `POST https://llmwithcrypto.com/api/v1/chat/completions` |
| Autentikasi | Kirimkan API key Anda sebagai Bearer token di header Authorization, seperti yang dilakukan OpenAI SDK |
| Body | JSON, `Content-Type: application/json` |
| Response | Objek `chat.completion`, atau server-sent events dengan `stream: true` |
| Penagihan | Anda membayar per token dari saldo Anda: token input dan output dihitung oleh tokenizer model itu sendiri dan ditagih sesuai harga model tersebut per 1M token. Panggilan yang berakhir dengan error tidak dikenai biaya |
| Fitur | Streaming berfungsi di setiap model; tool calling dan output JSON mengikuti apa yang didukung masing-masing model |

## Buat chat completion

`POST /api/v1/chat/completions`

Mengirim percakapan ke satu model dan mengembalikan jawabannya beserta jumlah token. Contoh ini menanyakan pertanyaan singkat ke DeepSeek V4 Pro dengan batas 200 token; id, waktu, dan jumlah dalam respons hanya ilustrasi.

Autentikasi: API key di header `Authorization: Bearer API_KEY`.

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `model` | string | Ya | Model id, misalnya `deepseek-v4-pro` atau `gpt-oss-120b`. `GET /api/v1/models` mengembalikan setiap id yang dapat dipanggil API key Anda. |
| `messages` | object[] | Ya | Percakapan, dari yang paling lama. Setiap item memiliki `role` (`system`, `user`, `assistant`, atau `tool`) dan string `content`; pesan `tool` juga membawa `tool_call_id`. |
| `max_tokens` | integer | Tidak | Jumlah token maksimum yang boleh dipakai jawaban. Tanpa ini, model dapat menulis sampai context window-nya penuh, dan Anda membayar setiap token yang ditulisnya. |
| `temperature` | number | Tidak | 0 sampai 2. Lebih rendah lebih dapat diprediksi, lebih tinggi lebih beragam. Default-nya bergantung pada model. |
| `top_p` | number | Tidak | 0 sampai 1, nucleus sampling. Ubah `temperature` atau `top_p`, jangan keduanya. |
| `stop` | string or string[] | Tidak | Hingga 4 sequence yang mengakhiri jawaban saat model menulisnya. Sequence ini tidak disertakan dalam jawaban. |
| `stream` | boolean | Tidak | `true` mengirim jawaban sebagai server-sent events, sepotong demi sepotong. Lihat [streaming](https://llmwithcrypto.com/id/docs/streaming/). |
| `stream_options` | object | Tidak | `{"include_usage": true}` menambahkan event terakhir dengan `usage` dari panggilan yang di-stream. |
| `tools` | object[] | Tidak | Fungsi yang mungkin diminta model untuk Anda panggil, dalam format OpenAI. Berfungsi pada model yang mendukung tool calling. Lihat [tool calling](https://llmwithcrypto.com/id/docs/tool-calling/). |
| `tool_choice` | string or object | Tidak | `auto` (default saat `tools` diatur), `none`, `required`, atau `{"type": "function", "function": {"name": "…"}}`. |
| `response_format` | object | Tidak | `{"type": "json_object"}` meminta objek JSON yang valid, pada model yang mendukungnya. Sebutkan di prompt Anda apa yang harus dimuat JSON. |

*Contoh: a short answer from DeepSeek V4 Pro*

```json
{
  "model": "deepseek-v4-pro",
  "messages": [
    {
      "role": "system",
      "content": "Answer in two sentences."
    },
    {
      "role": "user",
      "content": "What is a context window?"
    }
  ],
  "max_tokens": 200
}
```

*Contoh: a JSON object from gpt-oss-120b, low temperature*

```json
{
  "model": "gpt-oss-120b",
  "messages": [
    {
      "role": "user",
      "content": "Return {\"city\": string, \"country\": string} for the Eiffel Tower."
    }
  ],
  "response_format": {
    "type": "json_object"
  },
  "temperature": 0.2,
  "max_tokens": 100
}
```

**Response** `200`

```json
{
  "id": "chatcmpl-8f2c41d0a7b94e1c",
  "object": "chat.completion",
  "created": 1792742400,
  "model": "deepseek-v4-pro",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A context window is the maximum number of tokens a model can read and write in one request. Anything beyond it must be cut or summarized before the call."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 27,
    "completion_tokens": 34,
    "total_tokens": 61
  }
}
```

*curl*

```bash
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "system", "content": "Answer in two sentences."},
      {"role": "user", "content": "What is a context window?"}
    ],
    "max_tokens": 200
  }'
```

*Python*

```python
import os

from openai import OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {"role": "system", "content": "Answer in two sentences."},
        {"role": "user", "content": "What is a context window?"},
    ],
    max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, "in,", resp.usage.completion_tokens, "out")
```

*Node.js*

```javascript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://llmwithcrypto.com/api/v1',
  apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});

const resp = await client.chat.completions.create({
  model: 'deepseek-v4-pro',
  messages: [
    { role: 'system', content: 'Answer in two sentences.' },
    { role: 'user', content: 'What is a context window?' },
  ],
  max_tokens: 200,
});
console.log(resp.choices[0].message.content);
console.log(resp.usage.prompt_tokens, 'in,', resp.usage.completion_tokens, 'out');
```

## Bagaimana cara menulis messages?

Kirim seluruh percakapan setiap kali, pesan terlama lebih dulu: API tidak menyimpan memori antar panggilan, dan tidak ada bagian dari prompt Anda yang disimpan. Kami tidak menyimpan prompt Anda atau jawaban model: setelah respons terkirim, teksnya hilang. Setiap panggilan meninggalkan satu baris log berisi waktu, akun, model, dan jumlah token, yang dihapus setelah 30 hari.

- **`system`**: instruksi yang membingkai setiap jawaban, seperti nada, bahasa, atau format output. Letakkan satu di paling atas.
- **`user`**: apa yang ditanyakan orang atau program Anda.
- **`assistant`**: jawaban model sebelumnya, agar model dapat melanjutkan percakapan.
- **`tool`**: hasil dari fungsi yang diminta model untuk Anda jalankan, beserta `tool_call_id` yang diberikannya kepada Anda.

Setiap pesan dihitung sebagai token input, jadi riwayat yang panjang lebih mahal di setiap giliran. Pangkas atau ringkas giliran lama saat percakapan memanjang.

## Berapa panjang maksimum sebuah permintaan?

Input dan output secara gabungan harus muat dalam context window model. Per 23 Oktober 2026, DeepSeek V4 Pro membaca hingga 1M token, gpt-oss-120b hingga 128K dan Qwen3 235B hingga 256K; [halaman models](https://llmwithcrypto.com/id/models/) mencantumkan semuanya.

Permintaan yang tidak muat akan dikembalikan sebagai `400` dengan kode `context_length_exceeded` dan tidak dikenai biaya. Atur `max_tokens` agar prompt ditambah jawaban terpanjang yang Anda terima tetap berada di dalam window.

## Apa yang diberitahukan finish_reason kepada saya?

| `finish_reason` | Arti | Yang harus dilakukan |
| --- | --- | --- |
| `stop` | Model mengakhiri jawabannya, atau menulis salah satu urutan `stop` Anda | Tidak ada: jawaban sudah lengkap |
| `length` | Jawaban mencapai `max_tokens` atau context window | Naikkan `max_tokens`, atau minta jawaban yang lebih pendek |
| `tool_calls` | Model ingin Anda menjalankan satu atau beberapa fungsi | Jalankan lalu kirim hasilnya kembali, lihat [tool calling](https://llmwithcrypto.com/id/docs/tool-calling/) |

## Parameter OpenAI mana yang tidak didukung?

Field pada tabel di atas adalah keseluruhan kontraknya. Field lain dari OpenAI API, seperti `n` (beberapa jawaban per panggilan), `logprobs`, `audio` atau input gambar, tidak didukung: kirim hanya field yang tercantum di sini. Model-model ini adalah model teks; tidak ada yang menerima gambar melalui endpoint ini.

Field `model` hanya menerima id yang ada di daftar kami. Kami tidak menjual akses ke GPT, Claude, Gemini, atau Grok: pembuatnya melarang penjualan kembali akses API tanpa persetujuan mereka, dan kami tidak memilikinya.

## Chat completions: pertanyaan umum

### Apakah ada endpoint completions lama?

Tidak. Hanya format chat yang tersedia; satu prompt adalah array `messages` dengan satu pesan `user`.

### Berapa biaya satu panggilan?

Anda membayar per token dari saldo Anda: token input dan output dihitung oleh tokenizer model itu sendiri dan ditagih sesuai harga model tersebut per 1M token. Panggilan yang berakhir dengan error tidak dikenai biaya. Harga per model ada di [halaman pricing](https://llmwithcrypto.com/id/pricing/).

### Bisakah saya melihat permintaan saya sebelumnya?

Tidak, memang begitu desainnya. Kami tidak menyimpan prompt Anda atau jawaban model: setelah respons terkirim, teksnya hilang. Setiap panggilan meninggalkan satu baris log berisi waktu, akun, model, dan jumlah token, yang dihapus setelah 30 hari.

### Mengapa jawaban saya berhenti di tengah?

`finish_reason` saat itu bernilai `length`: jawaban mencapai `max_tokens`. Naikkan nilainya, dalam batas context window model.

---

LLMwithCrypto: LLMwithCrypto adalah LLM API yang kompatibel dengan OpenAI untuk model open-weight — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — dibayar per token dari saldo kripto prabayar, 5% di bawah harga median host publik. Tanpa KYC: tanpa ID, tanpa selfie, tanpa dokumen. Prompt dan output tidak disimpan.
