# Admin API

Semua yang bisa dilakukan admin di dashboard bisa dilakukan lewat REST (`/api/admin/*`).
Referensi lengkap: **[Admin API reference](/api/admin)**.

## Admin API key

Buat di **Admin → Admin API** (butuh sesi dashboard dengan 2FA). Setiap key:

- berbentuk `sk-admin-…`, ditampilkan sekali;
- **full access** atau **read-only** (hanya GET);
- bisa **kedaluwarsa** dan dibatasi **IP/CIDR**;
- dibatasi 120 request per menit;
- tercatat di audit log untuk setiap perubahan yang dilakukannya.

Admin key tidak bisa dipakai di `/v1/*`, dan API key user tidak bisa dipakai di admin API. Admin key
juga tidak bisa membuat atau mengubah admin key lain.

```bash
curl "https://ai.brandkamu.id/api/admin/users?q=budi" \
  -H "Authorization: Bearer sk-admin-..."
```

## Yang bisa dilakukan

| Area | Contoh |
|---|---|
| Users | Cari, buat, edit, suspend, tambah/kurangi kredit, reset 2FA, lihat top-up/key/request/aktivitas |
| Virtual keys | Semua API key user beserta status dan pembatasannya |
| Request logs | Log request semua user dengan filter model, provider, status, error |
| Models | Sync dari Sumopod, harga jual, markup massal, aktif/nonaktif, probe |
| Keuangan | Laporan saldo & top-up, daftar pembayaran, analytics revenue/cost/margin |
| Kupon & afiliasi | Buat kupon, lihat redemption, atur program afiliasi |
| Settings | AI, payment, auth, limits, branding, email, retensi log |
| Audit | Audit log semua aksi |

Semua nilai uang dalam **nano-USD** (`1 USD = 1_000_000_000`). Secret di settings dikembalikan
dalam bentuk tersamar; kosongkan field secret saat `PUT` untuk mempertahankan nilai lama.

Aturan keamanan berlaku apa pun jalurnya: admin tidak bisa men-suspend dirinya sendiri atau
mencabut role admin-nya sendiri, dan selalu tersisa minimal satu admin aktif.
