文件
控制台 API

登入與工作階段

Markdown

方法、請求欄位與回應。

完整指南

本區共有 14 個方法。開啟方法即可查看存取條件、請求欄位與回應。

方法與路徑說明存取條件
POST /api/v1/auth/forgot-password請求重設密碼無須登入;其他條件請見各方法說明
POST /api/v1/auth/login使用電子郵件與密碼登入無須登入;其他條件請見各方法說明
POST /api/v1/auth/login/2fa以 TOTP 完成登入無須登入;其他條件請見各方法說明
POST /api/v1/auth/logout登出並撤銷更新 token無須登入;其他條件請見各方法說明
GET /api/v1/auth/me目前的使用者、餘額與限制控制台 token
POST /api/v1/auth/passkey/login/begin開始以通行金鑰登入無須登入;其他條件請見各方法說明
POST /api/v1/auth/passkey/login/finish完成通行金鑰登入無須登入;其他條件請見各方法說明
POST /api/v1/auth/refresh更新 token無須登入;其他條件請見各方法說明
POST /api/v1/auth/register註冊無須登入;其他條件請見各方法說明
POST /api/v1/auth/reset-password重設密碼無須登入;其他條件請見各方法說明
POST /api/v1/auth/revoke-all-sessions撤銷所有工作階段控制台 token
POST /api/v1/auth/send-verify-code傳送驗證碼無須登入;其他條件請見各方法說明
POST /api/v1/auth/validate-invitation-code驗證邀請碼無須登入;其他條件請見各方法說明
POST /api/v1/auth/validate-promo-code驗證優惠碼無須登入;其他條件請見各方法說明
POST /api/v1/auth/forgot-password —請求重設密碼

存取條件:無須登入;其他條件請見各方法說明

頻率限制:同一位址每 60 秒最多 5 次請求。

POST/api/v1/auth/forgot-password

JSON/表單欄位

欄位類型必填驗證/說明
emailstring是required,email
turnstile_tokenstring否
請求主體範本
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:ForgotPasswordRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:ForgotPasswordResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/login —使用電子郵件與密碼登入

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 20 次請求。

POST/api/v1/auth/login

JSON/表單欄位

欄位類型必填驗證/說明
emailstring是required,email
passwordstring是required
turnstile_tokenstring否
請求主體範本
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:LoginRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:TotpLoginResponse,User,AuthResponse。欄位與型別請見「資料結構描述」頁面。

若有多種可能的回應,其欄位會分別列於不同的結構描述中,不應合併成單一物件。

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/login/2fa —以 TOTP 完成登入

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 20 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
temp_tokenstring是required
totp_codestring是required,len=6
請求主體範本
{
  "temp_token": "PLACEHOLDER_TEMP_TOKEN (string)",
  "totp_code": "PLACEHOLDER_TOTP_CODE (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:Login2FARequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:User,AuthResponse。欄位與型別請見「資料結構描述」頁面。

若有多種可能的回應,其欄位會分別列於不同的結構描述中,不應合併成單一物件。

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/logout —登出並撤銷更新 token

存取條件:無須登入;其他條件請見各方法說明

POST/api/v1/auth/logout

JSON/表單欄位

欄位類型必填驗證/說明
refresh_tokenstring否; 選填:撤銷指定的更新 token
請求主體範本
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:LogoutRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:LogoutResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

GET /api/v1/auth/me —目前的使用者、餘額與限制

存取條件:控制台 token

GET/api/v1/auth/me
讀取;ID 取自您先前的回應
curl --fail-with-body "https://ailoot.ai/api/v1/auth/me" \
  -H "Authorization: Bearer $TOKEN"

不需要請求主體。請在 URL 中傳入上述參數。

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:User,UserProfileResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "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)"
  }
}

注意事項:所有個人資料與物件,皆限於 JWT 主體的範圍。

注意事項:金鑰的支出限制 (quota、quota_used) 會出現在金鑰的回應中,而非使用者資料中。frozen_balance 是已保留的金額,不能視為可用餘額。

