---
title: "Plans"
method: GET
path: "/api/plans"
---

# Plans

`GET /api/plans`

Plan catalog — single source of truth for prices, taglines,
and entitlements. The SPA (BenchSubscription.vue) fetches this on
mount so admin price changes don't require a frontend redeploy.

Optional `?domain=` (per-domain entitlements, EPIC omicos-admin#287):
the catalog is currently identical across domains (pricing parity), so
the same plan list is returned and the response is simply TAGGED with
the resolved `domain` so the SPA knows which domain it's rendering a
checkout for. Unknown domains fall back to 'omics' rather than 4xx —
this is a read-only catalog, and a bogus domain shouldn't break the
pricing page. Omitting the param is byte-compatible with the old
response apart from the additive `domain` field.

## Query parameters

- `domain` string

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/omicos/apis/omicos-server.md) · [All operations](https://skmtc.dev/omicos/apis/omicos-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/omicos/omicos-server/revisions/a00b94573ffe/schema)
