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

# Crear un token de API

> POST /console/token/

Crea una nueva clave de la API de gestión. Este endpoint reside en el host **habitual** de la API de Scanova (`qcg-api.scanova.io`) y se autentica de la misma manera que cualquier otra solicitud del panel con la sesión iniciada — un token de acceso OAuth, **no** una clave de la API de gestión.

<Note>
  Esta es la única llamada relacionada con la API de gestión que realizas desde un contexto de confianza usando tu propio inicio de sesión, no desde la integración que usará la clave resultante. Consulta el [resumen](/es/api-reference/management-api/overview) para ver la arquitectura completa de dos hosts.
</Note>

## Solicitud

```
POST https://qcg-api.scanova.io/console/token/
Authorization: Bearer <your_oauth_access_token>
Content-Type: application/json
```

### Parámetros del cuerpo

<ParamField body="name" type="string" required>
  Una etiqueta legible para la clave, p. ej. `"Zapier — production"`. Se muestra en la lista de claves del panel para que puedas distinguirlas.
</ParamField>

<ParamField body="environment" type="string" default="sandbox">
  Uno de `sandbox`, `live`, `zapier`, `mcp`. Permanente durante toda la vida de la clave — determina qué cuota del plan se verifica en cada solicitud al host de datos que realice la clave, y en el caso de las claves `zapier`/`mcp`, qué encabezado `User-Agent` debe enviar el cliente que realiza la llamada. Consulta [Cuota del plan](/es/api-reference/management-api/overview#plan-quota) para ver la asignación completa.
</ParamField>

<ParamField body="expiry" type="integer" default="-1">
  Uno de `-1` (Nunca), `30`, `90` o `365` — días después de la creación en los que la clave deja de funcionar. No hay forma de extender la caducidad de una clave existente; crea una nueva en su lugar.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://qcg-api.scanova.io/console/token/" \
    -H "Authorization: Bearer <your_oauth_access_token>" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Zapier — production",
      "environment": "zapier",
      "expiry": 365
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 Created theme={null}
  {
    "name": "Zapier — production",
    "key": "401f7ac837da42b97f613d789819ff93537bee6a",
    "environment": "zapier",
    "expiry": 365,
    "created_by": {
      "id": 1042,
      "full_name": "Jordan Lee",
      "email": "jordan@example.com"
    },
    "created": "2026-08-16T09:12:33.512000Z",
    "expiry_date": "2027-08-16T09:12:33.512000Z",
    "expired": false,
    "usage_count": 0
  }
  ```
</ResponseExample>

### Campos de la respuesta

<ResponseField name="key" type="string">
  La clave sin procesar de la API de gestión. **Esta es la única respuesta que devuelve el valor completo de la clave** — no existe un endpoint de revelar/recuperar posteriormente, así que guárdala de inmediato.
</ResponseField>

<ResponseField name="expiry_date" type="string | null">
  La marca de tiempo de caducidad absoluta calculada a partir de `created` + `expiry` días, o `null` cuando `expiry` es `-1` (Nunca).
</ResponseField>

<ResponseField name="expired" type="boolean">
  Indica si la clave ya ha superado su `expiry_date`. Las claves caducadas fallan la autenticación en el host de datos, pero no se eliminan automáticamente — elimínalas explícitamente mediante [`DELETE /console/token/{key}/`](/es/api-reference/management-api/tokens/remove) si quieres retirarlas de la lista.
</ResponseField>

<ResponseField name="usage_count" type="integer">
  Recuento de solicitudes de por vida realizadas con esta clave específica, a lo largo de todo su historial. Esto es distinto de las cifras agregadas a nivel de entorno que devuelven los [endpoints de uso](/es/api-reference/management-api/tokens/usage-stats) que se muestran a continuación, que suman todas las claves que comparten ese entorno.
</ResponseField>

## Listar tokens existentes

La misma ruta `console/token/` también acepta `GET` (sin cuerpo) para listar todas las claves de la cuenta, devolviendo la misma forma que la respuesta de creación para cada una. Puedes filtrar por entorno: `GET /console/token/?environment=live`.

<Note>
  Tanto la creación como el listado de tokens vuelven a verificar la cuota del plan usando el `environment` de la solicitud — el campo del cuerpo en la creación, el parámetro de consulta en el listado, con `sandbox` como valor predeterminado si se omite. Si las cuotas de sandbox y live de tu plan difieren, pasa `?environment=live` explícitamente al listar claves del entorno live, ya que el valor predeterminado, en caso contrario, verifica la cuota de sandbox.
</Note>

## Relacionado

* [Resumen de la API de gestión](/es/api-reference/management-api/overview) — la arquitectura de dos hosts y la asignación de cuotas por `environment` que alimenta el campo `environment` de este endpoint.
* [Eliminar un token de API](/es/api-reference/management-api/tokens/remove) — revoca una clave creada aquí.
* [Estadísticas de uso](/es/api-reference/management-api/tokens/usage-stats) — recuentos agregados de solicitudes para claves que comparten un entorno.
* [Listar / crear códigos QR](/es/api-reference/management-api/qr/list) — el primer endpoint de datos que la mayoría de las integraciones llaman con una clave creada aquí.


## OpenAPI

````yaml api-reference/openapi/management-api.json POST /console/token/
openapi: 3.1.0
info:
  title: Scanova Management API (v2)
  description: >-
    The complete Scanova Management API — every endpoint available at
    management.scanova.io (QR codes, folders, tags, leads, forms, analytics,
    plans, shared users & roles), plus the token-creation and usage-stats
    endpoints used to authenticate against it. Every path and request/response
    shape below was verified live against a real API key and the actual running
    backend (Phase 7, 2026-08-16) — not guessed from reading urls.py alone.
  version: 2.0.0
servers:
  - url: https://management.scanova.io
    description: Management API — QR/folder/tag/lead/form/analytics/plans endpoints
security:
  - apiKeyAuth: []
paths:
  /console/token/:
    post:
      summary: Create an API token
      operationId: createApiToken
      responses:
        '201':
          description: Token created
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Send your Management API key as the raw value of the Authorization
        header — no "Bearer " or "Token " prefix, and no other characters.
        Example: `Authorization: 401f7ac837da42b97f613d789819ff93537bee6a`. A
        header containing more than one space-separated part is rejected
        outright. Requests also require the request's Host header to be the
        management API host (e.g. management.scanova.io) — the same key sent to
        the regular API host will not authenticate.

````