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

# Plan actuel

> GET /plans/current/

Renvoie le plan d'abonnement actif du compte authentifié — son expiration, l'état de facturation, et l'ensemble complet des quotas/permissions accordés par le plan.

<Note>
  Nécessite une clé Management API avec le quota `MANAGEMENT_API` (ou `MANAGEMENT_API_SANDBOX`), envoyée comme valeur brute de l'en-tête `Authorization` — voir la [vue d'ensemble de la Management API](/fr/api-reference/management-api/overview).
</Note>

## Requête

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://management.scanova.io/plans/current/' \
    --header 'Authorization: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "is_active": true,
    "is_free": false,
    "expire": "2027-08-16",
    "is_expired": false,
    "days_left": 365,
    "recurring_enabled": false,
    "can_cancel_subscription": false,
    "payment_method": null,
    "pricing": null,
    "plan": {
      "id": 275,
      "slug": "pro-scanova-io",
      "name": "Pro - scanova.io",
      "plan_type": "Normal",
      "description": "...",
      "version": 1,
      "family": {
        "id": 12,
        "name": "Pro"
      },
      "quotas": [
        {
          "quota_id": 401,
          "codename": "QR_CODE_LIMIT",
          "name": "QR Code Limit",
          "value": 100
        }
      ],
      "is_enterprise_plan": false,
      "is_custom_plan": false
    },
    "upcoming_plan": null
  }
  ```
</ResponseExample>

Vérifié en conditions réelles sur un compte de test au plan Pro — `pricing` et `payment_method` valent `null` sur ce compte car il n'est actuellement pas sur un cycle de facturation récurrent payant ; `plan.quotas` est tronqué ci-dessus par souci de concision (une réponse réelle inclut chaque quota accordé par le plan).

### Champs de réponse

<ResponseField name="is_active" type="boolean">
  Indique si le plan est actuellement actif (non expiré, non annulé).
</ResponseField>

<ResponseField name="is_free" type="boolean">
  Indique s'il s'agit d'un plan gratuit.
</ResponseField>

<ResponseField name="expire" type="string">
  Date d'expiration (`YYYY-MM-DD`), ou la chaîne littérale `"Lifetime"` pour un plan sans expiration.
</ResponseField>

<ResponseField name="is_expired" type="boolean">
  Indique si le plan a déjà expiré.
</ResponseField>

<ResponseField name="days_left" type="integer">
  Jours restants jusqu'à `expire`.
</ResponseField>

<ResponseField name="recurring_enabled" type="boolean">
  Indique si le renouvellement automatique est activé.
</ResponseField>

<ResponseField name="can_cancel_subscription" type="boolean">
  Indique si le compte est éligible pour annuler son abonnement depuis le tableau de bord.
</ResponseField>

<ResponseField name="payment_method" type="object | null">
  Le moyen de paiement enregistré du compte, ou `null` si aucun n'est défini (par ex. comptes Free Trial/Enterprise provisionnés).
</ResponseField>

<ResponseField name="pricing" type="object | null">
  L'enregistrement spécifique de tarification/période de facturation sous lequel ce plan a été acheté (`{id, name, period}`, plus `amount`/`currency` lorsque résolvable à partir de l'historique des commandes), ou `null` si le compte n'a aucun historique de facturation pour ce plan.
</ResponseField>

<ResponseField name="plan" type="object">
  La définition du plan lui-même.

  <Expandable title="propriétés de plan">
    <ResponseField name="id" type="integer" />

    <ResponseField name="slug" type="string" />

    <ResponseField name="name" type="string" />

    <ResponseField name="plan_type" type="string">Type de plan lisible, par ex. `Normal`, `Enterprise`.</ResponseField>

    <ResponseField name="description" type="string" />

    <ResponseField name="version" type="integer" />

    <ResponseField name="family" type="object">`{id, name}` — la famille de plans à laquelle ce plan appartient (par ex. tous les paliers de « Pro »).</ResponseField>
    <ResponseField name="quotas" type="array">Chaque quota accordé par ce plan, chacun sous la forme `{quota_id, codename, name, value, ...}`. `codename` est l'identifiant stable auquel font référence les messages d'erreur de restriction de quota des autres endpoints (par ex. `MANAGEMENT_API`, `FOLDER_MANAGEMENT`, `EXPORT_ANALYTICS_REPORT`).</ResponseField>

    <ResponseField name="is_enterprise_plan" type="boolean" />

    <ResponseField name="is_custom_plan" type="boolean" />
  </Expandable>
</ResponseField>

<ResponseField name="upcoming_plan" type="object | null">
  Même structure que `plan`, si le compte a un changement de plan planifié (par ex. une rétrogradation prenant effet à la fin du cycle de facturation en cours) — `null` sinon.
</ResponseField>

<Note>
  Le plan Pro standard n'accorde **pas** le quota `MANAGEMENT_API` — seuls les plans Free Trial, Enterprise et Internal l'accordent dans l'environnement de test vérifié. Si vous développez avec cette API et recevez une erreur `401` avec « Your plan does not have management API quota. », vérifiez `plan.quotas` ici pour `MANAGEMENT_API` (ou `MANAGEMENT_API_SANDBOX`) et contactez le support si vous pensez que votre plan devrait l'inclure — il n'existe pas actuellement de parcours de mise à niveau en libre-service pour ce quota spécifiquement.
</Note>

## Voir aussi

* [Vue d'ensemble de la Management API](/fr/api-reference/management-api/overview) — la correspondance `environment`-vers-quota (`MANAGEMENT_API`, `INTEGRATION_ZAPIER`, `INTEGRATION_MCP`) à laquelle correspondent les codenames de `plan.quotas` de cet endpoint.
* [Créer un token API](/fr/api-reference/management-api/tokens/create) — où l'`environment` d'une clé détermine lequel de ces quotas est vérifié.
* [Exporter les analyses](/fr/api-reference/management-api/analytics/export) — un endpoint restreint par le codename `EXPORT_ANALYTICS_REPORT` que vous pouvez vérifier ici.
* [Gestion des dossiers](/fr/api-reference/management-api/folders/create) — un endpoint restreint par le codename `FOLDER_MANAGEMENT` que vous pouvez vérifier ici.


## OpenAPI

````yaml api-reference/openapi/management-api.json GET /plans/current/
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:
  /plans/current/:
    get:
      summary: Get current plan
      operationId: getManagedCurrentPlan
      responses:
        '200':
          description: >-
            Current plan detail — expiry, billing state, and the full
            quota/permission set the plan grants.
          content:
            application/json:
              example:
                is_active: true
                is_free: false
                expire: '2027-08-16'
                is_expired: false
                days_left: 365
                recurring_enabled: false
                can_cancel_subscription: false
                payment_method: null
                pricing: null
                plan:
                  id: 275
                  slug: pro-scanova-io
                  name: Pro - scanova.io
                  plan_type: Normal
                  version: 1
                  family:
                    id: 12
                    name: Pro
                  quotas:
                    - quota_id: 401
                      codename: QR_CODE_LIMIT
                      name: QR Code Limit
                      value: 100
                  is_enterprise_plan: false
                  is_custom_plan: false
                upcoming_plan: null
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.

````