GET https://api.veriko.mx/v1/plans/public

Public plan catalog (landing)

Audience
public

Plan catalog for unauthenticated surfaces (landing /pricing, embeddable widgets). Public endpoint, IP rate-limited, cached for 5 minutes. Returns plans where is_active = 1 AND is_public = 1. Each one embeds prices[] (filtered to is_active = 1) and bilingual features[] (also active). Does NOT expose stripe_product_id, stripe_price_id, user_count, nor internal timestamps — stripe_price_id is resolved server-side at Checkout Session creation. Cache: Cache-Control: public, max-age=300 (5 min).

Request
curl -X GET 'https://api.veriko.mx/v1/plans/public' \
  -H 'Authorization: Bearer mxcep_••••'

Python example — coming soon.

JavaScript example — coming soon.

PHP example — coming soon.

Response 200 ListPublicPlansResponse — Active + public plans with embedded prices and features.
Field Type Description
type * string

id * string

Plan slug.

attributes * object

slug * string

Human-readable plan identifier (slug), stable and unique; same value as `id`.

name * string

Display name of the plan, shown in the UI.

billing_model * string

Plan billing model — `free` (no cost), `tiered` (fixed tiers), `metered` (usage-based) or `hybrid` (base + usage).

monthly_validation_limit integer | null nullable

Monthly cap on validations allowed by the plan; `null` means uncapped.

included_validations integer | null nullable

Validations included at no extra cost within the base quota; `null` when not applicable.

trial_days integer | null nullable

Free-trial length in days; `null` or `0` when the plan has no trial.

is_default boolean

Whether this is the default plan assigned to new accounts.

sort_order integer

Sort position used to order the plan within the catalog (ascending).

prices * array

Plan prices, one per billing-period and currency combination.

features * array

Features included in the plan, in display order.

Response status codes GET /v1/plans/public
Status Class Description Body
200 2xx Active + public plans with embedded prices and features. ListPublicPlansResponse
429 4xx Rate limit exceeded ErrorResponse
Response headers 200
Header Type Description
Cache-Control string `public, max-age=300`.
Errors from GET /v1/plans/public
Status Code Detail
429 rate_limit_exceeded

Rate limit exceeded. Try again in 45 seconds.

Envelope
meta.request_id
f7a8b9c0d1e2
Response headers
  • Retry-After : integer — Seconds to wait before retrying. Matches the endpoint's rate-limit window (typically 60s for list endpoints, 1-5s for in-flight idempotent operations).
  • X-RateLimit-Limit : integer — Configured request cap for this bucket (emitted only on 429).
  • X-RateLimit-Remaining : integer — Requests remaining in the current window — always 0 at the moment of the 429 (emitted only on 429).
  • X-RateLimit-Reset : integer — Absolute Unix epoch (seconds) when the window resets. Emitted only on 429, alongside Retry-After. Per-endpoint overrides exist (e.g. `rate_limited_login`).