ProxioDocs
API Reference

Proxio API

The Proxio REST API gives you one base URL, one auth scheme, one response envelope, cursor pagination, idempotent writes, signed webhooks, and an OpenAPI 3.1 document. Manage services, credentials, usage, orders, and proxy lists programmatically.

The Proxio API is a single, coherent control-plane REST API. It covers the day-to-day work: list your services, mint proxy credentials, generate ready-to-use proxy lists, read usage, place orders and renewals, and receive signed webhooks when things change. A handful of account operations stay in the dashboard, listed under what the API does not cover.

It is built to be predictable. One base URL, one authentication scheme, one response envelope, one error taxonomy, cursor pagination on every list that can grow, documented rate limits, idempotent writes, and an OpenAPI 3.1 document you can feed straight into codegen.

Base URL

Every endpoint lives under a single host and version prefix:

https://dashboard.proxio.net/api/v1

All requests are HTTPS only, send and receive application/json (UTF-8), and carry your API key in the Authorization header. The one documented exception is GET /services/{id}/proxy-list with format=txt or format=csv, which returns text/plain or text/csv.

Endpoint paths in these docs (for example GET /services) are written relative to that base URL; code samples build full URLs from a BASE constant. The discovery route is a GET on the base URL itself.

The envelope at a glance

Every successful response wraps its payload in a data field, with an optional meta object that always carries a request_id and, for paginated lists, a next_cursor:

{
  "data": { "id": "clpkg_2a9x", "category": "RESIDENTIAL", "status": "active" },
  "meta": { "request_id": "req_8Ke2jP4mQ" }
}

Every error uses the same envelope in reverse, with a stable machine-readable code, a human message, a deep link to the docs, and the request_id to quote to support:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "quantity_gb must be an integer >= 1.",
    "doc_url": "https://docs.proxio.net/docs/api/errors#validation_error",
    "request_id": "req_8Ke2jP4mQ",
    "details": [{ "field": "quantity_gb", "issue": "too_small", "min": 1 }]
  }
}

See Errors for the complete catalog and Pagination for the cursor model.

Use with an AI assistant

These docs are built to be handed straight to an AI coding assistant. Point it at the machine-readable sources below and ask it to write the integration, the whole API surface is available in a form an LLM can ingest in one fetch.

SourceURLUse it for
llms.txthttps://docs.proxio.net/llms.txtA concise, link-based map of every docs page.
llms-full.txthttps://docs.proxio.net/llms-full.txtThe full text of every page concatenated into one file, ideal to paste or feed as context.
OpenAPI 3.1https://dashboard.proxio.net/api/v1/openapi.jsonThe canonical machine-readable spec for codegen and typed clients.

Give your assistant one of these URLs and a plain-English goal. A prompt like this is usually enough:

Here is the Proxio API spec: https://dashboard.proxio.net/api/v1/openapi.json
And the full docs: https://docs.proxio.net/llms-full.txt

Write a Python client that:
- authenticates with my pxo_ key from the PROXIO_API_KEY env var
- generates 500 sticky US residential proxy lines and rotates to a fresh
  session every 100 requests
- honors 429s using the Retry-After header

Use the documented endpoints and the { data, meta } / { error } envelope exactly.

Keep the assistant accurate

Tell your assistant to branch on the error code (not the message), pass meta.next_cursor back verbatim for pagination, and send an Idempotency-Key on writes. Every rule it needs is in /llms-full.txt, and where an example ever disagrees with the OpenAPI document, the spec wins.

Why this API

GuaranteeWhat it means for you
One auth schemeA single Authorization: Bearer pxo_… key, SHA-256 hashed, scoped, revocable, with an optional IP allowlist. No second token, no second domain.
Cursor pagination where it mattersEvery list that can grow without bound uses ?limit&cursor and returns meta.next_cursor / meta.has_more. One loop works everywhere it's used, services, orders, transactions, top-ups, webhooks and their delivery log, API keys. Small bounded lists return a full array instead, see Pagination.
Idempotency on writesSend an Idempotency-Key and a retried request never double-charges or double-creates. Required on money moves, accepted on the writes listed in Idempotency.
Signed webhooksOutbound HMAC-signed events (X-Proxio-Signature) so you can react to orders, usage thresholds, and expirations without polling.
OpenAPI 3.1A real, single-source machine-readable spec at /openapi.json for Postman, Insomnia, and SDK generators.
A written stability policyThe /v1 surface is additive-only. New fields never break you; removals get a /v2 and 12 months notice. See Versioning.

What the API does not cover

Some account operations live only in the dashboard. There is no /v1 endpoint for any of these:

Not in the APIWhere it lives
Support ticketsThe dashboard support section.
Blocked destinations (blocklists and block rules)The dashboard credential settings.
Rotation presetsThe dashboard proxy settings. Per-request rotation is still fully controllable through the username grammar.

Everything else in the dashboard, including wallet top-ups, API key management, and the auto-renewal toggle on a service, has an API equivalent.

Start here

Conventions

On this page