# Model & Harga

## Daftar model

```bash
curl https://ai.brandkamu.id/v1/models -H "Authorization: Bearer sk-..."
```

Respons mengikuti format OpenAI (`{"object": "list", "data": [...]}`) ditambah info tambahan per
model seperti `mode` (`chat`, `embedding`, `decision`), `supports_vision`, `supports_reasoning`, dan
harga. Jika request membawa header `anthropic-version`, daftar dikembalikan dalam format Anthropic.

Halaman **Models** di dashboard menampilkan hal yang sama, plus contoh kode per model.

## Cara biaya dihitung

Setiap model punya harga per **1 juta token** untuk:

| Komponen | Keterangan |
|---|---|
| Input | Token prompt yang tidak kena cache |
| Output | Token yang dihasilkan model (termasuk reasoning) |
| Cache read | Token prompt yang diambil dari prompt cache, biasanya jauh lebih murah |
| Cache write | Untuk model yang menagih penulisan cache (mis. Claude) |

```text
biaya = input × harga_input + output × harga_output + cache_read × harga_cache_read + cache_write × harga_cache_write
```

Biaya persis setiap request terlihat di **Usage** (dan di `GET /api/usage/logs`).

### Satuan uang di API

Di API, semua nilai uang adalah integer **nano-USD**: `1 USD = 1.000.000.000`. Contoh:
`balance_nano: 2500000000` berarti $2,50. Ini menghindari error pembulatan float.

## Prompt caching

Provider seperti OpenAI, Anthropic, Gemini, dan DeepSeek otomatis meng-cache awalan prompt yang
sama. Supaya hemat:

- Taruh bagian yang tidak berubah (system prompt, dokumen, definisi tool) di **awal**.
- Taruh bagian yang berubah (pertanyaan user) di **akhir**.

Cache dipisah per akun, jadi prompt kamu tidak pernah "bocor" lewat cache ke pengguna lain.

## Reasoning / thinking

Model yang mendukung reasoning menerima `reasoning_effort` (`low`, `medium`, `high`) di Chat
Completions, `reasoning` di Responses, atau `thinking` di Anthropic Messages. Token reasoning
ditagih sebagai output.
