Skip to content

Analytics and reconciliation

Analytics turns completed proxy activity into operational and commercial evidence. Use it to answer what consumed traffic, which destinations and targeting combinations were used, where failures occurred, and whether your local billing projection still matches the platform.

OBSERVABILITY MODELA completed proxy request becomes several useful views
01Proxy requestTraffic, routing, identity, and connection context
02Request snapshotOne normalized record after the request or tunnel closes
03ClickHouse + RedisHistorical request rows and current connection counters
04Public API viewsOverall, domains, feed, logs, transactions, connections
IDENTITY

User · reseller · package · ledger · username

TRAFFIC

Bytes · request ID · timestamp · active connections

DESTINATION

Hostname · client IP · proxy server IP · protocol · method

ROUTING

Pool · country · region · city · ASN · sticky session

After a request or tunnel closes, the proxy builds an analytics snapshot from the authenticated user and the actual route it handled. A valid historical record includes identity, client, destination, and provider context; live connection counts are stored separately for the connections view.

Traffic and time

Request ID, transferred bytes, timestamp, protocol, method, cluster, and the number of established connections observed for the request.

Commercial scope

User, reseller, package, ledger, package alias, and proxy username connect a request back to the order and customer that consumed it.

Destination and routing

Destination hostname, client and proxy-server IPs, selected pool, requested country, region, city, ASN, and sticky-session presence.

Failure context

Error logs add HTTP status, internal proxy error code, message, severity, server, targeting, and session context for request-level diagnosis.

The proxy also records provider identity internally. The current public request feed exposes the selected pool, not the underlying provider. It returns ASN as a result field, but the public query contract does not currently offer ASN or ISP filters.

Choose the view that answers your question

Section titled “Choose the view that answers your question”
QuestionEndpointReturned viewWhy it is useful
How many connections are active now?GET /analytics/connectionsUser, package, server IP, connection countCapacity dashboards, concurrency support, and detecting abandoned clients
How did traffic change over time?GET /analytics/overallTime buckets with bytes and request countUsage charts, anomaly detection, customer summaries, and closed-window reconciliation
Which destinations consume the most?GET /analytics/domainsHostname, requests, and bytesCost concentration, customer behavior, allow/block policy reviews, and abuse investigation
What happened on an individual request?GET /analytics/feedRequest-level identity, traffic, destination, protocol, pool, geo, ASN, and session dataReproducing routing behavior and explaining a customer’s traffic record
Why did requests fail?GET /analytics/logsStatus, proxy error code/message, identity, destination, geo, and timestampSupport triage, provider incident correlation, and retry-policy tuning
Who allocated or consumed data?GET /analytics/{id}/transactionsSender, recipient, type, amount, package, details, and timeBilling audit trails and tracing reseller-to-sub-user data movements

overall is the primary chart and reconciliation surface. It fills missing buckets with zeroes and returns both data and requests. Short windows use hour-level buckets; longer windows use daily buckets. Always store the requested start, end, and IANA timezone next to your own report so the same commercial period can be reproduced.

Use feed when you need evidence at request granularity and domains when you need a ranked aggregate. Feed rows can distinguish customers, packages, and ledgers; show the destination and client/proxy IPs; and explain the protocol, method, pool, targeting, ASN, and sticky-session usage associated with the byte count.

Domain aggregation is better for questions such as “which destinations generated 70% of traffic?” without downloading every request row. Treat destination hostnames as potentially sensitive customer data.

connections is an operational snapshot rather than a historical traffic report. Compare its per-server counts with package concurrency limits to distinguish real capacity pressure from a historical usage spike.

logs reads proxy warning/error records, not successful requests. Filter it by protocol, error code, package, ledger, account, or location where supported. Correlate a log row with feed data using time, request context, identity, and destination instead of exposing full proxy credentials in a support ticket.

Transactions describe data movements and consumption records with sender/recipient scope. For non-staff callers, sender and recipient filters are constrained to the authenticated account. Use this view as an audit trail around allocations; use overall and the durable order/ledger state for traffic totals.

Every analytics request is evaluated inside the authenticated account boundary:

  • a regular user can query only its own user_id;
  • a reseller can query its own user or one of its direct sub-users;
  • a reseller may request its own reseller_id for a reseller-wide view where the endpoint supports it;
  • platform administrators can use broader scopes, but customer integrations should not depend on administrative access.
Filter groupValuesTypical use
Reporting windowstart, end, timezoneReproducible billing and operational periods
Paginationlimit, offsetBounded feed, log, domain, and transaction exports
Commercial scopeuser_id, reseller_id, package_id, ledger_idOne customer, product, purchase pool, or reseller portfolio
Request detailshostname, protocolDestination investigation and HTTP/SOCKS comparison
Targetingcountry, region, cityInventory and routing-quality analysis
Failure and movementerror_code, sender_id, recipient_id, typeError clustering and allocation audits

Not every endpoint accepts every filter. Region requires country, and city requires country and region. Use the Analytics operations in the API Reference as the exact per-endpoint contract.

Protect gross margin

Compare traffic by customer, package, and destination with the commercial plan to identify costly workloads and plans priced below their usage shape.

Improve support

Move from “the proxy failed” to a bounded request, time, protocol, location, pool, and error code that engineering can reproduce.

Plan capacity

Combine active connections with traffic trends to detect concurrency saturation separately from byte-volume growth.

Reconcile resellers

Compare sub-user activity and transaction history with your local customer, allocation, invoice, and webhook projections.

CLOSED-WINDOW CONTROL

Repair event-driven state with analytics

  1. Consume signed webhook batches

    Verify the raw body, deduplicate delivery, and update a provisional balance projection.

  2. Close one reporting window

    Persist its start, end, timezone, account scope, and package or ledger filters.

  3. Query aggregate traffic

    Read bytes and request counts after the selected window is complete.

    GET /analytics/overall
  4. Drill into differences

    Use transactions, feed, domains, and logs to find missing mappings, duplicate processing, or unexpected traffic.

  5. Correct and audit

    Repair the local projection and retain the source window and reason for every correction.