> ## 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.

# Créer un token API

> POST /console/token/

Crée une nouvelle clé Management API. Cet endpoint se trouve sur l'hôte **habituel** de l'API Scanova (`qcg-api.scanova.io`) et est authentifié de la même manière que toute autre requête connectée au tableau de bord — un token d'accès OAuth, **et non** une clé Management API.

<Note>
  Il s'agit du seul appel lié à la Management API que vous effectuez depuis un contexte de confiance en utilisant votre propre connexion, et non depuis l'intégration qui utilisera la clé résultante. Voir la [vue d'ensemble](/fr/api-reference/management-api/overview) pour l'architecture complète à deux hôtes.
</Note>

## Requête

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

### Paramètres du corps

<ParamField body="name" type="string" required>
  Une étiquette lisible pour la clé, par ex. `"Zapier — production"`. Affichée dans la liste des clés du tableau de bord afin de pouvoir les distinguer.
</ParamField>

<ParamField body="environment" type="string" default="sandbox">
  L'un de `sandbox`, `live`, `zapier`, `mcp`. Définitif pour la durée de vie de la clé — détermine quel quota de plan est vérifié à chaque requête de la clé vers l'hôte de données, et pour les clés `zapier`/`mcp`, quel en-tête `User-Agent` le client appelant doit envoyer. Voir [Quota de plan](/fr/api-reference/management-api/overview#plan-quota) pour la correspondance complète.
</ParamField>

<ParamField body="expiry" type="integer" default="-1">
  L'un de `-1` (Jamais), `30`, `90` ou `365` — nombre de jours après la création avant que la clé cesse de fonctionner. Il n'existe aucun moyen de prolonger l'expiration d'une clé existante ; créez-en une nouvelle à la place.
</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>

### Champs de réponse

<ResponseField name="key" type="string">
  La clé Management API brute. **C'est la seule réponse qui renvoie jamais la valeur complète de la clé** — il n'existe pas d'endpoint de révélation/récupération ultérieure, donc stockez-la immédiatement.
</ResponseField>

<ResponseField name="expiry_date" type="string | null">
  L'horodatage d'expiration absolu calculé à partir de `created` + `expiry` jours, ou `null` lorsque `expiry` vaut `-1` (Jamais).
</ResponseField>

<ResponseField name="expired" type="boolean">
  Indique si la clé a déjà dépassé sa `expiry_date`. Les clés expirées échouent à l'authentification sur l'hôte de données mais ne sont pas automatiquement supprimées — supprimez-les explicitement via [`DELETE /console/token/{key}/`](/fr/api-reference/management-api/tokens/remove) si vous souhaitez les retirer de la liste.
</ResponseField>

<ResponseField name="usage_count" type="integer">
  Nombre total de requêtes effectuées avec cette clé spécifique, sur toute son historique. Ceci est différent des chiffres agrégés à l'échelle de l'environnement renvoyés par les [endpoints d'utilisation](/fr/api-reference/management-api/tokens/usage-stats) ci-dessous, qui font la somme sur toutes les clés partageant cet environnement.
</ResponseField>

## Lister les tokens existants

Le même chemin `console/token/` accepte également `GET` (sans corps) pour lister chaque clé du compte, renvoyant la même structure que la réponse de création pour chacune. Vous pouvez filtrer par environnement : `GET /console/token/?environment=live`.

<Note>
  La création comme la liste des tokens revérifient le quota de plan en utilisant l'`environment` de la requête — le champ du corps à la création, le paramètre de requête à la liste, par défaut `sandbox` si omis. Si les quotas sandbox et live de votre plan diffèrent, transmettez explicitement `?environment=live` lors de la liste des clés d'environnement live, car la valeur par défaut vérifie sinon le quota sandbox.
</Note>

## Voir aussi

* [Vue d'ensemble de la Management API](/fr/api-reference/management-api/overview) — l'architecture à deux hôtes et la correspondance de quotas par `environment` que le champ `environment` de cet endpoint alimente.
* [Supprimer un token API](/fr/api-reference/management-api/tokens/remove) — révoquez une clé créée ici.
* [Statistiques d'utilisation](/fr/api-reference/management-api/tokens/usage-stats) — nombre de requêtes agrégées pour les clés partageant un environnement.
* [Lister / créer des QR codes](/fr/api-reference/management-api/qr/list) — le premier endpoint de données que la plupart des intégrations appellent avec une clé créée ici.


## 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.

````