POST /api/v1/auth/passkey/login/begin —開始以通行金鑰登入

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 20 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
turnstile_tokenstring否
請求主體範本
{
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:PasskeyBeginLoginRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:PasskeyOptionsResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
    "options": "PLACEHOLDER_OPTIONS (any)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

注意事項:credential 取自 navigator.credentials;session_token 取自 begin。Finish 的請求主體 <=65536 位元組;註冊與刪除需要密碼。

POST /api/v1/auth/passkey/login/finish —完成通行金鑰登入

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 20 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
session_tokenstring是required
namestring否
credentialobject是required
請求主體範本
{
  "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
  "name": "PLACEHOLDER_NAME (string)",
  "credential": "PLACEHOLDER_CREDENTIAL (object)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:PasskeyFinishRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:User,AuthResponse。欄位與型別請見「資料結構描述」頁面。

若有多種可能的回應,其欄位會分別列於不同的結構描述中,不應合併成單一物件。

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

注意事項:credential 取自 navigator.credentials;session_token 取自 begin。Finish 的請求主體 <=65536 位元組;註冊與刪除需要密碼。

POST /api/v1/auth/refresh —更新 token

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 30 次請求。

POST/api/v1/auth/refresh

JSON/表單欄位

欄位類型必填驗證/說明
refresh_tokenstring是required
請求主體範本
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:RefreshTokenRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:RefreshTokenResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "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)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/register —註冊

存取條件:無須登入;其他條件請見各方法說明

頻率限制:同一位址每 60 秒最多 5 次請求。

POST/api/v1/auth/register

JSON/表單欄位

欄位類型必填驗證/說明
emailstring是required,email
passwordstring是required,min=6
verify_codestring否
turnstile_tokenstring否
promo_codestring否; 註冊優惠碼
invitation_codestring否; 邀請碼
請求主體範本
{
  "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 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:RegisterRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:User,AuthResponse。欄位與型別請見「資料結構描述」頁面。

若有多種可能的回應,其欄位會分別列於不同的結構描述中,不應合併成單一物件。

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/reset-password —重設密碼

存取條件:無須登入;其他條件請見各方法說明

頻率限制:同一位址每 60 秒最多 10 次請求。

POST/api/v1/auth/reset-password

JSON/表單欄位

欄位類型必填驗證/說明
emailstring是required,email
tokenstring是required
new_passwordstring是required,min=6
請求主體範本
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "token": "PLACEHOLDER_TOKEN (string)",
  "new_password": "PLACEHOLDER_NEW_PASSWORD (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:ResetPasswordRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:ResetPasswordResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/revoke-all-sessions —撤銷所有工作階段

存取條件:控制台 token

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

不需要請求主體。

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:RevokeAllSessionsResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}

注意事項:所有個人資料與物件,皆限於 JWT 主體的範圍。

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/send-verify-code —傳送驗證碼

存取條件:無須登入;其他條件請見各方法說明

頻率限制:同一位址每 60 秒最多 5 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
emailstring是required,email
turnstile_tokenstring否
請求主體範本
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:SendVerifyCodeRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:SendVerifyCodeResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)",
    "countdown": "PLACEHOLDER_COUNTDOWN (integer)"
  }
}

注意事項:此操作會變更狀態,或繼續一次性授權流程;範例僅說明介面契約,不會執行。

POST /api/v1/auth/validate-invitation-code —驗證邀請碼

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 10 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
codestring是required
請求主體範本
{
  "code": "PLACEHOLDER_CODE (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:ValidateInvitationCodeRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:ValidateInvitationCodeResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)"
  }
}

特性:此方法會檢查邀請,但不會耗用代碼;範例僅描述 API 契約,不會執行。

POST /api/v1/auth/validate-promo-code —驗證優惠碼

存取條件:無須登入;其他條件請見各方法說明

執行請求時,會檢查功能是否可用,以及其他存取條件。

頻率限制:同一位址每 60 秒最多 10 次請求。

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

JSON/表單欄位

欄位類型必填驗證/說明
codestring是required
請求主體範本
{
  "code": "PLACEHOLDER_CODE (string)"
}

PLACEHOLDER 表示您的輸入及其型別。請替換值,並只保留需要的選填欄位;不要將字串標記當成數字、boolean、物件或陣列傳送。

請求結構描述:ValidatePromoCodeRequest

回應

JSON 回應包含 code、message與data。data 的內容請見下方結構描述。

回應資料的結構描述:ValidatePromoCodeResponse。欄位與型別請見「資料結構描述」頁面。

回應結構描述,欄位值僅為示例
{
  "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)"
  }
}

特性:此方法會檢查優惠碼,但不會發放獎勵;範例僅描述 API 契約,不會執行。

登入與工作階段 · 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

還有疑問嗎?請提供 Request ID與問題描述,我們會協助釐清。聯絡支援