---
title: "List tier pricing"
method: GET
path: "/tiers/v1"
tags: ["Tiers"]
---

# List tier pricing

`GET /tiers/v1`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/tiers/v1`
- Auth: none declared

Returns available tiers, pricing, and resource limits. No auth required. Useful for programmatic price discovery before setting a tier.

## Response `200`

Tier pricing and auth info

- object
  - `tiers` TierPricing
    - `prototype` object
      - `price` string
      - `lease_days` integer, nullable: null (kygit-handoff D4) — prototype is a one-time $0.10 testnet payment that never expires. See `lease`.
      - `lease` 'perpetual' | 'leased': 'perpetual' means the tier never expires and is never scheduler-advanced (kygit-handoff D4). Prototype is the only perpetual tier.
      - `storage_bytes` integer: Pooled app-storage quota in bytes — a round decimal constant (250 MB). The human label is `storage`.
      - `storage` string: storage_bytes as a human string, derived from the constant so the number and the label never disagree.
      - `source_bytes` integer: kygit-handoff D4 — the org-pooled vault-bytes quota, a SEPARATE limit from storage_bytes. 1 GB on prototype (free floor: 1 GB of encrypted vaults, unlimited repos). The human label is `source`.
      - `source` string: source_bytes as a human string.
      - `custom_domains` boolean: false on prototype: connecting a NEW custom domain needs hobby or team (403 TIER_FEATURE_REQUIRED). Managed *.run402.com / *.run402.app subdomains are free on every tier, and a domain the organization already holds is never gated.
      - `api_calls` integer
      - `max_functions` integer
      - `description` string
    - `hobby` object
      - `price` string
      - `lease_days` integer
      - `lease` 'perpetual' | 'leased'
      - `storage_bytes` integer
      - `storage` string
      - `source_bytes` integer: kygit-handoff D4 — the org-pooled vault-bytes quota. 10 GB on hobby.
      - `source` string
      - `custom_domains` boolean: true: custom domains are included.
      - `api_calls` integer
      - `max_functions` integer
      - `description` string
    - `team` object
      - `price` string
      - `lease_days` integer
      - `lease` 'perpetual' | 'leased'
      - `storage_bytes` integer
      - `storage` string
      - `source_bytes` integer: kygit-handoff D4 — the org-pooled vault-bytes quota. 50 GB on team.
      - `source` string
      - `custom_domains` boolean: true: custom domains are included.
      - `api_calls` integer
      - `max_functions` integer
      - `description` string
  - `auth` object
    - `method` string
    - `headers` string[]
    - `message_format` string

---

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