# API Keys

Buat key di menu **API Keys** (atau lewat `POST /api/keys`, lihat [Customer API](/api/customer)).
Setiap key bisa diberi aturan sendiri:

| Pengaturan | Fungsi |
|---|---|
| **Batas kredit** | Maksimum pengeluaran key ini (USD). Request ditolak `402` jika terlewati. |
| **Periode reset** | `daily`, `weekly`, atau `monthly`: batas kredit di-reset tiap periode. Kosong = batas seumur key. |
| **Model yang diizinkan** | Key hanya bisa memakai model di daftar ini. Kosong = semua model. |
| **Kedaluwarsa** | Key otomatis mati setelah tanggal tertentu. |
| **Allow-list IP** | Hanya IP/CIDR tertentu (mis. `203.0.113.10`, `10.0.0.0/8`). |
| **Request per menit** | Rate limit khusus key ini. |
| **Request paralel** | Jumlah request yang boleh berjalan bersamaan. |
| **Sensor secret** | Menyamarkan secret (API key, token, password) yang tidak sengaja ada di prompt sebelum dikirim ke model. |

## Regenerate & revoke

- **Regenerate**: membuat secret baru untuk key yang sama (aturan dan riwayat tetap). Secret lama langsung tidak berlaku.
- **Revoke**: mematikan key permanen.

## Contoh: key untuk satu aplikasi dengan budget harian $5

```bash
curl -X POST https://ai.brandkamu.id/api/keys \
  -H "Authorization: Bearer <session-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "chatbot-production",
    "credit_limit_nano": 5000000000,
    "budget_period": "daily",
    "allowed_models": ["gpt-5-mini", "claude-haiku-4-5"],
    "rpm_limit": 60
  }'
```

Respons berisi `key` lengkap, sekali saja.
