BGPKIT API v3.0.0

This page is generated from the live OpenAPI specification to stay in sync with the API surface.

BGPKIT API provides access to BGP data and tools offered by BGPKIT. [![BGPKIT Logo](https://raw.githubusercontent.com/bgpkit/assets/main/logos/wide-solid-200px.png)](https://bgpkit.com)

Base URL
https://api.bgpkit.com
Spec
3.0.0
Endpoint count
55

Examples

These examples are derived from the OpenAPI spec (paths + parameter defaults/examples when provided).

curl
# Search BGP MRT files
curl "https://api.bgpkit.com/v3/broker/search?page=1&page_size=100"

# Get latest BGP MRT files
curl "https://api.bgpkit.com/v3/broker/latest"

# Get BGP peer information
curl "https://api.bgpkit.com/v3/broker/peers?full_feed=false"

# IP address lookup
curl "https://api.bgpkit.com/v3/utils/ip?simple=false"

# ASN information lookup
curl "https://api.bgpkit.com/v3/utils/asn"

Tip: if you need a parameter not shown here, scroll down to the endpoint listing for the full parameter set.

Endpoints

Grouped by tag from the OpenAPI spec. Each endpoint includes an auto-generated curl template and parameter list.

BGPKIT Broker

7 endpoint s
GET /v3/broker/collectors
Get MRT collector information
Get metadata for public MRT route collectors from RouteViews and RIPE RIS projects.
Example
curl "https://api.bgpkit.com/v3/broker/collectors"
curl
curl "https://api.bgpkit.com/v3/broker/collectors"
Parameters
Name In Required Notes
project query no Filter by collector project ( string )
country query no Filter by country code (e.g., 'US', 'DE', 'JP') ( string )
active query no Filter for active collectors only (not deactivated) ( boolean )
GET /v3/broker/events
SSE real-time events
Stream real-time BGP data updates via Server-Sent Events (SSE). Receives notifications when new MRT files are available from RouteViews and RIPE RIS collectors. **Important:** This endpoint returns a 302 redirect to the…
Example
curl "https://api.bgpkit.com/v3/broker/events"
curl
curl "https://api.bgpkit.com/v3/broker/events"
Parameters
Name In Required Notes
collector_id query no Filter events by collector ID(s). Comma-separated for multiple. Examples: 'rrc23', 'route-views.sg', 'rrc01,rrc02' ( string )
data_type query no Filter by data type: 'rib' or 'updates' ( string )
project query no Filter by project: 'routeviews' or 'riperis' ( string )
GET /v3/broker/health
Check broker health
Check BGPKIT broker infrastructure status across deployments. Returns health metrics, uptime, and data freshness. Returns HTTP 500 if data is stale (>1 hour).
Example
curl "https://api.bgpkit.com/v3/broker/health"
curl
curl "https://api.bgpkit.com/v3/broker/health"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v3/broker/latest
Get latest BGP MRT files
Get the most recent BGP MRT files from all active RouteViews and RIPE RIS collectors. Includes delay metrics and download URLs.
Example
curl "https://api.bgpkit.com/v3/broker/latest"
curl
curl "https://api.bgpkit.com/v3/broker/latest"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v3/broker/peers
Get BGP peer information
Get BGP peer statistics from RouteViews and RIPE RIS collectors including IPv4/IPv6 prefix counts, connected ASNs, and activity status.
Example
curl "https://api.bgpkit.com/v3/broker/peers?full_feed=false"
curl
curl "https://api.bgpkit.com/v3/broker/peers?full_feed=false"
Parameters
Name In Required Notes
full_feed query no Filter for full-feed peers only (>700K IPv4 or >100K IPv6 prefixes) ( boolean )
ip query no Filter by specific peer IP address (IPv4 or IPv6)
asn query no Filter by Autonomous System Number ( integer )
collector query no Filter by collector name(s). Comma-separated for multiple collectors. ( string )
GET /v3/broker/streams
RouteViews Kafka streams
List all available BGP stream topics from the RouteViews Kafka broker (stream.routeviews.org:9092), grouped by collector. Data is cached hourly in KV and fetched on-demand if the cache is empty.
Example
curl "https://api.bgpkit.com/v3/broker/streams"
curl
curl "https://api.bgpkit.com/v3/broker/streams"
Parameters
Name In Required Notes
collector query no Filter by broker collector_id (e.g. 'route-views.amsix') or stream_collector name (e.g. 'amsix'). Partial match support… ( string )

BGPKIT ROAS

3 endpoint s
GET /v3/roas/health
RPKI ROA database health check
Returns RPKI ROA database statistics including IPv4/IPv6 ROA counts, latest data date, and backend status.
Example
curl "https://api.bgpkit.com/v3/roas/health"
curl
curl "https://api.bgpkit.com/v3/roas/health"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v3/roas/validate
Validate a BGP route announcement against RPKI ROAs
Check whether a prefix/origin pair is valid, invalid, or unknown according to published RPKI ROAs at a given date.
Example
curl "https://api.bgpkit.com/v3/roas/validate"
curl
curl "https://api.bgpkit.com/v3/roas/validate"
Parameters
Name In Required Notes
prefix query yes IP prefix to validate, e.g. 8.8.8.0/24 (required) ( string )
asn query no Origin ASN to validate against (required) ( integer )
date query no Date for historical validation, format YYYY-MM-DD (default: latest available) ( string )

BGPKIT Utils

5 endpoint s
GET /v3/communities
Query BGP communities
Query communities by ASN, specific community value, or filters. Supports pagination with default 10 ASNs per page, max 1000.
Example
curl "https://api.bgpkit.com/v3/communities?asn=174&value=174%3A21000&description=blackhole"
curl
curl "https://api.bgpkit.com/v3/communities?asn=174&value=174%3A21000&description=blackhole"
Parameters
Name In Required Notes
asn query no Filter by ASN number ( string )
value query no Specific community value to lookup (e.g., 174:21000 or 174:20xxx) ( string )
description query no Filter by description text (partial match) ( string )
as_name query no Filter by AS organization name (partial match) ( string )
country query no Filter by country code (ISO 3166-1 alpha-2) ( string )
page query no Page number (0-indexed, default: 0) ( string )
page_size query no Items per page (default: 10, max: 1000) ( string )
GET /v3/communities/sources
List community data sources
Get information about all configured data sources
Example
curl "https://api.bgpkit.com/v3/communities/sources"
curl
curl "https://api.bgpkit.com/v3/communities/sources"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v3/utils/asn
ASN information lookup
Get ASN information including organization details, network metrics, geographic presence, and connectivity patterns. Supports single or multiple ASNs (comma-separated), filtering by country, and searching by name/organi…
Example
curl "https://api.bgpkit.com/v3/utils/asn"
curl
curl "https://api.bgpkit.com/v3/utils/asn"
Parameters
Name In Required Notes
asn query no ASN number(s) to lookup. Single or comma-separated multiple ASNs. Omit for paginated browsing or filtering. ( string )
country query no Filter by country code (ISO 3166-1 alpha-2, e.g., US, DE, JP) ( string )
search query no Search by AS name or organization name (case-insensitive partial match) ( string )
page query no Page number for paginated results when browsing all ASNs ( number )
page_size query no Number of ASNs per page for pagination (max 10000) ( number )
POST /v3/utils/asn
Bulk ASNs lookup
Process up to 10,000 ASNs in a single batch request. More efficient than individual requests for large-scale analysis.
Example
curl -X POST "https://api.bgpkit.com/v3/utils/asn"
curl
curl -X POST "https://api.bgpkit.com/v3/utils/asn"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v3/utils/ip
IP address lookup
Get geolocation and network information for IPv4/IPv6 addresses. Returns country, ASN ownership, BGP prefix, and RPKI status. Uses client IP if no address specified.
Example
curl "https://api.bgpkit.com/v3/utils/ip?simple=false"
curl
curl "https://api.bgpkit.com/v3/utils/ip?simple=false"
Parameters
Name In Required Notes
ip query no IP address to analyze (IPv4 or IPv6). Uses client IP if omitted. ( string )
simple query no Return only IP and country (excludes ASN and BGP data) ( boolean )

Collectors

8 endpoint s
GET /v4/mrt/collectors
Collector catalog
Every collector the MRT archive is delivered from: name, project, country, archive URL, activation dates and whether it is active. The daily RouteViews and RIPE RIS refresh supplies identity; `last_updated_at` is when i…
Example
curl "https://api.bgpkit.com/v4/mrt/collectors"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors"
Parameters
Name In Required Notes
project query no Collector project: `ripe-ris` or `route-views`. ( string )
country query no Two-letter country code, upper-cased before comparison. ( string )
active query no `true` keeps collectors that are not deactivated, `false` keeps the retired ones. ( boolean )
GET /v4/mrt/collectors/file-counts
Collector file counts
Per collector over the fixed rolling 24-hour window: parsed update files, the elements they carried, and when the last file was processed.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/file-counts"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/file-counts"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v4/mrt/collectors/latest
Collector latest files
The newest RIB and update file each collector published, from the broker's read model. `age_seconds` is measured from the file's start, not a publish time: the catalog records no availability time, so this is file age, …
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/latest"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/latest"
Parameters
Name In Required Notes
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` or `route-views`. ( string )
GET /v4/mrt/collectors/peer-update-counts
Peer update counts
Per collector, peer ASN and time bucket: how many update elements and withdrawals that peer's sessions contributed, summed over the peer's addresses. These are session counts, not file records.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/peer-update-counts?limit=200"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/peer-update-counts?limit=200"
Parameters
Name In Required Notes
collector query yes Collector to answer for (required). ( string )
peer_asn query no The collector's session peer ASN, as bare digits. Required unless `asn` is given. ( integer )
asn query no Deprecated alias for `peer_asn`. ( integer )
since query no Window start: `YYYY-MM-DD` or an ISO timestamp, at most seven days back; omit it for the last 24 hours. ( string )
limit query no Rows to return (0-2000, default 200); a larger limit is clamped. ( integer )
GET /v4/mrt/collectors/peer-update-totals
Peer update totals
Per collector, the peer ASNs that contributed the most update elements in a window, with the sessions behind each total.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/peer-update-totals?limit=25"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/peer-update-totals?limit=25"
Parameters
Name In Required Notes
collector query yes Collector to answer for (required). ( string )
since query no Window start: `YYYY-MM-DD` or an ISO timestamp, at most seven days back; omit it for the last 24 hours. ( string )
limit query no Rows to return (0-500, default 25); a larger limit is clamped. ( integer )
GET /v4/mrt/collectors/peers
Collector peer sessions
One row per (collector, peer address) with that session's prefix counts per family and the number of ASNs behind the peer. A collector the store does not know is a 400.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/peers?page_size=100"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/peers?page_size=100"
Parameters
Name In Required Notes
collector query no Collector name as the store carries it (rrc00, route-views2). ( string )
asn query no ASN as bare digits (13335) or with the AS prefix (AS13335). ( string )
family query no Restrict to one address family. ( integer )
page query no Page number (1-based, 1-100000); a larger page is a 400. ( integer )
page_size query no Rows per page (1-500, default 100); a larger page_size is a 400. ( integer )
GET /v4/mrt/collectors/reset-events
Collector reset events
Inferred collector-wide reset or replay episodes with their breadth, and the hourly counts a chart needs. An inference, not a per-session state machine log.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/reset-events"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/reset-events"
Parameters
Name In Required Notes
since query yes Window start (required), inclusive: an episode that ends at or after it and starts before `until` is included. ( string )
until query yes Window end (required), exclusive: an episode starting at it is not included. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
GET /v4/mrt/collectors/rib-coverage
Collector RIB coverage
Every collector in `rib_latest` or `rib_publish`, with the ledger aggregate in `state`. A collector with history but no hot copy has `latest: null`; without the ledger `state` is null and `meta.history_note` says so.
Example
curl "https://api.bgpkit.com/v4/mrt/collectors/rib-coverage"
curl
curl "https://api.bgpkit.com/v4/mrt/collectors/rib-coverage"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.

Meta

2 endpoint s
GET /v4/meta/freshness
Freshness
Per dataset: oldest and newest value, row count, `age_hours` and `stale`. Read it before a RIB route instead of inferring freshness from a response's shape.
Example
curl "https://api.bgpkit.com/v4/meta/freshness"
curl
curl "https://api.bgpkit.com/v4/meta/freshness"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v4/meta/health
Data health
One check per data product: what it last observed, how old that is, and whether the freshness rule calls it stale.
Example
curl "https://api.bgpkit.com/v4/meta/health"
curl
curl "https://api.bgpkit.com/v4/meta/health"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.

Metrics

1 endpoint
GET /v3/metrics
Prometheus metrics endpoint
Returns Prometheus-compatible metrics for monitoring. Requires Bearer token authentication.
Example
curl "https://api.bgpkit.com/v3/metrics"
curl
curl "https://api.bgpkit.com/v3/metrics"
Parameters
Name In Required Notes
authorization header no Bearer bgpkit_public ( string )

MRT

6 endpoint s
GET /v4/mrt/attributes
Path attributes
Decoded path attribute types per bucket from the parse ledger. Every row carries `bucket_start`, `collector`, `attribute_type`, `instances` and `files`; each label is null when the request did not ask for that grain.
Example
curl "https://api.bgpkit.com/v4/mrt/attributes"
curl
curl "https://api.bgpkit.com/v4/mrt/attributes"
Parameters
Name In Required Notes
since query yes Window start (required), inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved i… ( string )
until query yes Window end (required), exclusive; it must be after `since`, at most 366 days. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
bucket query no Bucket width. Omitted: one row per attribute type, and per collector when grouped, over the whole window, with `bucket_… ( string )
group_by query no Group the answer by collector, with or without `bucket`; read the label from `collector`. ( string )
attribute_type query no Comma list of stored symbolic tokens (AS_PATH, MULTI_EXIT_DISC), matched exactly; numeric attribute codes match no row. ( string )
GET /v4/mrt/counts
MRT file counts
One row per (bucket, dimension, id) with every counter, the parse-time RPKI element counts included. Both bounds are required. `fill` adds only synthetic empty buckets; a bucket with expected-but-unparsed files is alway…
Example
curl "https://api.bgpkit.com/v4/mrt/counts?bucket=day&dimension=collector"
curl
curl "https://api.bgpkit.com/v4/mrt/counts?bucket=day&dimension=collector"
Parameters
Name In Required Notes
since query yes Window start (required), inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved i… ( string )
until query yes Window end (required), exclusive; it must be after `since`, at most 366 days. ( string )
bucket query no Bucket width. `bucket_start` is a zone-less UTC timestamp. A 400 when the window exceeds 31 days unfiltered, or `floor(… ( string )
dimension query no Group the counts by collector or by project; the row always carries both `dimension` and `id`. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
fill query no Add synthetic empty buckets (`zero`) or not (`none`). A bucket with expected or missing files is not synthetic and is r… ( string )
outcome query no Comma list of outcomes to count (default `success`): `queued`, `success`, `parse_error`, `download_error`; an unknown t… ( string )
GET /v4/mrt/distributions
MRT file distributions
One row per (bucket, dimension, id, metric) with min, max, avg, p50 and p95 over the files in that bucket. Percentiles are computed from file samples, never averaged from other buckets.
Example
curl "https://api.bgpkit.com/v4/mrt/distributions?bucket=day&dimension=collector"
curl
curl "https://api.bgpkit.com/v4/mrt/distributions?bucket=day&dimension=collector"
Parameters
Name In Required Notes
metric query yes File metric to summarise (required). ( string )
since query yes Window start (required), inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved i… ( string )
until query yes Window end (required), exclusive; it must be after `since`, at most 366 days. ( string )
bucket query no Bucket width. `bucket_start` is a zone-less UTC timestamp. A 400 when the window exceeds 31 days unfiltered, or `floor(… ( string )
dimension query no Group the distributions by collector or by project. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
outcome query no Comma list of outcomes to include (default `success`): `queued`, `success`, `parse_error`, `download_error`; an unknown… ( string )
GET /v4/mrt/files
MRT file rows
A broker catalogue row: collector, project, type, window, URL, sizes, 1999 to now. `total` is exact to 1M matches and an approximate sample above (`meta.total_is_estimate`). Parse stats: spectrum products. Times are UTC…
Example
curl "https://api.bgpkit.com/v4/mrt/files"
curl
curl "https://api.bgpkit.com/v4/mrt/files"
Parameters
Name In Required Notes
page query no Page number (1-based, default 1). Above 1M matches `total` is a 1% sample, not a count: measured within 1-3% past ~2.5M… ( integer )
page_size query no Rows per page (1-1000, default 100). ( integer )
data_type query no File type to list: `rib` or `updates` (both are listed when absent). ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
since query no Window start, inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved in UTC. ( string )
until query no Window end, exclusive: same formats as `since`; it must be after the start. ( string )
GET /v4/mrt/files/attribute-counts
MRT file attribute counts
Per file and attribute type, how many instances the parser decoded. Pass `file_id`, or `since`/`until`: 2 days unfiltered, or `max(2, floor(31 / distinct names))` days: the division floors, and the floor of 2 is never g…
Example
curl "https://api.bgpkit.com/v4/mrt/files/attribute-counts"
curl
curl "https://api.bgpkit.com/v4/mrt/files/attribute-counts"
Parameters
Name In Required Notes
file_id query no One file id, as listed by /v4/mrt/files. ( integer )
attribute_type query no One stored symbolic token, matched exactly (AS_PATH, MULTI_EXIT_DISC); a numeric attribute code matches no row. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
since query no Window start, inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved in UTC. ( string )
until query no Window end, exclusive: same formats as `since`; it must be after the start. ( string )
limit query no Rows to return (1-1000, default 200). A window answer is a limited preview, not a pageable list: read the ids from /v4/… ( integer )
GET /v4/mrt/files/validation-counts
MRT file validation counts
Per file and validation status, the parse-time RPKI element counts. Pass `file_id`, or `since`/`until`: 2 days unfiltered, or `max(2, floor(31 / distinct names))` days. Not the snapshot invalid-route carriage.
Example
curl "https://api.bgpkit.com/v4/mrt/files/validation-counts"
curl
curl "https://api.bgpkit.com/v4/mrt/files/validation-counts"
Parameters
Name In Required Notes
file_id query no One file id, as listed by /v4/mrt/files. ( integer )
validation_status query no One status: valid, invalid or unknown. ( string )
collector query no Comma-separated collector ids (rrc00, route-views2). ( string )
project query no Collector project: `ripe-ris` (ris) or `route-views` (rv). ( string )
since query no Window start, inclusive: ISO 8601, `YYYY-MM-DD`, or unix seconds. The window is `[since, until)`, resolved in UTC. ( string )
until query no Window end, exclusive: same formats as `since`; it must be after the start. ( string )
limit query no Rows to return (1-1000, default 200). A window answer is a limited preview, not a pageable list: read the ids from /v4/… ( integer )

Routing

10 endpoint s
GET /v4/routing/addresses
IP info
Country, origin ASN, covering prefix and RPKI status for one address, from Cloudflare Radar. Without `ip` the caller's own address is used.
Example
curl "https://api.bgpkit.com/v4/routing/addresses"
curl
curl "https://api.bgpkit.com/v4/routing/addresses"
Parameters
Name In Required Notes
ip query no Address to look up. Default: the caller's address. ( string )
simple query no Return only the address and country. ( boolean )
GET /v4/routing/asns
ASN metadata
Registry identity, organisation, allocation, hegemony and user population for one ASN or a comma list. Without `asn` the whole catalog pages.
Example
curl "https://api.bgpkit.com/v4/routing/asns?page=0"
curl
curl "https://api.bgpkit.com/v4/routing/asns?page=0"
Parameters
Name In Required Notes
asn query no One ASN or a comma-separated list (13335,15169). ( string )
country query no Two-letter country to filter on. ( string )
search query no Case-insensitive match on the AS name or organisation. ( string )
page query no Page number, 0-based. ( integer )
page_size query no Rows per page (1-10000). Default: the number of ASNs requested, else 100. ( integer )
POST /v4/routing/asns
ASN metadata, batch
The GET answer for 1 to 10000 ASNs in one call, from a JSON body holding an `asns` array (for example [13335, 15169]). Query pagination and filters do not apply.
Example
curl -X POST "https://api.bgpkit.com/v4/routing/asns"
curl
curl -X POST "https://api.bgpkit.com/v4/routing/asns"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.
GET /v4/routing/asns/prefixes
ASN prefixes
One row per prefix this origin was seen announcing, with path and collector counts. `rpki_status` is null: the store holds no ROA set, and `status` filters are refused with 501 rather than ignored.
Example
curl "https://api.bgpkit.com/v4/routing/asns/prefixes?page_size=100"
curl
curl "https://api.bgpkit.com/v4/routing/asns/prefixes?page_size=100"
Parameters
Name In Required Notes
asn query yes ASN as bare digits (13335) or with the AS prefix (AS13335). ( string )
family query no Restrict to one address family. ( integer )
status query no RPKI status filter; unsupported while the field is null (501). ( string )
page query no Page number (1-based, 1-100000); a larger page is a 400. ( integer )
page_size query no Rows per page (1-500, default 100); a larger page_size is a 400. ( integer )
q query no Substring of the prefix text, for example `108.61` or `:ac`. ( string )
GET /v4/routing/asns/relationship-votes
AS relationship votes
One row per (other ASN, family): one vote per (collector, peer address) session that saw the pair adjacent on a prefix, so votes sum across prefixes; `prefix` narrows to one prefix. `direction` names the upstream side. …
Example
curl "https://api.bgpkit.com/v4/routing/asns/relationship-votes"
curl
curl "https://api.bgpkit.com/v4/routing/asns/relationship-votes"
Parameters
Name In Required Notes
asn query yes ASN as bare digits (13335) or with the AS prefix (AS13335). ( string )
other query no Restrict to the pair with this ASN, as bare digits or AS13335. ( string )
family query no Restrict to one address family. ( integer )
role query no Which side this ASN is on in the returned pairs. ( string )
prefix query no Prefix to look up, as a CIDR (1.1.1.0/24, 2606:4700::/32). ( string )
cidr query no Alias for `prefix`. Passing both with different values is a 400. ( string )
page query no Page number (1-based, 1-100000); a larger page is clamped. ( integer )
page_size query no Rows per page (1-500, default 100); a larger page_size is clamped. ( integer )
GET /v4/routing/asns/tier1-footprint
ASN tier-1 footprint
One row per tier-1: prefix and observation totals, every observed fragment shape (`paths`, busiest first), and `names` for every ASN in them. `top_path` is kept for the older contract.
Example
curl "https://api.bgpkit.com/v4/routing/asns/tier1-footprint"
curl
curl "https://api.bgpkit.com/v4/routing/asns/tier1-footprint"
Parameters
Name In Required Notes
asn query yes ASN as bare digits (13335) or with the AS prefix (AS13335). ( string )
family query no Restrict to one address family. ( integer )
limit query no Rows to return (1-200). Default 200. ( integer )
GET /v4/routing/irr-objects
IRR objects
The RPSL route and route6 objects that match or cover a prefix, with the source registry of each.
Example
curl "https://api.bgpkit.com/v4/routing/irr-objects"
curl
curl "https://api.bgpkit.com/v4/routing/irr-objects"
Parameters
Name In Required Notes
prefix query yes Prefix to match (required), as a CIDR. ( string )
match query no How to match: `exact`, `covering` or `all`. ( string )
limit query no Rows to return (1-1000, default 200). ( integer )
GET /v4/routing/prefixes/origins
Prefix state
Per-origin paths and observation counts for one prefix. Supply exactly one of `prefix`/`cidr` (exact lookup) or `ip` (longest match); none or two is a 400. Empty `data` means the snapshot holds no announcement.
Example
curl "https://api.bgpkit.com/v4/routing/prefixes/origins"
curl
curl "https://api.bgpkit.com/v4/routing/prefixes/origins"
Parameters
Name In Required Notes
cidr query no Alias for `prefix`. ( string )
prefix query no Prefix to look up, as a CIDR (1.1.1.0/24, 2606:4700::/32). ( string )
ip query no Address whose longest matching prefix is the subject (1.1.1.7). ( string )
GET /v4/routing/prefixes/path-fragments
Prefix path fragments
Observed AS-path exits for one prefix: one row per (tier-1, origin, AS fragment) with the sessions behind it, plus `names` for every ASN in those fragments. Pass `prefix` or `cidr`. Not a traffic measurement.
Example
curl "https://api.bgpkit.com/v4/routing/prefixes/path-fragments"
curl
curl "https://api.bgpkit.com/v4/routing/prefixes/path-fragments"
Parameters
Name In Required Notes
prefix query no Prefix to look up, as a CIDR (1.1.1.0/24, 2606:4700::/32). ( string )
cidr query no Alias for `prefix`. Passing both with different values is a 400. ( string )
family query no Restrict to one address family. ( integer )
limit query no Rows to return (1-200). Default 20. ( integer )
GET /v4/routing/prefixes/update-counts
Prefix update counts
Per day, the announcement and withdrawal counts that mentioned a prefix, with the number of collectors behind each day. Per-collector totals are in meta.observation_scope.
Example
curl "https://api.bgpkit.com/v4/routing/prefixes/update-counts"
curl
curl "https://api.bgpkit.com/v4/routing/prefixes/update-counts"
Parameters
Name In Required Notes
prefix query yes Prefix to answer for (required), as a CIDR. ( string )
since query no First day to include, `YYYY-MM-DD` (inclusive); the default window is the 90 days ending today. ( string )
until query no Last day to include, `YYYY-MM-DD` (inclusive); it may equal `since`. A window over 730 days is a 400. ( string )
collector query no One collector name (rrc00); a comma list is a 400. ( string )

RPKI

13 endpoint s
GET /v4/rpki/aspa/authorization
Provider authorization
Does `customer`'s ASPA object on `date` list `provider` as an upstream? `result` is valid, invalid or unknown; an AS0-only object authorises nobody, and missing history is a 503.
Example
curl "https://api.bgpkit.com/v4/rpki/aspa/authorization"
curl
curl "https://api.bgpkit.com/v4/rpki/aspa/authorization"
Parameters
Name In Required Notes
customer query yes Customer ASN whose ASPA object is read (required): 1 to 4294967295. ( integer )
provider query yes Provider ASN to look for in the customer's provider set (required): 0 to 4294967295, where 0 is the ASPA AS0 marker. ( integer )
date query no Day to answer for, as YYYY-MM-DD. Default: the store's newest day. ( string )
GET /v4/rpki/aspa/invalid-pairs
ASPA invalid pairs
Customer/provider pairs behind definitely-invalid paths on the day, ordered by invalid observations.
Example
curl "https://api.bgpkit.com/v4/rpki/aspa/invalid-pairs"
curl
curl "https://api.bgpkit.com/v4/rpki/aspa/invalid-pairs"
Parameters
Name In Required Notes
date query no Day to answer for, as YYYY-MM-DD. Default: the store's newest day. ( string )
limit query no Rows to return (1-200, default 20). ( integer )
GET /v4/rpki/aspa/provider-sets
ASPA provider sets
Declared (customer, provider) pairs per trust anchor with the first and last day observed. A declaration authorises nothing by itself; the verdict is /v4/rpki/aspa/authorization.
Example
curl "https://api.bgpkit.com/v4/rpki/aspa/provider-sets?limit=100"
curl
curl "https://api.bgpkit.com/v4/rpki/aspa/provider-sets?limit=100"
Parameters
Name In Required Notes
customer query no Customer ASN to filter on: 1 to 4294967295, so AS0 is refused here; a provider-set member may still be AS0. ( integer )
provider query no Provider ASN to filter on: 0 to 4294967295, where 0 selects the AS0 members. ( integer )
limit query no Maximum rows (0-500, default 100); a larger limit is capped. ( integer )
GET /v4/rpki/aspa/verdict-counts
ASPA path verdicts
The day's interned paths verified against that day's ASPA objects, in five buckets with each bucket's share of paths and observations. `definitely_invalid` is a lower bound, not a leak rate.
Example
curl "https://api.bgpkit.com/v4/rpki/aspa/verdict-counts"
curl
curl "https://api.bgpkit.com/v4/rpki/aspa/verdict-counts"
Parameters
Name In Required Notes
date query no Day to answer for, as YYYY-MM-DD. Default: the store's newest day. ( string )
GET /v4/rpki/aspa/verdict-series
ASPA daily series
The same five buckets per day over the last `days` days, newest day last.
Example
curl "https://api.bgpkit.com/v4/rpki/aspa/verdict-series"
curl
curl "https://api.bgpkit.com/v4/rpki/aspa/verdict-series"
Parameters
Name In Required Notes
days query no Window length in days (1-400, default 30). ( integer )
GET /v4/rpki/roas
ROA objects
Current ROA objects, filtered by any of `prefix` (covering), `origin` and `ta`. `limit` is capped at 500 rather than rejected.
Example
curl "https://api.bgpkit.com/v4/rpki/roas?limit=100"
curl
curl "https://api.bgpkit.com/v4/rpki/roas?limit=100"
Parameters
Name In Required Notes
prefix query no Prefix to look up, as a CIDR (1.1.1.0/24, 2606:4700::/32). ( string )
origin query no Origin ASN the ROA authorises: 0 to 4294967295, where 0 is the AS0 key RFC 6483 defines. ( integer )
ta query no Trust anchor the ROA was published under (arin, ripencc, apnic, afrinic, lacnic). ( string )
limit query no Rows to return (0-500, default 100); a larger limit is capped. ( integer )
GET /v4/rpki/roas/counts
ROA counts
The ROA coverage ledger, oldest day first, optionally bounded by `from`/`to` and one trust anchor.
Example
curl "https://api.bgpkit.com/v4/rpki/roas/counts"
curl
curl "https://api.bgpkit.com/v4/rpki/roas/counts"
Parameters
Name In Required Notes
from query no First day to include, YYYY-MM-DD. ( string )
to query no Last day to include, YYYY-MM-DD. ( string )
tal query no Trust anchor to report (arin, ripencc, apnic, afrinic, lacnic). ( string )
GET /v4/rpki/roas/history
One ROA object's versions
Version timeline for an exact `prefix`+`asn`, or one `roa_obj_id` (which wins). Not a covering match; the first 100 objects only, so treat it as a preview. Dates are certificate validity and archive observation.
Example
curl "https://api.bgpkit.com/v4/rpki/roas/history"
curl
curl "https://api.bgpkit.com/v4/rpki/roas/history"
Parameters
Name In Required Notes
prefix query no Prefix to look up, as a CIDR (1.1.1.0/24, 2606:4700::/32). ( string )
asn query no Origin ASN whose ROA objects are listed: 0 to 4294967295. ( integer )
roa_obj_id query no ROA object id, as carried by this answer; it takes precedence over prefix and asn. ( integer )
GET /v4/rpki/rov
Route origin validation
Does a ROA authorise `asn` to originate `prefix` on `date`? `result` is valid, invalid or unknown; both parameters are required, and a missing ROA history is a 503, never a page of unknowns.
Example
curl "https://api.bgpkit.com/v4/rpki/rov"
curl
curl "https://api.bgpkit.com/v4/rpki/rov"
Parameters
Name In Required Notes
prefix query yes Prefix to validate, as a CIDR (required). ( string )
asn query yes Origin ASN to validate against the covering ROAs (required): 1 to 4294967295, since AS0 cannot originate a route. ( integer )
date query no Day to answer for, as YYYY-MM-DD. Default: the store's newest day. ( string )
GET /v4/rpki/rov/carriage
Invalid-route propagation
Per-AS daily rows for each day the ASN sat before an invalid origin, with route, origin and observation counters. `meta.available` is the store's real coverage; an empty `data` carries `observed`, the counts that explai…
Example
curl "https://api.bgpkit.com/v4/rpki/rov/carriage"
curl
curl "https://api.bgpkit.com/v4/rpki/rov/carriage"
Parameters
Name In Required Notes
asn query yes ASN as bare digits (13335) or with the AS prefix (AS13335). ( string )
days query no Window length in days (1-365, default 30). ( integer )
GET /v4/rpki/rov/carriage/series
Invalid-route carriage series
Per day: how many ASNs appeared before an invalid origin, and how many carried at least 10 and at least 100 invalid routes. `meta.available` reports the days the store holds and the missing days inside the window.
Example
curl "https://api.bgpkit.com/v4/rpki/rov/carriage/series"
curl
curl "https://api.bgpkit.com/v4/rpki/rov/carriage/series"
Parameters
Name In Required Notes
days query no Window length in days (1-365, default 30). ( integer )
GET /v4/rpki/rov/carriage/top
Top invalid-route carriers
The day's ASNs ordered by invalid route count, with each ASN's name and collector count.
Example
curl "https://api.bgpkit.com/v4/rpki/rov/carriage/top"
curl
curl "https://api.bgpkit.com/v4/rpki/rov/carriage/top"
Parameters
Name In Required Notes
date query no Day to answer for, as YYYY-MM-DD. Default: the store's newest day. ( string )
limit query no Rows to return (1-100, default 20). ( integer )
GET /v4/rpki/summary
RPKI summary
Per-TAL ROA counts for the newest day, ASPA totals, and the last ingest run's outcome.
Example
curl "https://api.bgpkit.com/v4/rpki/summary"
curl
curl "https://api.bgpkit.com/v4/rpki/summary"
Parameters
No parameters listed in the OpenAPI spec for this endpoint.