# Chat completions

POST /v1/chat/completions: format OpenAI untuk SDK dan sebagian besar alat coding.

`POST https://ai.sivcloud.com/v1/chat/completions` memakai format OpenAI Chat Completions. SDK OpenAI bekerja tanpa perubahan selain base URL dan API key.

```bash
curl https://ai.sivcloud.com/v1/chat/completions \
  -H "Authorization: Bearer $SIVCLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [
      {"role": "system", "content": "Jawab singkat."},
      {"role": "user", "content": "Halo"}
    ],
    "max_tokens": 256
  }'
```

## Jawaban

```json
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "deepseek-v4.1-flash",
  "choices": [
    {"index": 0, "message": {"role": "assistant", "content": "Halo!"}, "finish_reason": "stop"}
  ],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 3,
    "total_tokens": 23,
    "prompt_tokens_details": {"cached_tokens": 0}
  }
}
```

`usage` adalah dasar tagihan. `prompt_tokens_details.cached_tokens` memuat token input yang terbaca dari cache. Lihat [Cache](https://sivcloud.com/docs/cache/).

## Yang perlu diketahui

- `model` wajib berisi id model dari halaman Model atau `GET /v1/models`.
- Atur `max_tokens`. Sebelum request diteruskan, sivcloud mencadangkan perkiraan biayanya dari prompt dan `max_tokens`. Saldo yang kurang untuk cadangan itu ditolak dengan `insufficient_balance`. Cadangan yang tidak terpakai dikembalikan setelah request selesai.
- Untuk jawaban bertahap, kirim `"stream": true`. Lihat [Streaming](https://sivcloud.com/docs/streaming/).
- Parameter lain mengikuti model dan penyedianya. Parameter yang tidak didukung model bisa diabaikan atau ditolak oleh penyedia.
