IRR Validator
Route objects, as-sets, aut-nums and maintainers across every routing registry we mirror, searched together. Free. No API key. No rate limits on the mirrored registry data. Only live queries to RADB are limited, at RADB’s request.
Look something up
A prefix, an AS number, an as-set, a route-set or a maintainer handle. It works out which you meant.
What is mirrored
Each registry’s published database dump, re-imported every four hours. A registry whose import fails keeps the objects it already had rather than disappearing.
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.
Look a prefix, AS number, as-set, route-set or maintainer handle up across every mirrored registry. The response’s kind field says which of those the input was taken to be, and the rest of the body depends on it.
| Parameter | Type | Description |
|---|---|---|
| irr | string | A prefix (193.0.0.0/21), a bare address, an AS number (AS3333), a set name (AS-RIPENCC, RS-EXAMPLE, AS3333:AS-CUSTOMERS) or a maintainer handle. |
| live | boolean | Optional. Use sparingly. true queries whois.radb.net directly before answering, instead of only reading the mirrored dumps, and updates the mirror if the live objects differ. Every live query is a real session on RADB’s servers, so it is limited, at RADB’s request, to 6 per minute per client (see rate limits) and is meant for checking an object you have just changed, not for polling, scripts or bulk lookups. Past the limit the answer comes from the mirror, with live.skipped set to rate_limited. You rarely need it: without it, RADB is still asked automatically when the dumps have nothing. Lookups answered from the mirror have no rate limit. |
The same lookup with a JSON body.
| Field | Description |
|---|---|
| kind | prefix, asn, set, mntner or text: how the input was read. |
| sources | The registries that contributed to this answer. |
| exact_objects | kind=prefix: route objects for exactly this prefix, each with its origin AS, registry, description and maintainers. |
| covering_objects | kind=prefix: route objects for less specifics that cover it. A prefix with none of its own may still be covered by one of these. |
| registered_origins | kind=prefix: the origin ASes registered for the exact prefix: what a filter built from the IRR would permit. |
| route_objects | kind=asn: every prefix registered with this AS as its origin. route_count is the true total when the list is truncated. |
| expanded_asns | kind=set: the flat list of AS numbers the set resolves to, following nested sets across every registry. |
| prefixes | kind=set: the prefix list a filter built from the set would hold, deduplicated across registries and split into ipv4 and ipv6. prefix_count gives the per-family totals and prefix_total the sum; prefixes_truncated says whether the cone ran past the response ceiling. |
| member_of | kind=set: the sets that name this one as a member. |
| live | Present when RADB was asked directly. reason is requested (you sent live=true) or not_found (the dumps had nothing). added, updated and withdrawn count what the live answer changed; complete is false if RADB’s answer was cut short, in which case nothing is marked withdrawn. skipped says why no query ran (rate_limited, checked_recently). |
| live_fetched_at | On any object: when it was fetched live from RADB, or null if it came from a mirrored dump. Live objects are kept until a newer dump of their registry replaces them. |
Common Questions
What is the IRR?
route and route6 for prefixes,
as-set for groups of ASes, aut-num for the ASes themselves, and
mntner for the handles that maintain them. Most of the prefix filters between networks
are still generated from this data, which is why a missing or wrong object shows up as
“my route isn’t propagating”.
Why is the same prefix registered twice?
What does expanding an as-set do?
bgpq4 produces, and the thing you actually need
when a customer hands you an as-set. Members are followed across registries, because a set defined
in RADB routinely names one that only exists in RIPE.
How does this relate to RPKI?
How current is the data?
live=true) to check live even when the dumps
do have an answer; anything that differs is updated here too. Objects that came from a live query are
marked live.