Skip to main content
GET
/
api
/
v2
/
order
/
usage
/
{order_id}
Get Usage Statistics
curl --request GET \
  --url https://dashboard.statproxies.com/api/v2/order/usage/{order_id}
import requests

url = "https://dashboard.statproxies.com/api/v2/order/usage/{order_id}"

response = requests.get(url)

print(response.text)
const options = {method: 'GET'};

fetch('https://dashboard.statproxies.com/api/v2/order/usage/{order_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://dashboard.statproxies.com/api/v2/order/usage/{order_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://dashboard.statproxies.com/api/v2/order/usage/{order_id}"

req, _ := http.NewRequest("GET", url, nil)

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://dashboard.statproxies.com/api/v2/order/usage/{order_id}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://dashboard.statproxies.com/api/v2/order/usage/{order_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
{
  "response": "<string>",
  "order_id": "<string>",
  "period": "<string>",
  "usage": {},
  "usage.timeseries": [
    {}
  ],
  "usage.totals": {},
  "top_domains": [
    {}
  ]
}
Retrieve live proxy usage statistics for a datacenter order — the same data shown on the dashboard’s usage view.
Only available for datacenter orders. Residential and other product categories have no SquidAnalyzer source and return 400.

How It Works

Usage values are scraped live at request time from each child proxy server’s SquidAnalyzer report (no caching), aggregated across every server that hosts the order, and returned as a usage time series plus a list of the top requested domains. Because the data is fetched live, if a child server hosting the order is not currently producing SquidAnalyzer reports, its slice of usage is omitted (each per-server fetch has a 5s timeout and fails open). Totals therefore reflect only the servers that are reporting.

Request

Headers

HeaderValueRequired
AuthorizationBearer {your_api_key}Yes

Path Parameters

order_id
string
required
The order ID returned from order creation.

Query Parameters

period
string
default:"monthly"
The reporting granularity. One of daily, weekly, monthly.
  • daily — time series is keyed by hour ("00""23")
  • weekly — time series is keyed by day of week
  • monthly — time series is keyed by day of month ("01""31")
date
string
ISO date string selecting the reporting window (e.g. 2026-06-25). Defaults to today.

Example Requests

curl -X GET "https://dashboard.statproxies.com/api/v2/order/usage/sub_1rqjp3jb4g9i6pkhdwmkpjob" \
  -H "Authorization: Bearer {your_api_key}"
# Daily usage for a specific date
curl -X GET "https://dashboard.statproxies.com/api/v2/order/usage/sub_1rqjp3jb4g9i6pkhdwmkpjob?period=daily&date=2026-06-25" \
  -H "Authorization: Bearer {your_api_key}"

Response

Success Response

{
  "response": "success",
  "order_id": "sub_1rqjp3jb4g9i6pkhdwmkpjob",
  "period": "monthly",
  "usage": {
    "timeseries": [
      { "date": "01", "usage": 1024.55, "requests": 84213 },
      { "date": "02", "usage": 980.12, "requests": 79002 }
    ],
    "totals": {
      "bytes_in": 2152000000,
      "bytes_out": 2152000000,
      "requests": 163215
    }
  },
  "top_domains": [
    {
      "url": "example.com",
      "requests": 50213,
      "megabytesTransferred": "1.21",
      "firstVisit": "Jun 01, 12:03:11 AM 2026",
      "mostRecentVisit": "Jun 25, 09:44:52 PM 2026",
      "requestPercentage": "30.77"
    }
  ]
}

Response Fields

response
string
Status of the request.
order_id
string
The order the statistics are for.
period
string
The reporting granularity that was applied (daily, weekly, or monthly).
usage
object
The aggregated usage data.
usage.timeseries
array
Per-bucket usage. Each entry has a date key (hour, day of week, or day of month depending on period), usage (megabytes transferred for that bucket), and requests (the request/hit count for that bucket).
usage.totals
object
Aggregate totals across all reporting servers. bytes_in and bytes_out are raw byte totals; requests is the total hit count.
top_domains
array
The most-requested domains, sorted by request count (descending), limited to the top 100. requestPercentage is computed across the aggregated set.

Error Responses

400 Bad Request - Invalid Period

{
  "response": "error",
  "message": "Invalid period specified. Must be one of: daily, weekly, monthly"
}

400 Bad Request - Invalid Date

{
  "response": "error",
  "message": "Invalid date format"
}

400 Bad Request - Not a Datacenter Order

{
  "response": "error",
  "message": "Usage statistics are only available for datacenter proxies"
}

401 Unauthorized

{
  "message": "Invalid authenticated user"
}

404 Not Found

{
  "response": "error",
  "message": "Order not found"
}
{
  "response": "error",
  "message": "Order has no datacenter proxy username"
}

500 Internal Server Error

{
  "response": "error",
  "message": "Internal server error"
}

Notes

  • The key must have the order service scope. Each call is rate-limited per key and recorded in the audit log (service: order, action: read).
  • Data is fetched live with no caching, so response time depends on how many servers host the order.