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.
In the dashboard
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.
Before you begin
Section titled Before you begin- 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.
What the counts mean
Section titled What the counts meanThe 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
403or429to protect the website: the WAF, the website's own rules and settings, and rate limits (Protect a website with the WAF). They count inrequestsandstatus_4xxtoo. bytes_inandbytes_out- What visitors sent to the edge, and what the edge sent back, in bytes.
status_2xx,status_3xx,status_4xxandstatus_5xx- Answers by status class.
status_5xxcounts 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
nullwhen 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.
How far back the counts go
Section titled How far back the counts goThe 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).
Troubleshooting
Section titled Troubleshooting- Every count is zero
- Check
hostnamesin 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.
402withentitlement_exceeded- Your plan shows the last 24 hours of traffic. Ask for
hoursof 24 or less, or move to a larger plan (Choose or change your account plan). 404withYou have no route with ID 9 under example.com.- The
route_idis not one of your web proxies, or its hostname is not the domain or under it. Take the ID fromhostnames.
Related
Section titled RelatedWith the API
Section titled With the APIRead the last hours hours, from 1 to 720 (24 when you leave it out), for a domain and every name under it:
curl "https://api.coritan.com/api/v1/proxy/traffic?domain=example.com&hours=24" \
-H "Authorization: Bearer $CORITAN_TOKEN"
{
"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 asshop.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 narrowtotalsandseriesto its hostname.hostnamesandby_hostnamestill 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:
{
"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
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/proxy/traffic | Requests your web proxies served for a domain, by hour and by hostname |