Skip to content
Docs menu

Account

Usage

Check this month's credits from code, and break usage down per API key, project, day or endpoint. Free: it costs 0 credits.

GET https://api.104-236-84-15.sslip.io/v1/usage
curl
curl "https://api.104-236-84-15.sslip.io/v1/usage" \
  -H "Authorization: Bearer $PAGETEER_API_KEY"
JavaScript (fetch)
const res = await fetch('https://api.104-236-84-15.sslip.io/v1/usage', {
  headers: { Authorization: `Bearer ${process.env.PAGETEER_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data, res.headers.get('x-credits-remaining'));
Python (requests)
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['PAGETEER_API_KEY']}"}
res = requests.get(
    "https://api.104-236-84-15.sslip.io/v1/usage",
    headers=headers,
    params={},
    timeout=120,
)
res.raise_for_status()
print(res.json(), res.headers["x-credits-remaining"])

Response

200 OK
{
  "period": "2026-10",
  "plan": "free",
  "granted": 1000,
  "used": 212,
  "remaining": 788,
  "overage_cap": 0,
  "billable": 0,
  "spend_limit_cents": 0,
  "estimated_cost_cents": 0,
  "resets_at": "2026-11-01T00:00:00.000Z"
}
Usage response fields
NameTypeDescription
periodstringThe current period: the calendar month in UTC, YYYY-MM.
plan"free" | "payg" | "invoiced"Billing mode: free, pay as you go (card) or invoiced.
grantedintegerFree credits this month (1,000 on every mode).
usedintegerCredits used this month, free and billable.
remainingintegerFree credits left: max(0, granted − used). Same as the x-credits-remaining header.
overage_capintegerBillable credits your spend limit allows beyond the free credits. 0 means requests stop at the free credits.
billableintegerCredits used beyond the free credits: max(0, used − granted).
spend_limit_centsintegerYour monthly spend limit in US cents (0 on the free mode).
estimated_cost_centsintegerWhat the billable credits cost so far, in US cents, on the usage rates.
resets_atstringISO time the next period starts (the 1st, 00:00 UTC).

Credits you can still spend this month = granted + overage_cap − used. A request that does not fit is refused with 402 and costs nothing; its error.reason says why (see 402 reasons).

Usage by key, project, day or endpoint

Pass from and to to get totals for any range of days, and group to break them down in groups. The fields above stay the same and always describe the current month. Ranges read the daily usage totals we keep for 400 days, so they reach further back than the 30-day request log.

Usage query parameters
NameTypeDescription
group"key" | "project" | "day" | "endpoint"How to break usage down: per API key, per project label (keys without one are grouped as null, "No project"), per UTC day, or per endpoint. Without it there is no groups field.
fromYYYY-MM-DDFirst UTC day to include. Default: 1st of this month.
toYYYY-MM-DDLast UTC day to include. The range is inclusive and covers at most 400 days; a longer or reversed range, or an invalid date, is a 400 invalid_request. Default: today.
curl
curl "https://api.104-236-84-15.sslip.io/v1/usage?group=key&from=2026-09-01&to=2026-09-30" \
  -H "Authorization: Bearer $PAGETEER_API_KEY"
JavaScript (fetch)
const res = await fetch(`https://api.104-236-84-15.sslip.io/v1/usage?${new URLSearchParams({"group":"key","from":"2026-09-01","to":"2026-09-30"})}`, {
  headers: { Authorization: `Bearer ${process.env.PAGETEER_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
console.log(data, res.headers.get('x-credits-remaining'));
Python (requests)
import os
import requests

headers = {"Authorization": f"Bearer {os.environ['PAGETEER_API_KEY']}"}
res = requests.get(
    "https://api.104-236-84-15.sslip.io/v1/usage",
    headers=headers,
    params={
        "group": "key",
        "from": "2026-09-01",
        "to": "2026-09-30",
    },
    timeout=120,
)
res.raise_for_status()
print(res.json(), res.headers["x-credits-remaining"])
200 OK (group=key, other fields as above)
{
  "period": "2026-10",
  …
  "from": "2026-09-01",
  "to": "2026-09-30",
  "group": "key",
  "totals": { "requests": 2210, "credits": 7040, … },
  "groups": [
    {
      "key": "66f1c0ffee0123456789abcd",
      "key_name": "Production",
      "key_prefix": "pk_live_AbCd",
      "project": "Property Radar",
      "totals": {
        "requests": 1840,
        "credits": 6215,
        "errors": 37,
        "blocked": 12,
        "proxy_bytes": 418230112,
        "browser": 1105,
        "http": 702,
        "ms": 5122840
      }
    }
  ]
}
Usage range fields
NameTypeDescription
from, tostringThe range used (defaults filled in). Present when you passed group, from or to, together with totals.
groupstringThe group you asked for.
totalsobjectEverything in the range, with the same fields as a group’s totals below.
groups[].keystring | nullThe group: an API key id (group=key), a project label (null for keys without one), a day YYYY-MM-DD, or an endpoint name (render, search, crawl…). Days come in date order; the other groups by credits, then requests, highest first.
groups[].key_name, key_prefixstringWith group=key: the key's name and display prefix.
groups[].projectstring | nullWith group=key or project: the project label.
totals.requestsintegerRequests made (crawl pages and batch items count one each).
totals.creditsintegerCredits charged.
totals.errorsintegerRequests we answered with a status of 400 or more.
totals.blockedintegerRequests the site blocked.
totals.proxy_bytesnumberBytes through the residential proxy (your own, normally).
totals.browser, totals.httpintegerFetches served in browser mode and in HTTP mode.
totals.msintegerSum of request durations in milliseconds.

Keys and projects are reported under each key's current name and project, so relabelling a key moves its history with it. Requests made with test keys are included, with 0 credits, 0 proxy bytes and no browser or HTTP fetches. Days are UTC, and today's numbers update as requests finish.

In the dashboard

The Usage page shows the same data for any period up to 400 days: totals, a daily chart, a table by project with each key underneath, an endpoint breakdown and a CSV export, filterable by project, key and live or test. Enter what your proxy provider charges per GB there to see an estimated proxy cost next to each key and project.

Errors

Usage errors
StatusCodeWhenChargedWhat to do
400invalid_requestA parameter is missing, invalid or unknown (the message and error.issues name it).NoFix the request; retrying it unchanged fails again.
401invalid_api_keyNo key, an unknown key, or a revoked or expired key.NoCheck the Authorization header and the key on the API keys page.
403org_suspendedThe account is suspended.NoContact support.
429rate_limitedOver your requests per minute, or too many requests to one site across the platform right now.NoWait Retry-After seconds, then back off with jitter.
500 / 502 / 503internal_errorSomething failed on our side (rendering engine, LLM extraction or the API itself), or the rendering engine is at capacity (503, Retry-After: 5).NoRetry with backoff (honor Retry-After); quote x-request-id if it persists.