dokumentasi
API dasbor

Login dan sesi

Markdown

Metode, kolom permintaan, dan respons.

Panduan lengkap

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

Metode dan jalurDeskripsiAkses
POST /api/v1/auth/forgot-passwordPermintaan reset kata sandiTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/loginLogin dengan email dan kata sandiTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/login/2faMenyelesaikan login dengan TOTPTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/logoutLogout dan pencabutan refresh tokenTanpa login; ketentuan tambahan dijelaskan pada metode
GET /api/v1/auth/mePengguna saat ini, saldo, dan batasToken dasbor
POST /api/v1/auth/passkey/login/beginMemulai login dengan passkeyTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/passkey/login/finishMenyelesaikan login dengan passkeyTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/refreshPembaruan tokenTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/registerDaftarTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/reset-passwordReset kata sandiTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/revoke-all-sessionsPencabutan semua sesiToken dasbor
POST /api/v1/auth/send-verify-codePengiriman kode verifikasiTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/validate-invitation-codeValidasi undanganTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/validate-promo-codeValidasi kode promoTanpa login; ketentuan tambahan dijelaskan pada metode
POST /api/v1/auth/forgot-password — Permintaan reset kata sandi

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Batas frekuensi: 5 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/forgot-password

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
emailstringyarequired,email
turnstile_tokenstringtidak
Templat isi permintaan
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

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: ForgotPasswordRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

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

POST /api/v1/auth/login — Login dengan email dan kata sandi

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 20 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/login

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
emailstringyarequired,email
passwordstringyarequired
turnstile_tokenstringtidak
Templat isi permintaan
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

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: LoginRequest

Respons

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

Skema data respons: TotpLoginResponse, User, AuthResponse. Kolom dan tipe dijelaskan di halaman “Skema data”.

Jika ada beberapa varian respons, kolomnya dijelaskan dalam skema terpisah; jangan gabungkan menjadi satu objek.

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

POST /api/v1/auth/login/2fa — Menyelesaikan login dengan TOTP

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 20 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/login/2fa

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
temp_tokenstringyarequired
totp_codestringyarequired,len=6
Templat isi permintaan
{
  "temp_token": "PLACEHOLDER_TEMP_TOKEN (string)",
  "totp_code": "PLACEHOLDER_TOTP_CODE (string)"
}

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: Login2FARequest

Respons

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

Skema data respons: User, AuthResponse. Kolom dan tipe dijelaskan di halaman “Skema data”.

Jika ada beberapa varian respons, kolomnya dijelaskan dalam skema terpisah; jangan gabungkan menjadi satu objek.

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

POST /api/v1/auth/logout — Logout dan pencabutan refresh token

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

POST/api/v1/auth/logout

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
refresh_tokenstringtidak; Opsional: cabut token pembaruan yang ditentukan
Templat isi permintaan
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}

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: LogoutRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

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

GET /api/v1/auth/me — Pengguna saat ini, saldo, dan batas

Akses: Token dasbor

GET/api/v1/auth/me
Pembacaan; ID diambil dari respons Anda sebelumnya
curl --fail-with-body "https://ailoot.ai/api/v1/auth/me" \
  -H "Authorization: Bearer $TOKEN"

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: User, UserProfileResponse. Kolom dan tipe dijelaskan di halaman “Skema data”.

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "email": "PLACEHOLDER_EMAIL (string)",
    "username": "PLACEHOLDER_USERNAME (string)",
    "role": "PLACEHOLDER_ROLE (string)",
    "balance": "PLACEHOLDER_BALANCE (number)",
    "frozen_balance": "PLACEHOLDER_FROZEN_BALANCE (number)",
    "concurrency": "PLACEHOLDER_CONCURRENCY (integer)",
    "status": "PLACEHOLDER_STATUS (string)",
    "last_active_at": "PLACEHOLDER_LAST_ACTIVE_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "deleted_at": "PLACEHOLDER_DELETED_AT (string)",
    "balance_notify_enabled": "PLACEHOLDER_BALANCE_NOTIFY_ENABLED (boolean)",
    "balance_notify_threshold_type": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD_TYPE (string)",
    "balance_notify_threshold": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD (number)",
    "balance_notify_extra_emails": "PLACEHOLDER_BALANCE_NOTIFY_EXTRA_EMAILS (array)",
    "total_recharged": "PLACEHOLDER_TOTAL_RECHARGED (number)",
    "rpm_limit": "PLACEHOLDER_RPM_LIMIT (integer)",
    "api_keys": "PLACEHOLDER_API_KEYS (array)",
    "avatar_url": "PLACEHOLDER_AVATAR_URL (string)",
    "email_bound": "PLACEHOLDER_EMAIL_BOUND (boolean)"
  }
}

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

Catatan khusus: Batas pengeluaran kunci (quota, quota_used) terdapat dalam respons kunci, bukan profil. frozen_balance adalah jumlah yang ditahan dan tidak boleh dianggap sebagai saldo bebas.

POST /api/v1/auth/passkey/login/begin — Memulai login dengan passkey

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 20 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/passkey/login/begin

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
turnstile_tokenstringtidak
Templat isi permintaan
{
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

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: PasskeyBeginLoginRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
    "options": "PLACEHOLDER_OPTIONS (any)"
  }
}

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

