# Account — QuantumProxies.io API

> Account endpoints of the QuantumProxies.io API with parameters, request and response examples in cURL, Python, Node.js and PHP. Part of https://quantumproxies.io/docs/index.md.

Base URL `https://api.quantumproxies.io/v1` · Auth `Authorization: Bearer qp_live_…` · HTML: https://quantumproxies.io/docs/ · OpenAPI: https://quantumproxies.io/docs/openapi.json · All endpoints: https://quantumproxies.io/docs/llms.txt · This file: https://quantumproxies.io/docs/account.md

_Generated from openapi.json v2026-10-07 on 2026-10-07; prices and limits as of 2026-10-07_

## Account

Usage, billing status and platform settings.

### Per-day usage and cost

`GET /scraper/usage`

**Price:** No charge.  
**Rate limit:** Per API key, by tier (see Rate limits and tiers).  
[Try it in the Playground](https://app.quantumproxies.io/data-api/playground) · [Markdown for this group](https://quantumproxies.io/docs/account.md)

Request counts (total and per query type), proxy bandwidth, AI token cost and billed vs free-tier spend per UTC day for the calling key's account, read from the daily aggregation. Free; not subject to the Data API kill switch.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `days` | query | integer | no |  Default `30`. |

#### Examples

**curl**

```bash
curl -X GET 'https://api.quantumproxies.io/v1/scraper/usage' \
  -H 'Authorization: Bearer qp_live_YOUR_API_KEY'
```

**Python (requests)**

```python
import requests

r = requests.get(
    'https://api.quantumproxies.io/v1/scraper/usage',
    headers={"Authorization": "Bearer qp_live_YOUR_API_KEY"},
    timeout=120,
)
data = r.json()
if data["type"] != "response":
    raise SystemExit(data["message"])
print(data["payload"])
```

**Node (fetch)**

```javascript
const res = await fetch("https://api.quantumproxies.io/v1/scraper/usage", {
  method: "GET",
  headers: {
    Authorization: "Bearer qp_live_YOUR_API_KEY"
  }
});
const data = await res.json();
if (data.type !== "response") throw new Error(data.message);
console.log(data.payload);
```

**PHP (curl)**

```php
<?php
$ch = curl_init('https://api.quantumproxies.io/v1/scraper/usage');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer qp_live_YOUR_API_KEY'],
]);
$raw = curl_exec($ch);
curl_close($ch);
$data = json_decode($raw, true);
if ($data['type'] !== 'response') { throw new RuntimeException($data['message']); }
print_r($data['payload']);
```

#### Responses

- `200` — Usage report.
- `401` — Missing, malformed, unknown, disabled or expired API key; or the account is not active.
- `429` — Key rate limit (hourly window), plan per-minute budget, browser-render concurrency, or pool capacity. Back off on Retry-After.

Example `200` response:

```json
{
  "type": "response",
  "message": "Scraper usage",
  "payload": {
    "days": [
      {
        "date": "2026-10-06",
        "requests": 143,
        "by_type": {
          "extract": 120,
          "google": 20,
          "map": 3
        },
        "proxy_kb": 61230,
        "ai_cost_usd": 0,
        "billed_usd": 0,
        "free_usd": 0.0375
      }
    ],
    "totals": {
      "requests": 143,
      "by_type": {
        "extract": 120,
        "google": 20,
        "map": 3
      },
      "proxy_kb": 61230,
      "billed_usd": 0,
      "free_usd": 0.0375
    },
    "period_days": 30
  },
  "pagination": {}
}
```

Example `401`:

```json
{
  "type": "error",
  "message": "Missing or invalid Authorization header. Use: Authorization: Bearer qp_live_YOUR_API_KEY"
}
```

Example `429`:

```json
{
  "type": "error",
  "message": "Rate limit exceeded. Resets in 23 minutes.",
  "payload": {
    "rateLimit": 1200,
    "requestCount": 1200,
    "resetAt": "2026-10-07T15:00:00.000Z"
  }
}
```

Try it: https://app.quantumproxies.io/data-api/playground

### Billing status and your price list

`GET /scraper/billing`

**Price:** No charge.  
**Rate limit:** Per API key, by tier (see Rate limits and tiers).  
[Try it in the Playground](https://app.quantumproxies.io/data-api/playground) · [Markdown for this group](https://quantumproxies.io/docs/account.md)

Current price list with your tier's discount applied (keyed like pricing.json), monthly free allowance and what is left of it, wallet balance, active tier, billing mode and the per-minute limits each mode carries. Lets a client or an agent budget its calls without a dashboard round-trip. Free; not subject to the Data API kill switch.

#### Examples

**curl**

```bash
curl -X GET 'https://api.quantumproxies.io/v1/scraper/billing' \
  -H 'Authorization: Bearer qp_live_YOUR_API_KEY'
```

**Python (requests)**

```python
import requests

r = requests.get(
    'https://api.quantumproxies.io/v1/scraper/billing',
    headers={"Authorization": "Bearer qp_live_YOUR_API_KEY"},
    timeout=120,
)
data = r.json()
if data["type"] != "response":
    raise SystemExit(data["message"])
print(data["payload"])
```

**Node (fetch)**

```javascript
const res = await fetch("https://api.quantumproxies.io/v1/scraper/billing", {
  method: "GET",
  headers: {
    Authorization: "Bearer qp_live_YOUR_API_KEY"
  }
});
const data = await res.json();
if (data.type !== "response") throw new Error(data.message);
console.log(data.payload);
```

**PHP (curl)**

```php
<?php
$ch = curl_init('https://api.quantumproxies.io/v1/scraper/billing');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer qp_live_YOUR_API_KEY'],
]);
$raw = curl_exec($ch);
curl_close($ch);
$data = json_decode($raw, true);
if ($data['type'] !== 'response') { throw new RuntimeException($data['message']); }
print_r($data['payload']);
```

#### Responses

- `200` — Billing status.
- `401` — Missing, malformed, unknown, disabled or expired API key; or the account is not active.
- `429` — Key rate limit (hourly window), plan per-minute budget, browser-render concurrency, or pool capacity. Back off on Retry-After.

Example `200` response:

```json
{
  "type": "response",
  "message": "Billing status",
  "payload": {
    "billing_enabled": true,
    "billed": true,
    "balance": 12.5,
    "tier": {
      "key": "payg",
      "name": "Pay as you go",
      "discount_pct": 0,
      "rate_limit_per_min": 20
    },
    "billing_mode": {
      "preference": "free_first",
      "effective": "free_first",
      "available": true,
      "free_first_rate_limit_per_min": 20,
      "balance_rate_limit_per_min": 300,
      "effective_rate_limit_per_min": 20
    },
    "free_monthly_usd": 2,
    "free_remaining_usd": 1.62,
    "ai_token_markup": 2,
    "prices_usd": {
      "extract": 0.0002,
      "extract_render": 0.001,
      "serp": 0.0005,
      "serp_render": 0.002,
      "map": 0.0005,
      "seo_audit": 0.0012,
      "crawl_page": 0.0003,
      "batch_url": 0.0002,
      "collector_result": 0.002
    }
  },
  "pagination": {}
}
```

Example `401`:

```json
{
  "type": "error",
  "message": "Missing or invalid Authorization header. Use: Authorization: Bearer qp_live_YOUR_API_KEY"
}
```

Example `429`:

```json
{
  "type": "error",
  "message": "Rate limit exceeded. Resets in 23 minutes.",
  "payload": {
    "rateLimit": 1200,
    "requestCount": 1200,
    "resetAt": "2026-10-07T15:00:00.000Z"
  }
}
```

Try it: https://app.quantumproxies.io/data-api/playground

### No-key MCP trial settings

`GET /mcp/trial-config`

**Price:** No charge.  
**Rate limit:** No rate limit.  
[Try it in the Playground](https://app.quantumproxies.io/data-api/playground) · [Markdown for this group](https://quantumproxies.io/docs/account.md)

What the keyless trial of the hosted MCP endpoint allows right now for a brand: whether it is on, calls per client address per UTC day, calls across all addresses per day, and which tools it may run. Read by the hosted MCP servers once a minute; nothing secret in it, so it needs no API key and is cacheable for 60 s. The brand comes from `?brand=` or, failing that, from the request host.

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `brand` | query | string: `QP`, `QD` | no | QP = QuantumProxies, QD = QuanticData. Defaults to the brand of the host you call. |

#### Examples

**curl**

```bash
curl -X GET 'https://api.quantumproxies.io/v1/mcp/trial-config'
```

**Python (requests)**

```python
import requests

r = requests.get(
    'https://api.quantumproxies.io/v1/mcp/trial-config',
    timeout=120,
)
data = r.json()
if data["type"] != "response":
    raise SystemExit(data["message"])
print(data["payload"])
```

**Node (fetch)**

```javascript
const res = await fetch("https://api.quantumproxies.io/v1/mcp/trial-config", {
  method: "GET"
});
const data = await res.json();
if (data.type !== "response") throw new Error(data.message);
console.log(data.payload);
```

**PHP (curl)**

```php
<?php
$ch = curl_init('https://api.quantumproxies.io/v1/mcp/trial-config');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
]);
$raw = curl_exec($ch);
curl_close($ch);
$data = json_decode($raw, true);
if ($data['type'] !== 'response') { throw new RuntimeException($data['message']); }
print_r($data['payload']);
```

#### Responses

- `200` — Trial settings.

Example `200` response:

```json
{
  "type": "response",
  "message": "ok",
  "payload": {
    "brand": "QD",
    "enabled": true,
    "perIpPerDay": 5,
    "perDay": 300,
    "tools": [
      "scrape",
      "search",
      "search_and_read",
      "map",
      "seo_audit",
      "list_collectors",
      "collector_run_status",
      "proxy_locations"
    ]
  }
}
```

Try it: https://app.quantumproxies.io/data-api/playground
