Source: https://ailoot.ai/docs/id/cabinet/keys/
Canonical: https://ailoot.ai/docs/id/cabinet/keys/
Language: id

[API dasbor](https://ailoot.ai/docs/id/) 

# Kunci API

[Markdown](https://ailoot.ai/docs/id/cabinet/keys/index.md)

Metode, kolom permintaan, dan respons.

Bagian ini berisi 5 metode. Buka metode untuk melihat ketentuan akses, kolom permintaan, dan respons.

| Metode dan jalur | Deskripsi | Akses |
| --- | --- | --- |
| `GET /api/v1/keys` | Daftar — kunci API | Token dasbor |
| `POST /api/v1/keys` | Pembuatan kunci API | Token dasbor |
| `DELETE /api/v1/keys/:id` | Penghapusan — kunci API | Token dasbor |
| `GET /api/v1/keys/:id` | Pengambilan berdasarkan ID — kunci API | Token dasbor |
| `PUT /api/v1/keys/:id` | Perubahan kunci API | Token dasbor |

**GET /api/v1/keys** — Daftar — kunci API

Akses: Token dasbor

GET`/api/v1/keys`

Pembacaan; ID diambil dari respons Anda sebelumnya

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys" \
  -H "Authorization: Bearer $TOKEN"
```

## Parameter query

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `sort_by` | `string` | tidak | ; default: created\_at |
| `sort_order` | `string` | tidak | ; default: desc |
| `search` | `string` | tidak |  |
| `status` | `string` | tidak |  |
| `page` | `integer` | tidak | ; default: 1; positive; page\_size/limit \<=1000 |
| `page_size` | `integer` | tidak | ; default: 20; positive; page\_size/limit \<=1000 |
| `limit` | `integer` | tidak | ; default: 20; positive; page\_size/limit \<=1000 |

Isi permintaan tidak diperlukan. Kirim parameter di atas dalam URL.

## Respons

Respons JSON berisi code, message, dan data. Isi data dijelaskan dalam skema di bawah.

Skema data respons: `APIKey`. Kolom dan tipe dijelaskan di halaman “Skema data”.

Skema respons, nilai hanya contoh

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "items": [
      {
        "id": "PLACEHOLDER_ID (integer)",
        "user_id": "PLACEHOLDER_USER_ID (integer)",
        "key": "PLACEHOLDER_KEY (string)",
        "name": "PLACEHOLDER_NAME (string)",
        "status": "PLACEHOLDER_STATUS (string)",
        "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
        "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
        "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
        "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
        "quota": "PLACEHOLDER_QUOTA (number)",
        "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
        "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
        "created_at": "PLACEHOLDER_CREATED_AT (string)",
        "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
        "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
        "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
        "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
        "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
        "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
        "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
        "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
        "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
        "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
        "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
        "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
        "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
        "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
        "user": "PLACEHOLDER_USER (object)"
      }
    ],
    "total": "PLACEHOLDER_TOTAL (integer)",
    "page": "PLACEHOLDER_PAGE (integer)",
    "page_size": "PLACEHOLDER_PAGE_SIZE (integer)",
    "pages": "PLACEHOLDER_PAGES (integer)"
  }
}
```

Catatan khusus: Semua data pribadi dan objek dibatasi pada subjek JWT.

Catatan khusus: Respons berisi key yang rahasia; jangan publikasikan nilai nyata.

**POST /api/v1/keys** — Pembuatan kunci API

Akses: Token dasbor

POST`/api/v1/keys`

## Kolom JSON / formulir

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `name` | `string` | ya | required |
| `custom_key` | `string` | tidak | ; Nilai kunci buatan sendiri, opsional; dapat berupa null |
| `ip_whitelist` | `array` | tidak | ; Daftar IP yang diizinkan |
| `ip_blacklist` | `array` | tidak | ; Daftar IP yang diblokir |
| `quota` | `number` | tidak | ; Batas pengeluaran kunci dalam USD; dapat berupa null |
| `expires_in_days` | `integer` | tidak | ; Masa berlaku dalam hari; dapat berupa null |
| `rate_limit_5h` | `number` | tidak | ; dapat berupa null |
| `rate_limit_1d` | `number` | tidak | ; dapat berupa null |
| `rate_limit_7d` | `number` | tidak | ; dapat berupa null |

Templat isi permintaan

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "custom_key": "PLACEHOLDER_CUSTOM_KEY (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_in_days": "PLACEHOLDER_EXPIRES_IN_DAYS (integer)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)"
}
```

PLACEHOLDER mewakili input Anda dan tipenya. Ganti nilai-nilainya dan sisakan hanya kolom opsional yang diperlukan; jangan kirim penanda string sebagai pengganti angka, boolean, objek, atau array.

Skema permintaan: `CreateAPIKeyRequest`

## Respons

Respons JSON berisi code, message, dan data. Isi data dijelaskan dalam skema di bawah.

Skema data respons: `APIKey`. Kolom dan tipe dijelaskan di halaman “Skema data”.

Skema respons, nilai hanya contoh

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Catatan khusus: Semua data pribadi dan objek dibatasi pada subjek JWT.

Catatan khusus: Operasi mengubah keadaan atau melanjutkan autentikasi sekali pakai; contoh menjelaskan kontrak dan tidak dijalankan.

Catatan khusus: Idempotency-Key didukung; pengiriman ulang mengembalikan respons tersimpan dengan X-Idempotency-Replayed.

Catatan khusus: Respons berisi key yang rahasia; jangan publikasikan nilai nyata.

Metode ini mengubah data. Pengiriman ulang hanya aman jika metode menyatakan dukungan Idempotency-Key. Jika respons hilang, periksa dahulu hasilnya (misalnya daftar kunci), lalu putuskan apakah perlu mengirim ulang permintaan.

**DELETE /api/v1/keys/:id** — Penghapusan — kunci API

Akses: Token dasbor

DELETE`/api/v1/keys/:id`

## Parameter jalur

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `id` | `integer` | ya |  |

Isi permintaan tidak diperlukan.

## Respons

Respons JSON berisi code, message, dan data. Isi data dijelaskan dalam skema di bawah.

Skema respons, nilai hanya contoh

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "VALUE_FROM_RESPONSE"
  }
}
```

Catatan khusus: Semua data pribadi dan objek dibatasi pada subjek JWT.

Catatan khusus: Operasi mengubah keadaan atau melanjutkan autentikasi sekali pakai; contoh menjelaskan kontrak dan tidak dijalankan.

Catatan khusus: Respons berisi key yang rahasia; jangan publikasikan nilai nyata.

Metode ini mengubah data. Pengiriman ulang hanya aman jika metode menyatakan dukungan Idempotency-Key. Jika respons hilang, periksa dahulu hasilnya (misalnya daftar kunci), lalu putuskan apakah perlu mengirim ulang permintaan.

**GET /api/v1/keys/:id** — Pengambilan berdasarkan ID — kunci API

Akses: Token dasbor

GET`/api/v1/keys/:id`

Pembacaan; ID diambil dari respons Anda sebelumnya

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/keys/$ID" \
  -H "Authorization: Bearer $TOKEN"
```

## Parameter jalur

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `id` | `integer` | ya |  |

Isi permintaan tidak diperlukan. Kirim parameter di atas dalam URL.

## Respons

Respons JSON berisi code, message, dan data. Isi data dijelaskan dalam skema di bawah.

Skema data respons: `APIKey`. Kolom dan tipe dijelaskan di halaman “Skema data”.

Skema respons, nilai hanya contoh

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Catatan khusus: Semua data pribadi dan objek dibatasi pada subjek JWT.

Catatan khusus: Respons berisi key yang rahasia; jangan publikasikan nilai nyata.

**PUT /api/v1/keys/:id** — Perubahan kunci API

Akses: Token dasbor

PUT`/api/v1/keys/:id`

## Parameter jalur

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `id` | `integer` | ya |  |

## Kolom JSON / formulir

| Kolom | Jenis | Wajib | Validasi / deskripsi |
| --- | --- | --- | --- |
| `name` | `string` | tidak |  |
| `status` | `string` | tidak | omitempty,oneof=active inactive |
| `ip_whitelist` | `array` | tidak | ; IP yang diizinkan: null tidak mengubah daftar, array kosong menghapus isinya; dapat berupa null |
| `ip_blacklist` | `array` | tidak | ; IP yang diblokir: null tidak mengubah daftar, array kosong menghapus isinya; dapat berupa null |
| `quota` | `number` | tidak | ; Batas pengeluaran kunci dalam USD; 0 — tanpa batas; dapat berupa null |
| `expires_at` | `string` | tidak | ; Waktu kedaluwarsa dalam format ISO 8601; dapat berupa null |
| `reset_quota` | `boolean` | tidak | ; Reset jumlah batas pengeluaran yang sudah digunakan; dapat berupa null |
| `rate_limit_5h` | `number` | tidak | ; dapat berupa null |
| `rate_limit_1d` | `number` | tidak | ; dapat berupa null |
| `rate_limit_7d` | `number` | tidak | ; dapat berupa null |
| `reset_rate_limit_usage` | `boolean` | tidak | ; Reset penggunaan batas per jendela waktu; dapat berupa null |

Templat isi permintaan

```json
{
  "name": "PLACEHOLDER_NAME (string)",
  "status": "PLACEHOLDER_STATUS (string)",
  "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
  "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
  "quota": "PLACEHOLDER_QUOTA (number)",
  "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
  "reset_quota": "PLACEHOLDER_RESET_QUOTA (boolean)",
  "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
  "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
  "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
  "reset_rate_limit_usage": "PLACEHOLDER_RESET_RATE_LIMIT_USAGE (boolean)"
}
```

PLACEHOLDER mewakili input Anda dan tipenya. Ganti nilai-nilainya dan sisakan hanya kolom opsional yang diperlukan; jangan kirim penanda string sebagai pengganti angka, boolean, objek, atau array.

Skema permintaan: `UpdateAPIKeyRequest`

## Respons

Respons JSON berisi code, message, dan data. Isi data dijelaskan dalam skema di bawah.

Skema data respons: `APIKey`. Kolom dan tipe dijelaskan di halaman “Skema data”.

Skema respons, nilai hanya contoh

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "user_id": "PLACEHOLDER_USER_ID (integer)",
    "key": "PLACEHOLDER_KEY (string)",
    "name": "PLACEHOLDER_NAME (string)",
    "status": "PLACEHOLDER_STATUS (string)",
    "ip_whitelist": "PLACEHOLDER_IP_WHITELIST (array)",
    "ip_blacklist": "PLACEHOLDER_IP_BLACKLIST (array)",
    "last_used_at": "PLACEHOLDER_LAST_USED_AT (string)",
    "last_used_ip": "PLACEHOLDER_LAST_USED_IP (string)",
    "quota": "PLACEHOLDER_QUOTA (number)",
    "quota_used": "PLACEHOLDER_QUOTA_USED (number)",
    "expires_at": "PLACEHOLDER_EXPIRES_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "current_concurrency": "PLACEHOLDER_CURRENT_CONCURRENCY (integer)",
    "rate_limit_5h": "PLACEHOLDER_RATE_LIMIT_5H (number)",
    "rate_limit_1d": "PLACEHOLDER_RATE_LIMIT_1D (number)",
    "rate_limit_7d": "PLACEHOLDER_RATE_LIMIT_7D (number)",
    "usage_5h": "PLACEHOLDER_USAGE_5H (number)",
    "usage_1d": "PLACEHOLDER_USAGE_1D (number)",
    "usage_7d": "PLACEHOLDER_USAGE_7D (number)",
    "window_5h_start": "PLACEHOLDER_WINDOW_5H_START (string)",
    "window_1d_start": "PLACEHOLDER_WINDOW_1D_START (string)",
    "window_7d_start": "PLACEHOLDER_WINDOW_7D_START (string)",
    "reset_5h_at": "PLACEHOLDER_RESET_5H_AT (string)",
    "reset_1d_at": "PLACEHOLDER_RESET_1D_AT (string)",
    "reset_7d_at": "PLACEHOLDER_RESET_7D_AT (string)",
    "user": "PLACEHOLDER_USER (object)"
  }
}
```

Catatan khusus: Semua data pribadi dan objek dibatasi pada subjek JWT.

Catatan khusus: Operasi mengubah keadaan atau melanjutkan autentikasi sekali pakai; contoh menjelaskan kontrak dan tidak dijalankan.

Catatan khusus: Respons berisi key yang rahasia; jangan publikasikan nilai nyata.

Catatan khusus: Selama kunci masih memiliki permintaan yang belum selesai dengan saldo ditahan, batas pengeluarannya tidak boleh diturunkan atau direset. Kirim hanya kolom yang Anda ubah.

Metode ini mengubah data. Pengiriman ulang hanya aman jika metode menyatakan dukungan Idempotency-Key. Jika respons hilang, periksa dahulu hasilnya (misalnya daftar kunci), lalu putuskan apakah perlu mengirim ulang permintaan.

Masih ada pertanyaan? Kirim Request ID dan penjelasannya — kami akan membantu.[Hubungi dukungan](mailto:support@ailoot.ai)

## Ailoot · Perusahaan dan portofolio proyeknya





Ailoot bertumpu pada pengalaman operasional yang teruji, basis pelanggan yang besar, layanan yang stabil, dan pemantauan KPI berkelanjutan.





Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.





Ailoot memanfaatkan pengalaman operasional ini untuk akses API ke fitur AI dalam produk pelanggan, agen, aplikasi, dan otomatisasi.
