ASPA Validator
Check an AS path against every published ASPA, find out whether it is valley-free, and see exactly which hop leaked it. Free. No API key. No API rate limits you’ll ever reasonably hit.
Verify an AS path
Paste a path the way your router prints it: neighbor first, origin last. Say whether the route came from a provider or from a customer or peer. Enter a single AS to see the ASPA it publishes.
API Documentation
The parameters and fields for this tool. Keys, errors, CORS and rate limits work the same for every tool: see the API guide.
Verify an AS path against the current validated ASPA set. Both procedures are always run; direction picks which one is reported as state. A lone AS number instead returns the ASPA that AS publishes and the ASes that name it as a provider.
| Parameter | Type | Description |
|---|---|---|
| aspa | string | The AS path, neighbor first and origin last, as a router prints it. Separate ASes with spaces, commas or >; AS prefixes and prepends are fine; an AS_SET is written {64512,64513}. Or a single AS number. |
| direction | string | Optional. downstream (default) for a route received from a provider; upstream for one received from a customer, a lateral peer or a route server. provider, customer and peer are accepted too. |
The same lookup with a JSON body. The path may be a string or an array of AS numbers. Bodies are limited to 512 bytes.
| Field | Description |
|---|---|
| as_path | The path as read, normalized: "3356 1299 13335". |
| compressed_path | The ASes verification ran on, neighbor first, with prepends collapsed. AS_SET members are not included. |
| neighbor_asn, origin_asn | The first and last AS. origin_asn is null when the path ends in an AS_SET. |
| direction | Which procedure state and reason report. |
| state | valid, invalid or unknown. |
| reason | A sentence explaining the state. For invalid it names the hop, and where it can, the AS that leaked the route. |
| upstream, downstream | Both procedures’ state and reason, whichever you asked for. |
| ramps | The draft’s max_up, min_up, max_down and min_down: how far the path reads as climbing from the origin and descending to the neighbor. |
| hops | One entry per hop, in the order the route travelled (origin first): sender, receiver, and whether each one’s ASPA names the other as a provider: receiver_is_provider and sender_is_provider, each provider+, not-provider+ or no-attestation. |
| aspas | Every AS on the path, neighbor first, with published, its providers and trust anchor. A provider of 0 (AS0) means the AS declares it has none. |
| rpki | How many ASPAs the set holds, when it was refreshed, and whether that copy is stale. |
| Field | Description |
|---|---|
| published | Whether this AS publishes a valid ASPA. |
| providers | The providers it names (provider_count of them), and its trust anchor in ta. |
| customers | ASes whose ASPA names this AS as a provider, up to 1,000; customer_count is the true total and customers_truncated says whether the list was cut. |