---
title: "List plans"
method: GET
path: "/api/v1/plans"
tags: ["Plans & line generation"]
---

# List plans

`GET /api/v1/plans`

## Request

- Base URL: `https://hproxy.com`
- URL: `https://hproxy.com/api/v1/plans`
- Auth: API key in header `X-API-Key`

Your active plans: residential GB balances and dedicated allocations. The `id` is what you pass to the endpoints below; `label` is your own tag (see PATCH), `null` until you set it. `productId` is the catalog id you ordered (`residential-lite`, `residential-premium`, …) and the field to branch on; `product` is our internal family name, kept for compatibility, and it can change when we move a product to a new pool. `dataGbTotal` and `dataGbRemaining` here are the usage sync's reading, taken about every 30 minutes (a plan bought moments ago shows its full balance until the next pass); `GET /plans/{id}` refreshes them from the network on the call and carries `usageAsOf`. The network enforces every plan's cap itself, in real time.

## Response `200`

Success

- object

## Other responses

- `400`: Invalid input. The body names the field and the accepted set.
- `401`: Missing or invalid API key.
- `429`: Rate limited. Retry after the delay in the response.

---

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