# Token de acceso

Intercambia un API ID y una API key por un token bearer de OAuth2.
- **Requisitos previos**: `client_id` es el API ID y `client_secret` la API key. El miembro debe estar activo, y la IP de quien llama debe cumplir las listas de permitidos y denegados de IP de la Open API.
- **Efecto**: ninguno; el token está autofirmado y no se almacena nada en el servidor.
- **Vigencia**: `expires_in` segundos, 3600 por defecto. **No hay token de refresco ni endpoint de refresco**; solicita un token nuevo en su lugar.
- **Concurrencia**: como los tokens no tienen estado, emitir uno nuevo **no** invalida los anteriores: varios pueden ser válidos a la vez. Un token deja de funcionar solo cuando caduca o cuando se rota la API key.
- **Reintentos**: es seguro reintentar.

Errores de negocio documentados: `12002`, `35002`, `35005`. Consulte [Error Codes](../Getting%20Started/error-codes.md) para el significado de cada código. Cualquier operación puede devolver además los códigos comunes.

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

## Header parameters:

  - `Content-Type` (string, required)

## Request fields (application/json):

  - `client_id` (string, required)
    Un ID de API identifica a un miembro.

  - `client_secret` (string, required)
    Una clave API autentica un ID de cliente. Para llamar a las API de MoreLogin, deberás
intercambiar tu ID de API y tu clave API por un token de acceso.
Mantén este secreto a salvo.

  - `grant_type` (string, required)
    Nombre del paquete: solo es necesario si no se proporciona appVersionId.
    Example: client_credentials

## Response 200:

  - `200` (unknown)
    Correcto. `data` es un objeto con los campos `scope`, `access_token`, `token_type`, `expires_in` y `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)

