---
title: "Lista pública de planes activos (para la página de precios)"
method: GET
path: "/billing/plans"
tags: ["Billing"]
---

# Lista pública de planes activos (para la página de precios)

`GET /billing/plans`

## Request

- Base URL: `https://api.met.meteor.com.co/api/v1`
- URL: `https://api.met.meteor.com.co/api/v1/billing/plans`
- Auth: one of:
  - `bearer` (a scheme the document does not define)
  - HTTP bearer

El catálogo público de planes activos — el que alimenta una página de precios. Es lo único de facturación que describe la oferta y no la cuenta: para saber en qué plan está este workspace, usa `GET /billing/subscription`.

## Response `200`

- object: Sobre en el que viaja toda respuesta correcta de la API. El recurso está en `data`. Los SDKs oficiales lo desenvuelven por ti; un cliente hecho a mano tiene que leer `.data`.
  - `success` true, required: Siempre `true` en una respuesta 2xx.
  - `data` PlanWithFeaturesDto[], required
    - `allow_custom` boolean, required: `true` si admite condiciones negociadas por fuera del precio de lista.
    - `allowed_models` string[], required: Modelos habilitados por el plan, con su nombre de marca.
    - `api_daily_quota` number, nullable: Peticiones de API incluidas por día (UTC), sumando todas las API keys del workspace: API, SDK, CLI y MCP. Los complementos «Peticiones de API» lo amplían. Al llegar al tope se responde `429` `daily_request_limit_exceeded` hasta el reinicio del día, salvo enviar WhatsApp (`channels:send`), que cuenta pero no se frena. `null` = sin tope.
    - `automation_daily_quota` number, nullable: Ejecuciones de automatización incluidas por día (UTC). Ausente = sin techo.
    - `automation_monthly_quota` number, nullable: Obsoleta: el límite pasó a ser diario. Se conserva vacía por compatibilidad.
    - `automation_rate_limit_rpm` number, nullable: Declarada pero sin efecto: ningún camino la aplica hoy.
    - `call_minutes_monthly_quota` number, nullable: Techo de minutos/mes de llamada atendida por el Met. `null` = ilimitado.
    - `call_outbound_daily_quota` number, nullable: Techo de llamadas salientes al día. `null` = ilimitado.
    - `call_recording_days` number, nullable: Días que se conserva el audio de la llamada. Máximo 90.
    - `contacts_limit_soft` boolean: `true` = llegar a `max_contacts` frena el alta de contactos pero no bloquea el workspace. Para planes gratis, donde el tope lo cruza el tráfico entrante y no una acción del cliente.
    - `created_at` string, required
    - `description` string, nullable, required
    - `display_order` number, required: Orden en el que se muestra en la página de precios, ascendente.
    - `feature_keys` string[], required: Claves de las funcionalidades incluidas en el plan.
    - `icon_url` string, nullable, required
    - `id` number, required
    - `initial_bonus_usd` number, required: Energía de regalo que se acredita al activar el plan, en USD.
    - `max_contacts` number, required: Techo de contactos en el CRM.
    - `max_members` number, required: Techo de miembros del equipo.
    - `max_mets` number, required: Techo de Mets configurables.
    - `name` string, required
    - `price_monthly_usd` number, required
    - `price_yearly_usd` number, required
    - `sdk_only` boolean: `true` en el plan para desarrolladores, que no aparece en el pricing normal.
    - `slug` string, required: Identificador estable del plan. Es el que conviene guardar, no el `id`.
    - `social_accounts_max` number, nullable: Cuentas de red social conectables en total —líneas de WhatsApp, páginas de Messenger y cuentas de Instagram, sumadas—. `null` = sin tope, que es lo que tienen los planes pagos. Un plan con 1 admite UNA cuenta entre las tres redes, no una por red.
    - `status` 'active' | 'inactive' | 'hidden', required: Solo los `active` aparecen en el listado público de planes.
    - `stripe_price_id_monthly` string, nullable, required: Precio de Stripe que usa el checkout mensual.
    - `stripe_price_id_yearly` string, nullable, required: Precio de Stripe que usa el checkout anual.
    - `support_tier` 'community' | 'basic' | 'custom' | 'priority', nullable, required: Nivel de soporte incluido, que define el SLA.
    - `updated_at` string, required

## Other responses

- `400`: La request no es válida: un campo no pasa validación, falta un parámetro requerido o el recurso no admite la transición solicitada.
- `401`: API key ausente, inválida, revocada o expirada — o el workspace está bloqueado.
- `403`: La key está autenticada pero no puede ejecutar esta operación: scope faltante, capacidad deshabilitada, modo test restringido o recurso fuera de su cartera.
- `404`: El recurso no existe o no está disponible dentro del alcance de la key. No revela la existencia de recursos de otros tenants.
- `429`: Se superó el límite por minuto de la key o la cuota del plan. Respeta `Retry-After`; el SDK ya reintenta solo.
- `500`: Error del servidor o del Met que ejecutaba. El SDK reintenta los 5xx con backoff.

---

[API](https://skmtc.dev/meteor/apis/met-public-api.md) · [All operations](https://skmtc.dev/meteor/apis/met-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meteor/apis/met-public-api/revisions/fc6d3aad75de?raw)
