Kunci API
MarkdownMetode, kolom permintaan, dan respons.
Panduan lengkap
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
/api/v1/keyscurl --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”.
{
"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
/api/v1/keysKolom 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 |
{
"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”.
{
"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.
DELETE /api/v1/keys/:id — Penghapusan — kunci API
Akses: Token dasbor
/api/v1/keys/:idParameter 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.
{
"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.
GET /api/v1/keys/:id — Pengambilan berdasarkan ID — kunci API
Akses: Token dasbor
/api/v1/keys/:idcurl --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”.
{
"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
/api/v1/keys/:idParameter 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 |
{
"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”.
{
"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.