Catatan khusus: credential diperoleh dari navigator.credentials; session_token dari begin. Isi finish <=65536 byte; pendaftaran dan penghapusan memerlukan kata sandi.

POST /api/v1/auth/passkey/login/finish — Menyelesaikan login dengan passkey

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 20 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/passkey/login/finish

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
session_tokenstringyarequired
namestringtidak
credentialobjectyarequired
Templat isi permintaan
{
  "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
  "name": "PLACEHOLDER_NAME (string)",
  "credential": "PLACEHOLDER_CREDENTIAL (object)"
}

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: PasskeyFinishRequest

Respons

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

Skema data respons: User, AuthResponse. Kolom dan tipe dijelaskan di halaman “Skema data”.

Jika ada beberapa varian respons, kolomnya dijelaskan dalam skema terpisah; jangan gabungkan menjadi satu objek.

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

Catatan khusus: credential diperoleh dari navigator.credentials; session_token dari begin. Isi finish <=65536 byte; pendaftaran dan penghapusan memerlukan kata sandi.

POST /api/v1/auth/refresh — Pembaruan token

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 30 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/refresh

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
refresh_tokenstringyarequired
Templat isi permintaan
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}

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: RefreshTokenRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "access_token": "PLACEHOLDER_ACCESS_TOKEN (string)",
    "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)",
    "expires_in": "PLACEHOLDER_EXPIRES_IN (integer)",
    "token_type": "PLACEHOLDER_TOKEN_TYPE (string)"
  }
}

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

POST /api/v1/auth/register — Pendaftaran

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Batas frekuensi: 5 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/register

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
emailstringyarequired,email
passwordstringyarequired,min=6
verify_codestringtidak
turnstile_tokenstringtidak
promo_codestringtidak; Kode promo pendaftaran
invitation_codestringtidak; Kode undangan
Templat isi permintaan
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "verify_code": "PLACEHOLDER_VERIFY_CODE (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)",
  "promo_code": "PLACEHOLDER_PROMO_CODE (string)",
  "invitation_code": "PLACEHOLDER_INVITATION_CODE (string)"
}

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: RegisterRequest

Respons

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

Skema data respons: User, AuthResponse. Kolom dan tipe dijelaskan di halaman “Skema data”.

Jika ada beberapa varian respons, kolomnya dijelaskan dalam skema terpisah; jangan gabungkan menjadi satu objek.

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

POST /api/v1/auth/reset-password — Reset kata sandi

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Batas frekuensi: 10 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/reset-password

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
emailstringyarequired,email
tokenstringyarequired
new_passwordstringyarequired,min=6
Templat isi permintaan
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "token": "PLACEHOLDER_TOKEN (string)",
  "new_password": "PLACEHOLDER_NEW_PASSWORD (string)"
}

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: ResetPasswordRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

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

POST /api/v1/auth/revoke-all-sessions — Pencabutan semua sesi

Akses: Token dasbor

POST/api/v1/auth/revoke-all-sessions

Isi permintaan tidak diperlukan.

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

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.

POST /api/v1/auth/send-verify-code — Pengiriman kode verifikasi

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Batas frekuensi: 5 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/send-verify-code

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
emailstringyarequired,email
turnstile_tokenstringtidak
Templat isi permintaan
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

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: SendVerifyCodeRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)",
    "countdown": "PLACEHOLDER_COUNTDOWN (integer)"
  }
}

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

POST /api/v1/auth/validate-invitation-code — Validasi undangan

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 10 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/validate-invitation-code

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
codestringyarequired
Templat isi permintaan
{
  "code": "PLACEHOLDER_CODE (string)"
}

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: ValidateInvitationCodeRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)"
  }
}

Catatan khusus: Metode ini memeriksa undangan tanpa menandai kode sebagai telah digunakan; contoh menjelaskan kontrak dan tidak dijalankan.

POST /api/v1/auth/validate-promo-code — Validasi kode promo

Akses: Tanpa login; ketentuan tambahan dijelaskan pada metode

Ketersediaan fitur dan ketentuan akses tambahan diperiksa saat permintaan dijalankan.

Batas frekuensi: 10 permintaan per 60 detik dari satu alamat.

POST/api/v1/auth/validate-promo-code

Kolom JSON / formulir

KolomJenisWajibValidasi / deskripsi
codestringyarequired
Templat isi permintaan
{
  "code": "PLACEHOLDER_CODE (string)"
}

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: ValidatePromoCodeRequest

Respons

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

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

Skema respons, nilai hanya contoh
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "bonus_amount": "PLACEHOLDER_BONUS_AMOUNT (number)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)",
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

Catatan khusus: Metode ini memeriksa kode promo tanpa memberikan bonus; contoh menjelaskan kontrak dan tidak dijalankan.

Login dan sesi · 2FA

POST /api/v1/auth/login → data

  • data.requires_2fa === true → TotpLoginResponse → data.temp_token → POST /api/v1/auth/login/2fa · {"temp_token": "…", "totp_code": "…"} → data.access_token
  • data.access_token → AuthResponse → Authorization: Bearer $TOKEN

totp_code: string, len = 6. temp_token ≠ access_token. User

Masih ada pertanyaan? Kirim Request ID dan penjelasannya — kami akan membantu.Hubungi dukungan