---
title: "List plans and limits"
method: GET
path: "/plans"
---

# List plans and limits

`GET /plans`

## Request

- Base URL: `https://cactuscompute.com/v1`
- URL: `https://cactuscompute.com/v1/plans`
- Auth: none required

## Response `200`

Plans

- object
  - `object` 'list', required
  - `data` Plan[], required
    - `id` string, required
    - `object` 'plan'
    - `name` string, required
    - `price_usd` number, nullable, required
    - `billing_type` 'free' | 'one_time' | 'monthly' | 'custom', required
    - `duration_days` integer, nullable, required
    - `once_per_account` boolean, required
    - `price_usd_per_month` number, nullable, required: Monthly plans only; null for one-time purchases
    - `limits` Limits, required
      - `jobs` integer: Fine-tunes per access period
      - `examples` integer: Generated examples per access period
      - `storage_bytes` integer: Standing storage limit
    - `execution_mode` 'local' | 'hosted'
    - `features` string[]
    - `get_started_url` string, uri: Self-serve instructions for the Free local workflow; no hosted entitlement
    - `contact_url` string, uri
  - `has_more` boolean, required
  - `first_id` string
  - `last_id` string

## Other responses

- `4XX`: The request was rejected; `code` says why and `url` (when present) is the console page that clears it

---

[API](https://skmtc.dev/cactuscompute/apis/needle-fine-tuning-api.md) - [All operations](https://skmtc.dev/cactuscompute/apis/needle-fine-tuning-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cactuscompute/apis/needle-fine-tuning-api/revisions/227acc9b45e8?raw)
