---
title: "Plan policies and pricing parameters"
method: GET
path: "/plans"
tags: ["Billing"]
---

# Plan policies and pricing parameters

`GET /plans`

## Request

- Base URL: `https://console-api.blockvectra.com/v1`
- URL: `https://console-api.blockvectra.com/v1/plans`
- Auth: none required

Public plan policies, pricing, method CU weights, reset promotions, free new-key default CU limits (key_defaults), and paid-account lower bounds (paid_key_minimums, when published). Requires no authentication. GET /resets returns account-specific reset chances.

## Response `200`

Currently active free plan, reset promotions, default key rate limits, and pricing policies.

- PlansResponse
  - `free` FreePlanView, required
    - `signup_units` integer, required: Sign-up grant quota for new users (units).
    - `monthly_units` integer, required: Balance replenishment target (units) at the end of a usage-started window; not a UTC calendar-month grant. Remaining credit is not accumulated or taken away.
    - `window_days` integer, required: Usage-started window length in days (currently 30); starts at the first settled usage period, not account creation or UTC month start.
    - `max_calls_per_sec` integer, required: Per-second call limit for free plan. Token bucket capacity and refill rate equal this value, shared across all keys, chains, and Data API for the account.
  - `promo` ResetPromoView, required
    - `type` 'reset', required: Promotion type; currently reset only.
    - `period` 'month': Present only for monthly rounds (omitted otherwise, not null): chances issued per UTC calendar month, valid from `max(first day of month 00:00 UTC, account_creation_time)` until that timestamp plus one calendar month; `valid_days` is `null`, `issued_at` marks start of first month.
    - `chances_per_account` integer, required: Number of reset chances granted to each eligible account in this round.
    - `valid_days` integer, nullable, required: Validity in days from `max(issued_at, account_creation_time)`; `null` does not imply a monthly round (which has `period` without fixed days, issued per calendar month) — a regular round omitting `valid_days` (lacking `period` key) is also `null`, defaulting to one calendar month validity. Check `period` presence to distinguish.
    - `reset_to_units` integer, required: Target balance to replenish to upon reset (units).
    - `issued_at` string, date-time, required: RFC 3339 UTC, second precision, ending in `Z` (`2026-09-26T08:00:00Z`); no fractional seconds, without `+00:00` timezone offsets.
    - `ends_at` string, date-time, required: RFC 3339 UTC, second precision, ending in `Z` (`2026-09-26T08:00:00Z`); no fractional seconds, without `+00:00` timezone offsets.
    - `next_issue_at` string, date-time: RFC 3339 UTC, second precision, ending in `Z` (`2026-09-26T08:00:00Z`); no fractional seconds, without `+00:00` timezone offsets.
    - `next_period` 'month': Present only when `next_issue_at` originates from a monthly round (omitted otherwise, not null).
  - `key_defaults` KeyDefaultsView, required
    - `cu_per_sec` integer, required: Free new-key default CU per-second rate limit.
    - `burst_cu` integer, required: Free new-key default burst CU capacity, also capping sum of weights in a single request.
  - `paid_key_minimums` PaidKeyMinimumsView, required: Paid-account CU lower bounds, not custom account limits. Paid eligibility requires a paid top-up; gifts alone do not qualify. Existing higher limits are preserved.
    - `cu_per_sec` integer, required: Minimum paid-key refill rate in CU per second.
    - `burst_cu` integer, required: Minimum paid-key burst capacity in CU.
  - `pricing` PricingPlanView, required
    - `units_per_usd` integer, required: Number of units per 1 USD.
    - `cu_per_unit` integer, required: Number of Compute Units (CU) per 1 unit.
    - `min_topup_usd` number, required: Minimum top-up amount (USD).
    - `push_free_addresses` integer, required: Free address allowance per account per UTC day, shared by all subscription groups regardless of plan. For each group, count its maximum address count while online during that day; allocate the allowance in ascending group ID order. The same address in two groups counts twice; the number of chains in a group does not multiply its address count. A group offline or deleted for the entire day contributes nothing. For each group, the remaining count after its share of the allowance is multiplied by the `push.address_day` CU weight in `method_weights`. The current configured allowance comes from the same pricing policy used for the address-day charge; it is not an account capacity limit or a separate allowance per group.
  - `method_weights` MethodWeightView[], required: CU weight per call, by method across all chains; includes JSON-RPC methods and Data API `data.<op>`; method availability across chains can be queried via data plane `GET /v1/chains` and `/v1/status`. Sorted by method, including `*` row for unlisted methods.
    - `method` string, required: Exact JSON-RPC method name, prefix rule ending with `*`, or `*` (weight for all unlisted methods).
    - `cu_weight` integer, required: Compute Units (CU) metered per call for this method.

## Other responses

- `429`: Rate limit exceeded.
- `500`: Internal server error.

---

[API](https://skmtc.dev/blockvectra/apis/blockvectra-console-api.md) · [All operations](https://skmtc.dev/blockvectra/apis/blockvectra-console-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blockvectra/apis/blockvectra-console-api/revisions/28c91298f433?raw)
