https://api.veriko.mx/v1/plans/{slug}/prices Precios activos de un plan
Devuelve los precios activos del plan identificado por slug para que el cliente pueda mostrar el desglose por moneda × intervalo × tipo antes del checkout. El stripe_price_id NO se expone aquí — la resolución del price queda server-side en POST /v1/billing/checkout-session (el cliente solo envía plan_slug, currency, billing_interval). Si el plan no existe, está desactivado, o tiene is_public = 0, responde 404 plan_not_found (defense-in-depth contra enumeración). meta.plan lleva un mini-resumen del plan (billing_model, trial_days, included_validations) para que la UI pueda renderizar el contexto sin un fetch separado. Disponible por API key.
| Parámetro | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
slug * | path | string | obligatorio | Slug del plan. |
curl -X GET 'https://api.veriko.mx/v1/plans/{slug}/prices' \
-H 'Authorization: Bearer mxcep_••••'
Ejemplo en Python — próximamente.
Ejemplo en JavaScript — próximamente.
Ejemplo en PHP — próximamente.
| Campo | Tipo | Descripción |
|---|---|---|
type * | string | |
id * | string | Llave compuesta `<currency>_<interval>_<kind>` (ej. `MXN_month_base`). |
attributes * | object | Precio Stripe asociado a un plan, expuesto al cliente sin revelar `stripe_price_id`. Cada plan puede tener varios precios para combinaciones de moneda × intervalo × tipo (`base` para tarifa fija + opcional `metered_overage` para excedente medido). |
currency | string | Moneda del precio. |
billing_interval | string | Cadencia de facturación. |
kind | string | Tipo de precio. `base` = cuota fija del ciclo; `metered_overage` = cargo por unidad consumida por encima del incluido. |
unit_amount | integer | null anulable | Monto en unidades mínimas (centavos). `null` cuando el precio es tiered server-side en Stripe (la tarifa se calcula al momento de facturar y no se puede pre-mostrar como un solo número). |
tax_behavior | string | Cómo se trata el impuesto en `unit_amount`. `inclusive` = ya incluido; `exclusive` = se agrega al cobro. |
| Código | Clase | Descripción | Cuerpo |
|---|---|---|---|
| 200 | 2xx | Precios activos del plan + resumen en `meta.plan`. | ListPlanPricesResponse |
| 401 | 4xx | Se requiere autenticación o las credenciales son inválidas | ErrorResponse |
| 404 | 4xx | `plan_not_found` — el slug no existe, el plan está desactivado, o `is_public = 0`. | ErrorResponse |
| 422 | 4xx | `plan_slug_invalid` — el `slug` no coincide con `[a-z0-9_-]{1,50}`. | ErrorResponse |
| 429 | 4xx | Límite de tasa excedido | ErrorResponse |
| Código | Clave | Detalle |
|---|---|---|
| 401 | unauthorized | Invalid or missing authentication credentials. Envelope
|
| 429 | rate_limit_exceeded | Rate limit exceeded. Try again in 45 seconds. Envelope
Cabeceras de respuesta
|