GET https://api.veriko.mx/v1/plans/{slug}/prices

Precios activos de un plan

Audiencia
public
Autenticación
API key
Permiso
plans:read

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ámetros
Parámetro Ubicación Tipo Obligatorio Descripción
slug * path string obligatorio

Slug del plan.

Petición
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.

Respuesta 200 ListPlanPricesResponse — Precios activos del plan + resumen en `meta.plan`.
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ódigos de respuesta GET /v1/plans/{slug}/prices
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
Errores de GET /v1/plans/{slug}/prices
Código Clave Detalle
401 unauthorized

Invalid or missing authentication credentials.

Envelope
meta.request_id
c4d5e6f7a8b9
429 rate_limit_exceeded

Rate limit exceeded. Try again in 45 seconds.

Envelope
meta.request_id
f7a8b9c0d1e2
Cabeceras de respuesta
  • Retry-After : integer — Segundos a esperar antes de reintentar. Coincide con la ventana de rate-limit del endpoint (típicamente 60s para listas, 1-5s para operaciones idempotentes en vuelo).
  • X-RateLimit-Limit : integer — Límite de solicitudes configurado para este bucket (emitido sólo en 429).
  • X-RateLimit-Remaining : integer — Solicitudes restantes en la ventana actual — siempre 0 en el momento del 429 (emitido sólo en 429).
  • X-RateLimit-Reset : integer — Unix epoch absoluto (segundos) en que se reinicia la ventana. Emitido sólo en 429, junto con Retry-After. Puede existir sobreescritura por endpoint (p. ej. `rate_limited_login`).