Current diagnostic limits
Limits below reflect the release deployed on 28 October 2026.
These are admission ceilings, not reserved capacity or guaranteed throughput. Other users can occupy shared slots. The service’s client-tracking capacity and edge protections can also reject requests.
/api/v1/location, /api/v1/locations and /api/v1/client do not consume these application diagnostic budgets. They remain subject to normal edge protections and service capacity.
What counts as one client?
- A public IPv4 address shares one allowance. Colleagues using the same office NAT, or customers using the same integration backend, share that address’s budget.
- IPv6 addresses within the same /64 prefix share one allowance.
- Regional budgets are separate on each node. Within a node, GET and POST use the same relevant allowance.
- All hub test types and locations share the hub allowance.
- Hub requests retain the caller’s identity at the regional node. A direct TCP request and a hub TCP request to the same node count against the same detailed/TCP budget.
Handling HTTP 429
Application rate or concurrency rejection returns:- Pause requests for the affected budget and wait at least the number of seconds in
Retry-After. - Add a small random delay so several workers do not all retry together.
- Reduce concurrency and use a queue. Share the pause across workers using the same egress IP.
- If a retry is still rejected, back off again with a bounded retry count.
Retry-After: 30 is a retry hint, not an exact quota-reset timestamp or a guarantee that a slot will be available after 30 seconds. Do not retry in a tight loop. If an intermediary does not supply a retry header, use a bounded backoff instead of an immediate retry.
As a conservative starting point, use at most four concurrent requests to a single regional node and eight to the hub, then adjust within the documented ceilings. These are integration recommendations, not additional enforced quotas.
HTTP errors
Application errors normally use{"error":"code"}. An edge or proxy can return HTML or another format, so inspect HTTP status and Content-Type before parsing JSON.
HTTP success is not a health verdict
HTTP 200 means you received a result, not necessarily that the destination replied or its TCP port opened. Inspectstatus, summary.received and the relevant result fields. Detailed probes may return execution statuses such as timeout or unavailable inside a 200 response. See result interpretation.