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

> GET /plans/current/

Devuelve el plan de suscripción activo de la cuenta autenticada — su caducidad, estado de facturación y el conjunto completo de cuotas/permisos que otorga el plan.

<Note>
  Requiere una clave de la API de gestión con cuota `MANAGEMENT_API` (o `MANAGEMENT_API_SANDBOX`), enviada como el valor sin procesar del encabezado `Authorization` — consulta el [resumen de la API de gestión](/es/api-reference/management-api/overview).
</Note>

## Solicitud

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

Verificado en vivo contra una cuenta de prueba con plan Pro — `pricing` y `payment_method` son `null` en esta cuenta porque actualmente no está en un ciclo de facturación recurrente de pago; `plan.quotas` se ha truncado arriba por brevedad (una respuesta real incluye todas las cuotas que otorga el plan).

### Campos de la respuesta

<ResponseField name="is_active" type="boolean">
  Si el plan está actualmente activo (no caducado, no cancelado).
</ResponseField>

<ResponseField name="is_free" type="boolean">
  Si este es un plan de nivel gratuito.
</ResponseField>

<ResponseField name="expire" type="string">
  Fecha de caducidad (`YYYY-MM-DD`), o la cadena literal `"Lifetime"` para un plan sin caducidad.
</ResponseField>

<ResponseField name="is_expired" type="boolean">
  Si el plan ya ha caducado.
</ResponseField>

<ResponseField name="days_left" type="integer">
  Días restantes hasta `expire`.
</ResponseField>

<ResponseField name="recurring_enabled" type="boolean">
  Si la renovación automática está activada.
</ResponseField>

<ResponseField name="can_cancel_subscription" type="boolean">
  Si la cuenta es elegible para cancelar su suscripción desde el panel.
</ResponseField>

<ResponseField name="payment_method" type="object | null">
  El método de pago registrado de la cuenta, o `null` si no hay ninguno configurado (p. ej. cuentas de Free Trial/aprovisionadas por Enterprise).
</ResponseField>

<ResponseField name="pricing" type="object | null">
  El registro específico de precio/periodo de facturación bajo el cual se adquirió este plan (`{id, name, period}`, más `amount`/`currency` cuando se puede resolver a partir del historial de pedidos), o `null` si la cuenta no tiene historial de facturación contra este plan.
</ResponseField>

<ResponseField name="plan" type="object">
  La definición del plan en sí.

  <Expandable title="plan properties">
    <ResponseField name="id" type="integer" />

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

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

    <ResponseField name="plan_type" type="string">Tipo de plan legible, p. ej. `Normal`, `Enterprise`.</ResponseField>

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

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

    <ResponseField name="family" type="object">`{id, name}` — la familia de planes a la que pertenece este plan (p. ej. todos los niveles de "Pro").</ResponseField>
    <ResponseField name="quotas" type="array">Todas las cuotas que otorga este plan, cada una como `{quota_id, codename, name, value, ...}`. `codename` es el identificador estable al que hacen referencia los mensajes de error de restricción de cuota de otros endpoints (p. ej. `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">
  Misma forma que `plan`, si la cuenta tiene un cambio de plan programado (p. ej. una degradación que entra en vigor al final del ciclo de facturación actual) — `null` en caso contrario.
</ResponseField>

<Note>
  El plan Pro canónico **no** otorga la cuota `MANAGEMENT_API` — solo lo hacen los planes Free Trial, Enterprise e Internal en el entorno de prueba verificado. Si estás construyendo contra esta API y obtienes un `401` con `"Your plan does not have management API quota."`, comprueba aquí `plan.quotas` para `MANAGEMENT_API` (o `MANAGEMENT_API_SANDBOX`) y contacta con soporte si crees que tu plan debería incluirla — no hay una ruta de actualización de autoservicio para esta cuota en particular en este momento.
</Note>

## Relacionado

* [Resumen de la API de gestión](/es/api-reference/management-api/overview) — la asignación de `environment` a cuota (`MANAGEMENT_API`, `INTEGRATION_ZAPIER`, `INTEGRATION_MCP`) a la que corresponden los codenames de `plan.quotas` de este endpoint.
* [Crear un token de API](/es/api-reference/management-api/tokens/create) — dónde el `environment` de una clave determina cuál de estas cuotas se verifica.
* [Exportar analíticas](/es/api-reference/management-api/analytics/export) — un endpoint restringido por el codename `EXPORT_ANALYTICS_REPORT` que puedes comprobar aquí.
* [Gestión de carpetas](/es/api-reference/management-api/folders/create) — un endpoint restringido por el codename `FOLDER_MANAGEMENT` que puedes comprobar aquí.


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

````