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

# Credenciales de API y tokens de acceso

> Intercambia tu API key por un token de acceso de usuario de corta duración y con alcance específico.

## Obtén tus credenciales de API

Una vez que tu aplicación esté creada en la Developer Console, selecciónala para encontrar su **API Key**, **User ID** y **Account ID**.

<Info>
  **Dónde encontrarlas:** la [página de Desarrolladores](https://uni.staging.fluzapp.com/developers), dentro de la aplicación que creaste. Estas credenciales habilitan la autorización con API key — principalmente llamadas administrativas y la generación de tokens de acceso de usuario.
</Info>

![Obtain API credentials](https://files.readme.io/d1b78cd2ecfef1f945a9685f81efe0a8b30b7324d32d5ee62e610bced35585b4-obtain_api_creds.gif)

Cada solicitud a la API de Fluz usa un **user access token** en el encabezado `Authorization`. Creas el token a partir del `clientId` y `clientSecret` de tu aplicación llamando a la mutación `generateUserAccessToken` contra el servicio OAuth.

## Genera un token de acceso

```bash theme={null}
curl -X POST https://oauth-service.fluzapp.com/graphql \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mutation ($clientId: String!, $clientSecret: String!, $scopes: [Scope!]!) { generateUserAccessToken(clientId: $clientId, clientSecret: $clientSecret, scopes: $scopes) { accessToken expiresIn scopes } }",
    "variables": {
      "clientId": "<APPLICATION_CLIENT_ID>",
      "clientSecret": "<APPLICATION_CLIENT_SECRET>",
      "scopes": ["LIST_OFFERS", "PURCHASE_GIFTCARD", "REVEAL_GIFTCARD"]
    }
  }'
```

La respuesta contiene un token de acceso, su tiempo de vida y los alcances que lleva:

```json theme={null}
{
  "data": {
    "generateUserAccessToken": {
      "accessToken": "eyJhbGciOi...",
      "expiresIn": 3600,
      "scopes": ["LIST_OFFERS", "PURCHASE_GIFTCARD", "REVEAL_GIFTCARD"]
    }
  }
}
```

## Usa el token

Adjunta el token a cada solicitud GraphQL contra el grafo transaccional:

```bash theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/graphql \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"query":"{ viewer { id email } }"}'
```

<Warning>
  Nunca envíes valores de `clientSecret` a un navegador o cliente móvil. Genera los tokens de acceso del lado del servidor y, si es necesario, reenvía solo el token al cliente.
</Warning>

## Actualiza antes de que caduque

Los tokens de acceso son de corta duración. Solicita uno nuevo antes de que el actual caduque — no esperes un `401`. Consulta [Actualizar un token de acceso vencido](/get-started/refresh-expired-access-token) para la llamada exacta, y [Autenticación](/concepts/authentication) para el flujo completo, incluidos los grants de OAuth para tokens con alcance de cliente.

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Inicio rápido: tu primera compra de tarjeta de regalo" icon="gift" href="/quickstart">
    Ejecuta el camino feliz completo de punta a punta — deposita fondos, compra una tarjeta de regalo y revélala en el sandbox.
  </Card>

  <Card title="Actualizar un token vencido" icon="rotate-cw" href="/get-started/refresh-expired-access-token">
    Intercambia un refresh token por un nuevo access token sin volver a ejecutar el flujo de credenciales.
  </Card>
</CardGroup>

<StickyContactSalesBanner />
