> ## Documentation Index
> Fetch the complete documentation index at: https://firespark.cloud/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Token

> Autentícate en la API de administración con OAuth 2.0.

La API de administración usa [OAuth 2.0](https://oauth.net/2/) (RFC 6749) con el grant de **client credentials** para autenticación servidor a servidor.

## Requisitos previos

Registra tu aplicación en el [panel de Fire spark](https://firespark.cloud) para obtener un `client_id` y un `client_secret`. Guarda el client secret solo en tu servidor.

## Grant de client credentials

Usa este grant para herramientas de back-office, jobs de sincronización con CRM, pipelines de reporting y scripts de migración. Solicita un access token directamente en el endpoint de token.

```bash cURL theme={null}
curl -X POST "https://firespark.cloud/api/admin/v1/oauth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "scope=customers:read customers:write orders:read"
```

```json Success theme={null}
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "customers:read customers:write orders:read"
}
```

### Parámetros de la solicitud de token

| Parámetro | Requerido | Descripción |
| - | - | - |
| `grant_type` | Sí | Debe ser `client_credentials`. |
| `client_id` | Sí | El client ID de tu aplicación. |
| `client_secret` | Sí | El client secret de tu aplicación. |
| `scope` | No | Lista de scopes separados por espacios. Por defecto usa los scopes configurados para tu app. |

## Usar el access token

Incluye el access token en el header `Authorization` de cada solicitud autenticada.

```bash theme={null}
curl "https://firespark.cloud/api/admin/v1/customers/bulk?from=0&to=100" \
  -H "Authorization: Bearer ACCESS_TOKEN"
```

> [!WARNING]
>
> Los access tokens expiran después del número de segundos indicado en
> `expires_in`. Solicita un token nuevo antes de que expire. No expongas client
> secrets ni access tokens en código del lado del cliente.

## Respuestas de error

Los errores de token y autorización siguen RFC 6749. El endpoint de token devuelve `application/json` con un campo `error`.

| Error | Descripción |
| - | - |
| `invalid_request` | Falta un parámetro requerido o está mal formado. |
| `invalid_client` | Falló la autenticación del cliente. |
| `invalid_grant` | Las credenciales proporcionadas no son válidas. |
| `unauthorized_client` | El cliente no está autorizado para este grant type. |
| `unsupported_grant_type` | El valor de `grant_type` no está soportado. |
| `invalid_scope` | El scope solicitado no es válido o excede lo permitido. |

```json Error theme={null}
{
  "error": "invalid_client",
  "details": "Client authentication failed."
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.