---
title: "List available plans"
method: GET
path: "/api/v1/billing/plans"
tags: ["billing"]
---

# List available plans

`GET /api/v1/billing/plans`

## Request

- Base URL: `https://api.sytecheck.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sytecheck.app/api/v1/billing/plans`
- Auth: none declared

Return every plan with its price, monthly scan allowance, included categories,
retention window, and concurrency limit. No authentication required.

This is the authoritative source for plan limits; do not hard-code them.

## Response `200`

Successful Response

- PublicPlansResponse: The full plan matrix, for the unauthenticated pricing page.
  - `billing_enabled` boolean, required
  - `plans` PublicPlan[], required
    - `tier` 'free' | 'pro' | 'agency', required
    - `name` string, required
    - `monthly_price_usd` string, nullable
    - `annual_price_usd` string, nullable
    - `monthly_scans` integer, required
    - `categories` string[], required
    - `pdf_export` boolean, required
    - `public_api` boolean, required
    - `webhooks` boolean, required
    - `retention_days` integer, required
    - `concurrent_scans` integer, required
    - `paddle_price_id_monthly` string, nullable
    - `paddle_price_id_annual` string, nullable
  - `one_off_scan_price_usd` string, required
  - `one_off_scan_paddle_price_id` string, nullable
  - `annual_months_charged` integer, required

---

[API](https://skmtc.dev/sytecheck/apis/sytecheck-api.md) · [All operations](https://skmtc.dev/sytecheck/apis/sytecheck-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sytecheck/apis/sytecheck-api/revisions/797cf6b3e867?raw)
