Source: https://ailoot.ai/docs/vi/cabinet/auth/
Canonical: https://ailoot.ai/docs/vi/cabinet/auth/
Language: vi

[API bảng điều khiển](https://ailoot.ai/docs/vi/) 

# Đăng nhập và phiên

[Markdown](https://ailoot.ai/docs/vi/cabinet/auth/index.md)

Phương thức, trường yêu cầu và phản hồi.

Phần này có 14 phương thức. Mở phương thức để xem điều kiện truy cập, trường yêu cầu và phản hồi.

| Phương thức và đường dẫn | Mô tả | Quyền truy cập |
| --- | --- | --- |
| `POST /api/v1/auth/forgot-password` | Yêu cầu đặt lại mật khẩu | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/login` | Đăng nhập bằng email và mật khẩu | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/login/2fa` | Hoàn tất đăng nhập bằng TOTP | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/logout` | Đăng xuất và thu hồi refresh token | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `GET /api/v1/auth/me` | Người dùng hiện tại, số dư và giới hạn | Token trang quản lý tài khoản |
| `POST /api/v1/auth/passkey/login/begin` | Bắt đầu đăng nhập bằng passkey | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/passkey/login/finish` | Hoàn tất đăng nhập bằng passkey | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/refresh` | Làm mới token | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/register` | Đăng ký | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/reset-password` | Đặt lại mật khẩu | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/revoke-all-sessions` | Thu hồi tất cả phiên | Token trang quản lý tài khoản |
| `POST /api/v1/auth/send-verify-code` | Gửi mã xác nhận | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/validate-invitation-code` | Kiểm tra lời mời | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |
| `POST /api/v1/auth/validate-promo-code` | Kiểm tra mã khuyến mại | Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức |

**POST /api/v1/auth/forgot-password** — Yêu cầu đặt lại mật khẩu

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Giới hạn tần suất: 5 yêu cầu trong 60 giây từ một địa chỉ.

POST`/api/v1/auth/forgot-password`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `email` | `string` | có | required,email |
| `turnstile_token` | `string` | không |  |

Mẫu nội dung yêu cầu

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `ForgotPasswordRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `ForgotPasswordResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/login** — Đăng nhập bằng email và mật khẩu

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 20 yêu cầu trong 60 giây từ một địa chỉ.

POST`/api/v1/auth/login`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `email` | `string` | có | required,email |
| `password` | `string` | có | required |
| `turnstile_token` | `string` | không |  |

Mẫu nội dung yêu cầu

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `LoginRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `TotpLoginResponse`, `User`, `AuthResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Nếu có nhiều biến thể phản hồi, các trường của chúng được liệt kê trong các lược đồ riêng; không nên gộp chúng thành một đối tượng.

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/login/2fa** — Hoàn tất đăng nhập bằng TOTP

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 20 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `temp_token` | `string` | có | required |
| `totp_code` | `string` | có | required,len=6 |

Mẫu nội dung yêu cầu

```json
{
  "temp_token": "PLACEHOLDER_TEMP_TOKEN (string)",
  "totp_code": "PLACEHOLDER_TOTP_CODE (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `Login2FARequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `User`, `AuthResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Nếu có nhiều biến thể phản hồi, các trường của chúng được liệt kê trong các lược đồ riêng; không nên gộp chúng thành một đối tượng.

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/logout** — Đăng xuất và thu hồi refresh token

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

POST`/api/v1/auth/logout`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `refresh_token` | `string` | không | ; Tùy chọn: thu hồi token làm mới được chỉ định |

Mẫu nội dung yêu cầu

```json
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `LogoutRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `LogoutResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**GET /api/v1/auth/me** — Người dùng hiện tại, số dư và giới hạn

Quyền truy cập: Token trang quản lý tài khoản

GET`/api/v1/auth/me`

Đọc; lấy ID từ phản hồi trước đó của bạn

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

Không cần nội dung yêu cầu. Gửi các tham số nêu trên trong URL.

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `User`, `UserProfileResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "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)"
  }
}
```

Đặc điểm: Mọi dữ liệu cá nhân và đối tượng đều được giới hạn theo chủ thể JWT.

Đặc điểm: Giới hạn chi tiêu của khóa (quota, quota\_used) nằm trong phản hồi về khóa, không nằm trong hồ sơ. frozen\_balance là số tiền đã giữ trước, không thể coi là số dư khả dụng.

**POST /api/v1/auth/passkey/login/begin** — Bắt đầu đăng nhập bằng passkey

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 20 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `turnstile_token` | `string` | không |  |

Mẫu nội dung yêu cầu

```json
{
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `PasskeyBeginLoginRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `PasskeyOptionsResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
    "options": "PLACEHOLDER_OPTIONS (any)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Đặc điểm: credential được lấy từ navigator.credentials; session\_token từ begin. Nội dung Finish \<=65536 byte; đăng ký và xóa cần mật khẩu.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/passkey/login/finish** — Hoàn tất đăng nhập bằng passkey

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 20 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `session_token` | `string` | có | required |
| `name` | `string` | không |  |
| `credential` | `object` | có | required |

Mẫu nội dung yêu cầu

```json
{
  "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
  "name": "PLACEHOLDER_NAME (string)",
  "credential": "PLACEHOLDER_CREDENTIAL (object)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `PasskeyFinishRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `User`, `AuthResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Nếu có nhiều biến thể phản hồi, các trường của chúng được liệt kê trong các lược đồ riêng; không nên gộp chúng thành một đối tượng.

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Đặc điểm: credential được lấy từ navigator.credentials; session\_token từ begin. Nội dung Finish \<=65536 byte; đăng ký và xóa cần mật khẩu.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/refresh** — Làm mới token

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 30 yêu cầu trong 60 giây từ một địa chỉ.

POST`/api/v1/auth/refresh`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `refresh_token` | `string` | có | required |

Mẫu nội dung yêu cầu

```json
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `RefreshTokenRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `RefreshTokenResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "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)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/register** — Đăng ký

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Giới hạn tần suất: 5 yêu cầu trong 60 giây từ một địa chỉ.

POST`/api/v1/auth/register`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `email` | `string` | có | required,email |
| `password` | `string` | có | required,min=6 |
| `verify_code` | `string` | không |  |
| `turnstile_token` | `string` | không |  |
| `promo_code` | `string` | không | ; Mã khuyến mại khi đăng ký |
| `invitation_code` | `string` | không | ; Mã lời mời |

Mẫu nội dung yêu cầu

```json
{
  "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 biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `RegisterRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `User`, `AuthResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Nếu có nhiều biến thể phản hồi, các trường của chúng được liệt kê trong các lược đồ riêng; không nên gộp chúng thành một đối tượng.

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/reset-password** — Đặt lại mật khẩu

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Giới hạn tần suất: 10 yêu cầu trong 60 giây từ một địa chỉ.

POST`/api/v1/auth/reset-password`

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `email` | `string` | có | required,email |
| `token` | `string` | có | required |
| `new_password` | `string` | có | required,min=6 |

Mẫu nội dung yêu cầu

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "token": "PLACEHOLDER_TOKEN (string)",
  "new_password": "PLACEHOLDER_NEW_PASSWORD (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `ResetPasswordRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `ResetPasswordResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/revoke-all-sessions** — Thu hồi tất cả phiên

Quyền truy cập: Token trang quản lý tài khoản

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

Không cần nội dung yêu cầu.

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `RevokeAllSessionsResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Đặc điểm: Mọi dữ liệu cá nhân và đối tượng đều được giới hạn theo chủ thể JWT.

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/send-verify-code** — Gửi mã xác nhận

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Giới hạn tần suất: 5 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `email` | `string` | có | required,email |
| `turnstile_token` | `string` | không |  |

Mẫu nội dung yêu cầu

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `SendVerifyCodeRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `SendVerifyCodeResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)",
    "countdown": "PLACEHOLDER_COUNTDOWN (integer)"
  }
}
```

Đặc điểm: Thao tác thay đổi trạng thái hoặc tiếp tục quy trình ủy quyền dùng một lần; ví dụ mô tả hợp đồng và không được thực thi.

Phương thức thay đổi dữ liệu. Chỉ an toàn khi gửi lại nếu phương thức có ghi Idempotency-Key. Nếu mất phản hồi, trước tiên hãy kiểm tra kết quả (chẳng hạn danh sách khóa), rồi mới quyết định có gửi lại yêu cầu hay không.

**POST /api/v1/auth/validate-invitation-code** — Kiểm tra lời mời

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 10 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `code` | `string` | có | required |

Mẫu nội dung yêu cầu

```json
{
  "code": "PLACEHOLDER_CODE (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `ValidateInvitationCodeRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `ValidateInvitationCodeResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)"
  }
}
```

Đặc điểm: Phương thức kiểm tra lời mời và không tiêu thụ mã; ví dụ mô tả hợp đồng API và không được thực thi.

Phương thức chỉ kiểm tra mã mời và không tiêu thụ mã đó. Có thể kiểm tra lại trong giới hạn tần suất yêu cầu; kết quả phản ánh trạng thái của mã tại thời điểm yêu cầu.

**POST /api/v1/auth/validate-promo-code** — Kiểm tra mã khuyến mại

Quyền truy cập: Không cần đăng nhập; điều kiện bổ sung được ghi ở phương thức

Tính khả dụng của chức năng và các điều kiện truy cập bổ sung được kiểm tra khi thực hiện yêu cầu.

Giới hạn tần suất: 10 yêu cầu trong 60 giây từ một địa chỉ.

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

## Các trường JSON / biểu mẫu

| Trường | Kiểu | Bắt buộc | Kiểm tra / mô tả |
| --- | --- | --- | --- |
| `code` | `string` | có | required |

Mẫu nội dung yêu cầu

```json
{
  "code": "PLACEHOLDER_CODE (string)"
}
```

PLACEHOLDER biểu thị dữ liệu bạn nhập và kiểu dữ liệu đó. Thay các giá trị và chỉ giữ những trường tùy chọn cần thiết; không gửi chuỗi đánh dấu thay cho số, boolean, đối tượng hoặc mảng.

Lược đồ yêu cầu: `ValidatePromoCodeRequest`

## Phản hồi

Phản hồi JSON chứa code, message và data. Nội dung data được mô tả trong các lược đồ bên dưới.

Lược đồ dữ liệu phản hồi: `ValidatePromoCodeResponse`. Các trường và kiểu dữ liệu nằm trên trang “Lược đồ dữ liệu”.

Lược đồ phản hồi, các giá trị chỉ để minh họa

```json
{
  "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)"
  }
}
```

Đặc điểm: Phương thức kiểm tra mã khuyến mãi và không cộng thưởng; ví dụ mô tả hợp đồng API và không được thực thi.

Phương thức chỉ kiểm tra mã khuyến mãi và không áp dụng mã vào tài khoản. Có thể kiểm tra lại trong giới hạn tần suất yêu cầu; kết quả phản ánh trạng thái của mã tại thời điểm yêu cầu.

## Đăng nhập và phiên · 2FA

`POST /api/v1/auth/login` → `data`

- `data.requires_2fa === true` → [TotpLoginResponse](https://ailoot.ai/docs/vi/cabinet/schemas-1/#totploginresponse) → `data.temp_token` → `POST /api/v1/auth/login/2fa` · `{"temp_token": "…", "totp_code": "…"}` → `data.access_token`
- `data.access_token` → [AuthResponse](https://ailoot.ai/docs/vi/cabinet/schemas-1/#authresponse) → `Authorization: Bearer $TOKEN`

`totp_code`: `string`, `len = 6`. `temp_token ≠ access_token`. [User](https://ailoot.ai/docs/vi/cabinet/schemas-1/#user)

Còn câu hỏi? Hãy gửi Request ID và mô tả — chúng tôi sẽ giúp tìm hiểu.[Liên hệ hỗ trợ](mailto:support@ailoot.ai)

## Ailoot · Công ty và danh mục dự án của công ty





Ailoot dựa trên kinh nghiệm vận hành tích lũy, cơ sở khách hàng lớn, dịch vụ ổn định và việc kiểm soát KPI liên tục.





Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.





Ailoot áp dụng kinh nghiệm vận hành này để cung cấp quyền truy cập API vào các tính năng AI trong sản phẩm của khách hàng, tác tử, ứng dụng và quy trình tự động hóa.
