Skip to content
Coritan Docs

View web proxy traffic

Read the requests your web proxies answered for a domain, by hour and by hostname, and how many the edge blocked or failed.

View as Markdown

Coritan's edge counts the requests each of your web proxies answers, hour by hour. Read the counts for a domain to see how busy the site is, which hostname takes the traffic, how much the WAF blocks and when the origin failed. A website's Overview tab shows the same figures under Traffic.

  • The domain, or a name under it, has a web proxy on your account (Manage a website's web proxy). A domain without one reads zero, and a deployment's domains are not counted here.
  • You need an access token or an account API key (Authentication). Every team role can read the counts.

The counts cover the domain and every hostname under it: example.com takes in shop.example.com, but not notexample.com. Each hostname is one web proxy.

requests
Every request the edge answered, blocked ones included.
blocked
Requests the edge refused with 403 or 429 to protect the website: the WAF, the website's own rules and settings, and rate limits (Protect a website with the WAF). They count in requests and status_4xx too.
bytes_in and bytes_out
What visitors sent to the edge, and what the edge sent back, in bytes.
status_2xx, status_3xx, status_4xx and status_5xx
Answers by status class. status_5xx counts the answers where the origin failed or the edge could not reach it.
websocket_connections
WebSocket connections the edge opened between a visitor and your origin.
latency_avg_ms
How long the edge took to answer a request, on average, in milliseconds. Each hour counts as much as its requests, and the value is null when there were no requests.

Some requests are not counted:

  • A request the edge answers with a challenge page. Once the visitor passes the challenge, their requests count.
  • While an edge is under attack, it keeps counting the requests it blocks and stops counting the ones it passes to your origin.
  • Deleting a web proxy deletes its counts.

The counts come in whole UTC hours, and the range ends with the current hour: 24 hours means the current hour and the 23 before it. A request appears in the counts within about two minutes, so the current hour fills in as it passes.

On the Free plan, the counts reach back 24 hours. Pro, Business and Enterprise reach back 30 days (How account plans work). While account plans do not apply to your account, every domain shows up to 30 days (Plans open in stages).

Every count is zero
Check hostnames in the answer. An empty list means that no web proxy of yours is on the domain or under it (Manage a website's web proxy). Otherwise, no request reached those web proxies in the range, or their counts have not arrived yet. Ask for a longer range.
The newest requests are missing
A request appears in the counts within about two minutes. Ask again a little later.
402 with entitlement_exceeded
Your plan shows the last 24 hours of traffic. Ask for hours of 24 or less, or move to a larger plan (Choose or change your account plan).
404 with You have no route with ID 9 under example.com.
The route_id is not one of your web proxies, or its hostname is not the domain or under it. Take the ID from hostnames.

Read the last hours hours, from 1 to 720 (24 when you leave it out), for a domain and every name under it:

Shell
curl "https://api.coritan.com/api/v1/proxy/traffic?domain=example.com&hours=24" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
JSON
{
  "domain": "example.com",
  "hours": 24,
  "since": "2026-09-14T15:00:00Z",
  "hostnames": [
    {"route_id": 41, "hostname": "example.com"},
    {"route_id": 42, "hostname": "shop.example.com"}
  ],
  "totals": {
    "requests": 18250,
    "blocked": 412,
    "bytes_in": 14965000,
    "bytes_out": 873400000,
    "status_2xx": 15980,
    "status_3xx": 1460,
    "status_4xx": 760,
    "status_5xx": 50,
    "websocket_connections": 0,
    "latency_avg_ms": 44
  },
  "series": [
    {"hour": "2026-09-14T15:00:00Z", "requests": 1210, "blocked": 31, "bytes_out": 57800000, "status_4xx": 52, "status_5xx": 0}
  ],
  "by_hostname": [
    {"route_id": 41, "hostname": "example.com", "requests": 14100, "blocked": 380, "bytes_out": 640200000, "status_5xx": 41},
    {"route_id": 42, "hostname": "shop.example.com", "requests": 4150, "blocked": 32, "bytes_out": 233200000, "status_5xx": 9}
  ]
}
domain
The domain, such as example.com, or one hostname, such as shop.example.com, from 1 to 253 characters. Case and a trailing dot make no difference.
hours
How many hours to cover, from 1 to 720. More than 24 needs the Pro plan or above while account plans apply to your account.
route_id
Optional. One web proxy's route ID from hostnames, to narrow totals and series to its hostname. hostnames and by_hostname still list every hostname.

In the answer, since is the start of the oldest hour, and every time is UTC in ISO 8601. hostnames lists the domain first, then the rest by name. totals sums the range. series holds one entry per hour, oldest first, with zeros for an hour without traffic, so it always has hours entries. by_hostname lists every hostname with its sums, busiest first.

On the Free plan, hours above 24 answers 402 with entitlement_exceeded:

JSON
{
  "detail": {
    "code": "entitlement_exceeded",
    "entitlement": "site_analytics",
    "limit": false,
    "used": 0,
    "upgrade": {"plan": "plan-pro", "addon": null},
    "message": "Your Free plan shows the last 24 hours of traffic. To see up to 30 days, upgrade to Pro."
  }
}

Ask again with hours of 24 or less. upgrade.plan is the plan that shows up to 30 days (When you reach a limit). A route_id that is not yours, or not under domain, answers 404, and hours outside 1 to 720 answers 422.

API operations on this page

MethodPathWhat it does
GET/api/v1/proxy/trafficRequests your web proxies served for a domain, by hour and by hostname