---
title: "KMI APIs"
slug: "kmi-apis"
description: "Learn how to utilize KMI APIs for accessing rankings, markets, and AS relationships, enhancing your Kentik data analysis securely."
updated: 2026-02-20T15:41:17Z
published: 2026-02-20T15:41:17Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://kb.kentik.com/llms.txt
> Use this file to discover all available pages before exploring further.

# KMI APIs

This article covers how to get started with the KMI APIs.

> [!NOTE]
> **Notes:**
> 
> - The [**API Tester**](https://portal.kentik.com/v4/core/api-tester) in the v4 Portal enables you to securely call the methods of these APIs using your organization's Kentik data.
> - For information about KMI, start with [**Kentik Market Intelligence**](/v1/docs/kentik-market-intelligence).
> - Protobuf and OpenAPI specifications for Kentik’s v6 APIs are available in our [**api-schema-public**](https://github.com/kentik/api-schema-public) repository.

## KMI Usage

The topics below provide important background information for the use of these APIs.

### Overview

The Kentik Market Intelligence (KMI) API provides programmatic access to information related to KMI rankings, KMI markets, and the customers, providers, and peers of individual Autonomous Systems (ASes). This information is derived from analysis of the global routing table, which enables us to classify the peering and transit relationships between ASes and to identify the providers, peers, and customers of a given AS in any geography (market). KMI estimates the volume of IP space transited by ASes in different geographies and produces rankings based on that volume, thereby enabling users to compare ASes in various markets.

### KMI Ranking Types

The following types of rankings are shown:

- **Customer Base**: Ranked by the size of the overall customer base, estimated by determining how much IP address space a given AS transits relative to other ASes:
  - Retail networks provide services (e.g., originate content) or have end-users that are consumers of services (e.g., ISPs or "eyeball" networks).
  - Wholesale networks connect retail networks to backbone networks.
  - Backbone networks carry high volumes of traffic between wholesale networks.
- **Customer Growth**: Ranked by the change in overall customer base (gain/loss of prefixes) over the last 20 days.
- **Peering**: Ranked by the amount of IP address space sent to the AS over a settlement-free peering session.

Both REST endpoint and gRPC RPCs are provided.

> [!NOTE]
> **Note:** More information about KMI can be found at [**Kentik Market Intelligence**](/v1/docs/kentik-market-intelligence).

## KMI RPCs

The tables below provide a quick reference to key information about each Remote Procedure Call in these APIs. Use the links in the tables to see schemas for the request and/or response body (if any).

> [!NOTE]
> **Note:** To test methods using your own Kentik data, use the portal's [**API Tester**](https://portal.kentik.com/v4/core/api-tester).

### GetASNDetails

**API: KmiService**

| REST Method | REST Endpoint | Description |
| --- | --- | --- |
| POST | /kmi/v202212 /market/{marketId}/network/{asn}/{type} | Returns metadata and list of customers, providers, and peers for an Autonomous System. |
| \| **Request body:** [v202212GetASNDetailsRequest](/v1/docs/kmi-apis#getasndetailsrequest) \| **Response body:** [v202212GetASNDetailsResponse](/v1/docs/kmi-apis#getasndetailsresponse) \| \| --- \| --- \| **Parameters**: \| Name \| Description \| Required \| Type \| \| --- \| --- \| --- \| --- \| \| marketId \| Unique Geo Market identifier (as provided by the ListMarkets RPC) \| true \| string \| \| asn \| Autonomous System Number (ASN) \| true \| string \| \| type \| Type of the requested ASN ('all', 'customer', 'provider', 'peer'). Defaults to 'all'. \| true \| string \| |
| **Request body:** [v202212GetASNDetailsRequest](/v1/docs/kmi-apis#getasndetailsrequest) | **Response body:** [v202212GetASNDetailsResponse](/v1/docs/kmi-apis#getasndetailsresponse) |
| Name | Description | Required | Type |
| marketId | Unique Geo Market identifier (as provided by the ListMarkets RPC) | true | string |
| asn | Autonomous System Number (ASN) | true | string |
| type | Type of the requested ASN ('all', 'customer', 'provider', 'peer'). Defaults to 'all'. | true | string |

### GetRankings

**API: KmiService**

| REST Method | REST Endpoint | Description |
| --- | --- | --- |
| POST | /kmi/v202212 /market/{marketId}/rankings/{rankType} | Returns list of KMI rankings. |
| \| **Request body:** [v202212GetRankingsRequest](/v1/docs/kmi-apis#getrankingsrequest) \| **Response body:** [v202212GetRankingsResponse](/v1/docs/kmi-apis#getrankingsresponse) \| \| --- \| --- \| **Parameters:** \| Name \| Description \| Required \| Type \| \| --- \| --- \| --- \| --- \| \| marketId \| Unique Geo Market identifier (as provided by the ListMarkets RPC) \| true \| string \| \| rankType \| Type of the requested ranking ('customer_base', 'customer_base_retail', 'customer_base_wholesome', 'customer_base_backbone', 'customer_growth', 'peering_base'). Defaults to 'customer_base'. \| true \| string \| |
| **Request body:** [v202212GetRankingsRequest](/v1/docs/kmi-apis#getrankingsrequest) | **Response body:** [v202212GetRankingsResponse](/v1/docs/kmi-apis#getrankingsresponse) |
| Name | Description | Required | Type |
| marketId | Unique Geo Market identifier (as provided by the ListMarkets RPC) | true | string |
| rankType | Type of the requested ranking ('customer_base', 'customer_base_retail', 'customer_base_wholesome', 'customer_base_backbone', 'customer_growth', 'peering_base'). Defaults to 'customer_base'. | true | string |

### ListMarkets

**API: KmiService**

| REST Method | REST Endpoint | Description |
| --- | --- | --- |
| GET | /kmi/v202212 /markets | Returns list of geo markets for KMI. |
| \| **Request body:** None \| **Response body:** [v202212ListMarketsResponse](/v1/docs/kmi-apis#listmarketsresponse) \| \| --- \| --- \| \| **Parameters**: None \| |
| **Request body:** None | **Response body:** [v202212ListMarketsResponse](/v1/docs/kmi-apis#listmarketsresponse) |
| **Parameters**: None |

## KMI Schemas

This API uses the following schemas.

#### protobufAny

| **Schema:** protobufAny | **Type:** object |
| --- | --- |
| **Properties:** \| Name \| Value \| \| --- \| --- \| \| typeUrl \| type: string \| \| value \| type: string format: byte \| |
| Name | Value |
| typeUrl | type: string |
| value | type: string format: byte |

#### rpcStatus

| **Schema:** rpcStatus | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| code \| type: integer format: int32 \| \| message \| type: string \| \| details \| type: array items: $ref: [protobufAny](/v1/docs/kmi-apis#protobufany) \| |
| Name | Value |
| code | type: integer format: int32 |
| message | type: string |
| details | type: array items: $ref: [protobufAny](/v1/docs/kmi-apis#protobufany) |

#### ASNDetails

| **Schema:** v202212ASNDetails | **Type:** object |
| --- | --- |
| **Properties:** \| Name \| Value \| \| --- \| --- \| \| asn \| type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true \| \| name \| type: string description: Name of the Autonomous System readOnly: true \| \| countryName \| type: string description: Country Name of the Autonomous System readOnly: true \| \| customers \| type: array items: $ref: [v202212CustomerProvider](/v1/docs/kmi-apis#customerprovider) description: List of Customers readOnly: true \| \| providers \| type: array items: $ref: [v202212CustomerProvider](/v1/docs/kmi-apis#customerprovider) description: List of Providers readOnly: true \| \| peers \| type: array items: $ref: [v202212Peer](/v1/docs/kmi-apis#peer) description: List of Peers readOnly: true \| |
| Name | Value |
| asn | type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true |
| name | type: string description: Name of the Autonomous System readOnly: true |
| countryName | type: string description: Country Name of the Autonomous System readOnly: true |
| customers | type: array items: $ref: [v202212CustomerProvider](/v1/docs/kmi-apis#customerprovider) description: List of Customers readOnly: true |
| providers | type: array items: $ref: [v202212CustomerProvider](/v1/docs/kmi-apis#customerprovider) description: List of Providers readOnly: true |
| peers | type: array items: $ref: [v202212Peer](/v1/docs/kmi-apis#peer) description: List of Peers readOnly: true |

#### CustomerProvider

| **Schema:** v202212CustomerProvider | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| asn \| type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true \| \| name \| type: string description: Name of the Autonomous System readOnly: true \| \| score \| type: integer format: int64 description: Score of the Autonomous System readOnly: true \| \| singlehomedCustomer \| type: boolean description: Singlehomed customer (only one upstream provider to the internet) readOnly: true \| \| mutualCustomer \| type: boolean description: Mutual customer readOnly: true \| \| mutualProvider \| type: boolean description: Mutual provider readOnly: true \| |
| Name | Value |
| asn | type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true |
| name | type: string description: Name of the Autonomous System readOnly: true |
| score | type: integer format: int64 description: Score of the Autonomous System readOnly: true |
| singlehomedCustomer | type: boolean description: Singlehomed customer (only one upstream provider to the internet) readOnly: true |
| mutualCustomer | type: boolean description: Mutual customer readOnly: true |
| mutualProvider | type: boolean description: Mutual provider readOnly: true |

#### GetASNDetailsRequest

| **Schema:** v202212GetASNDetailsRequest | **Type:** object |
| --- | --- |
| **Properties**(* = required) \| Name \| Value \| \| --- \| --- \| \| marketId * \| type: string description: Unique Geo Market identifier (as provided by the ListMarkets RPC) \| \| asn * \| type: string description: Autonomous System Number (ASN) \| \| ip \| type: string description: IP Address Family ('v4' or 'v6'). Defaults to 'v4'. \| \| type \| type: string description: Type of the requested ASN ('all', 'customer', 'provider', 'peer'). Defaults to 'all'. \| \| mutualProvider \| type: string description: Filter by mutual provider ('all', 'only', 'exclude'). Defaults to 'all'. \| \| mutualCustomer \| type: string description: Filter by mutual customer ('all', 'only', 'exclude'). Defaults to 'all'. \| \| singlehomedCustomer \| type: string description: Filter by singlehomed customer ('all', 'only', 'exclude'). Defaults to 'all'. \| |
| Name | Value |
| marketId * | type: string description: Unique Geo Market identifier (as provided by the ListMarkets RPC) |
| asn * | type: string description: Autonomous System Number (ASN) |
| ip | type: string description: IP Address Family ('v4' or 'v6'). Defaults to 'v4'. |
| type | type: string description: Type of the requested ASN ('all', 'customer', 'provider', 'peer'). Defaults to 'all'. |
| mutualProvider | type: string description: Filter by mutual provider ('all', 'only', 'exclude'). Defaults to 'all'. |
| mutualCustomer | type: string description: Filter by mutual customer ('all', 'only', 'exclude'). Defaults to 'all'. |
| singlehomedCustomer | type: string description: Filter by singlehomed customer ('all', 'only', 'exclude'). Defaults to 'all'. |

#### GetASNDetailsResponse

| **Schema:** v202212GetASNDetailsResponse | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| asnDetails \| $ref: [v202212ASNDetails](/v1/docs/kmi-apis#getasndetails) \| |
| Name | Value |
| asnDetails | $ref: [v202212ASNDetails](/v1/docs/kmi-apis#getasndetails) |

#### GetRankingsRequest

| **Schema:** v202212GetRankingsRequest | **Type:** object |
| --- | --- |
| **Properties**(* = required) \| Name \| Value \| \| --- \| --- \| \| marketId * \| type: string description: Unique Geo Market identifier (as provided by the ListMarkets RPC) \| \| rankType \| type: string description: Type of the requested ranking ('customer_base', 'customer_base_retail', 'customer_base_wholesome', 'customer_base_backbone', 'customer_growth', 'peering_base'). Defaults to 'customer_base'. \| \| ip \| type: string description: IP Address Family ('v4' or 'v6') of requested ranking. Defaults to 'v4'. \| \| limit \| type: integer format: int64 description: Maximum number of entries returned. (Default: 600). \| |
| Name | Value |
| marketId * | type: string description: Unique Geo Market identifier (as provided by the ListMarkets RPC) |
| rankType | type: string description: Type of the requested ranking ('customer_base', 'customer_base_retail', 'customer_base_wholesome', 'customer_base_backbone', 'customer_growth', 'peering_base'). Defaults to 'customer_base'. |
| ip | type: string description: IP Address Family ('v4' or 'v6') of requested ranking. Defaults to 'v4'. |
| limit | type: integer format: int64 description: Maximum number of entries returned. (Default: 600). |

#### GetRankingsResponse

| **Schema:** v202212GetRankingsResponse | **Type:** object |
| --- | --- |
| **Properties:** \| Name \| Value \| \| --- \| --- \| \| rankings \| type: array items: $ref: [v202212Ranking](/v1/docs/kmi-apis#getrankings) description: List of rankings \| \| invalidCount \| type: integer format: int64 description: Number of invalid entries encountered while collecting data \| |
| Name | Value |
| rankings | type: array items: $ref: [v202212Ranking](/v1/docs/kmi-apis#getrankings) description: List of rankings |
| invalidCount | type: integer format: int64 description: Number of invalid entries encountered while collecting data |

#### ListMarketsResponse

| **Schema:** v202212ListMarketsResponse | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| markets \| type: array items: $ref: [v202212Market](/v1/docs/kmi-apis#listmarkets) description: Markets readOnly: true \| |
| Name | Value |
| markets | type: array items: $ref: [v202212Market](/v1/docs/kmi-apis#listmarkets) description: Markets readOnly: true |

#### Market

| **Schema:** v202212Market | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| marketId \| type: string description: Unique Geo Market identifier readOnly: true \| \| name \| type: string description: Geo Market Name readOnly: true \| |
| Name | Value |
| marketId | type: string description: Unique Geo Market identifier readOnly: true |
| name | type: string description: Geo Market Name readOnly: true |

#### Peer

| **Schema:** v202212Peer | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| asn \| type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true \| \| name \| type: string description: Name of the Autonomous System readOnly: true \| \| pfxCount \| type: integer format: int64 description: Prefix Count (number of distinct IP address blocks announced by AS) readOnly: true \| |
| Name | Value |
| asn | type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true |
| name | type: string description: Name of the Autonomous System readOnly: true |
| pfxCount | type: integer format: int64 description: Prefix Count (number of distinct IP address blocks announced by AS) readOnly: true |

#### Ranking

| **Schema:** v202212Ranking | **Type:** object |
| --- | --- |
| **Properties**: \| Name \| Value \| \| --- \| --- \| \| asn \| type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true \| \| name \| type: string description: Name of the Autonomous System readOnly: true \| \| rank \| type: integer format: int64 description: Rank of the Autonomous System readOnly: true \| \| rankChange \| type: integer format: int64 description: Rank Change of the Autonomous System readOnly: true \| \| score \| type: integer format: int64 description: Score of the Autonomous System readOnly: true \| \| scoreChange \| type: integer format: int64 description: Score Change of the Autonomous System readOnly: true \| |
| Name | Value |
| asn | type: integer format: int64 description: Autonomous System Number (ASN) readOnly: true |
| name | type: string description: Name of the Autonomous System readOnly: true |
| rank | type: integer format: int64 description: Rank of the Autonomous System readOnly: true |
| rankChange | type: integer format: int64 description: Rank Change of the Autonomous System readOnly: true |
| score | type: integer format: int64 description: Score of the Autonomous System readOnly: true |
| scoreChange | type: integer format: int64 description: Score Change of the Autonomous System readOnly: true |
