# Mã truy cập

Đổi API ID và API key lấy một bearer token OAuth2.
- **Điều kiện tiên quyết**: `client_id` là API ID và `client_secret` là API key. Thành viên phải đang hoạt động, và IP của bên gọi phải thỏa danh sách IP cho phép và danh sách IP chặn của Open API.
- **Tác động**: không có — token được tự ký và server không lưu gì cả.
- **Thời hạn**: `expires_in` giây, mặc định 3600. **Không có refresh token và không có endpoint làm mới**; hãy xin một token mới thay vì vậy.
- **Đồng thời**: vì token không mang trạng thái, việc phát hành token mới **không** làm mất hiệu lực các token trước đó — nhiều token có thể cùng hợp lệ một lúc. Một token chỉ ngừng hoạt động khi hết hạn hoặc khi API key được luân chuyển.
- **Thử lại**: an toàn.

Các mã lỗi nghiệp vụ đã ghi nhận: `12002`, `35002`, `35005`. Xem [Error Codes](../Getting%20Started/error-codes.md) để biết ý nghĩa từng mã. Mọi thao tác cũng có thể trả về các mã dùng chung.

Endpoint: POST /oauth2/token
Version: 2026-09-05
Security: Authorization

## Header parameters:

  - `Content-Type` (string, required)

## Request fields (application/json):

  - `client_id` (string, required)
    Mã định danh API xác định một thành viên.

  - `client_secret` (string, required)
    Khóa API xác thực ID khách hàng. Để gọi các API của MoreLogin, bạn sẽ
trao đổi ID API và Khóa API của mình để lấy mã truy cập. Hãy giữ bí mật này.
an toàn.

  - `grant_type` (string, required)
    Tên gói — chỉ bắt buộc nếu không cung cấp appVersionId
    Example: client_credentials

## Response 200:

  - `200` (unknown)
    Thành công. `data` là một đối tượng với các trường `scope`, `access_token`, `token_type`, `expires_in` và `client_metadata`.

## Response 200 fields (application/json):

  - `code` (integer, required)

  - `msg` (string | null, required)

  - `data` (object, required)

  - `data.scope` (string, required)

  - `data.access_token` (string, required)

  - `data.token_type` (string, required)

  - `data.expires_in` (integer, required)

  - `data.client_metadata` (object, required)

  - `data.client_metadata.name` (string, required)

  - `requestId` (string, required)

