---
title: "List proxy packages"
method: GET
path: "/v1/proxy/packages"
tags: ["Packages"]
---

# List proxy packages

`GET /v1/proxy/packages`

## Request

- Base URL: `https://api.platform.soax.com`
- URL: `https://api.platform.soax.com/v1/proxy/packages`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/soax/apis/soax-api/docs/v1/proxy/packages/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve a paginated list of proxy packages accessible to the API key. If the key is restricted to specific packages, only those are returned. Use cursor-based pagination: pass the `next_cursor` value from one response as the `cursor` parameter of the next request until `has_more` is `false`. Traffic values are in bytes.

Requires the `proxy:packages:read` scope.

## Query parameters

- `cursor` string, nullable: Opaque pagination cursor from a previous response's `next_cursor`. Omit for the first page.
- `limit` integer: Number of packages per page (1–100).
- `status` 'active' | 'deleted' | 'limited' | 'paused' | 'suspended', nullable: Filter by package status. A single value only — comma-separated lists are rejected with 400.

## Response `200`

Successful Response

- ProxyPackagesListResponse: Public response model for listing proxy packages with pagination.
  - `data` ProxyPackageResponse[], required
    - `id` string, required
    - `name` string, required
    - `status` string, required: Display status: `active`, `paused` (manually paused), `limited` (traffic limit reached), `suspended`, or `deleted`.
    - `status_reason` string, nullable: Why the package is not active: `user_paused`, `traffic_limit_reached`, `out_of_credits`, `account_suspended`, `plan_limit_exceeded`, or `null`.
    - `created_at` string, date-time, nullable
    - `types` ProxyPackageType[]
    - `tiers` integer[]
    - `allowed_countries` string[], nullable
    - `traffic_limit` integer, nullable
    - `traffic_spent` integer, nullable
    - `traffic_left` integer, nullable, required: Calculate the remaining traffic for the package.
  - `has_more` boolean, required
  - `next_cursor` string, nullable

## Other responses

- `400`: A parameter value is invalid. Depending on which validation layer rejects the request, the message is under `detail` (endpoint-level checks) or `error` (service-level checks); read `detail ?? error`. The message names the parameter and lists valid values where applicable.
- `401`: Missing, invalid, or revoked API key.
- `403`: The API key does not carry the scope this endpoint requires.
- `422`: Validation Error
- `429`: Rate limit exceeded (5 requests/second per API key, 500 requests/minute per IP). The response includes `Retry-After` (seconds), `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` (Unix time) headers — wait `Retry-After` seconds and retry.

---

[API](https://skmtc.dev/soax/apis/soax-api.md) - [All operations](https://skmtc.dev/soax/apis/soax-api/llms.txt) - [OpenAPI document](https://skmtc.dev/soax/apis/soax-api/revisions/2abdaa934277?raw)
