Kentik Kentik Market Intelligence (KMI) API (v6)
Query market-intelligence data on network operators, peering, and connectivity.
Query market-intelligence data on network operators, peering, and connectivity.
{
"openapi": "3.0.0",
"info": {
"title": "Kentik Market Intelligence (KMI) API",
"description": "# Overview\nThe 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.\n\n# KMI Ranking Types\n\nThe following types of rankings are shown:\n- **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:\n - Retail networks provide services (e.g. originate content) or have end-users that are consumers of services (e.g. ISPs or \"eyeball\" networks).\n - Wholesale networks connect retail networks to backbone networks.\n - Backbone networks carry high volumes of traffic between wholesale networks.\n- **Customer Growth**: Ranked by the change in overall customer base (gain/loss of prefixes) over the last 20 days.\n- **Peering**: Ranked by the amount of IP address space sent to the AS over a settlement-free peering session.\n\nBoth REST endpoint and gRPC RPCs are provided.\n\n**_Note:_** More information about KMI can be found at [Kentik Market Intelligence](https://kb.kentik.com/v4/Ha04.htm).",
"version": "v202212",
"contact": {
"name": "Kentik API Engineering",
"url": "https://github.com/kentik/api-schema-public"
}
},
"tags": [
{
"name": "KmiService"
}
],
"paths": {
"/kmi/v202212/insights": {
"get": {
"summary": "List global KMI insights.",
"description": "Returns list of global KMI insights.",
"operationId": "GetGlobalInsights",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202212GetGlobalInsightsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "limit",
"description": "Maximum number of insights to return. Defaults to 100.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "marketId",
"description": "Geo Market identifier (e.g., 'planet$earth'). If omitted, defaults to global market.",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "ip",
"description": "IP Address Family ('v4' or 'v6'). Defaults to 'v4'.",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "lookback",
"description": "Lookback in days. Allowed values: 1, 7, 30. Defaults to 1.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "types",
"description": "Insight types to include. Provide as repeated query params, e.g., types=market_entrance&types=market_exit. Allowed: market_entrance, market_exit, ranking_gain, ranking_loss, start_prefix_origination, stop_prefix_origination, increase_prefix_origination, decrease_prefix_origination, customer_gain, customer_loss, customer_routing_gain, customer_routing_loss, provider_gain, provider_loss, provider_routing_gain, provider_routing_loss.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "magnitude",
"description": "Minimum magnitude (severity) threshold, integer 1–5. Defaults to 1.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"tags": [
"KmiService"
]
}
},
"/kmi/v202212/insights/{asn}": {
"get": {
"summary": "List ASN-specific KMI insights.",
"description": "Returns list of KMI insights for a specific Autonomous System.",
"operationId": "GetASNInsights",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202212GetASNInsightsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "asn",
"description": "Autonomous System Number (ASN)",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "limit",
"description": "Maximum number of insights to return. Defaults to 100.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "marketId",
"description": "Geo Market identifier (e.g., 'planet$earth'). If omitted, defaults to global market.",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "ip",
"description": "IP Address Family ('v4' or 'v6'). Defaults to 'v4'.",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "lookback",
"description": "Lookback in days. Allowed values: 1, 7, 30. Defaults to 1.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "types",
"description": "Insight types to include. Allowed: market_entrance, market_exit, ranking_gain, ranking_loss, start_prefix_origination, stop_prefix_origination, increase_prefix_origination, decrease_prefix_origination, customer_gain, customer_loss, customer_routing_gain, customer_routing_loss, provider_gain, provider_loss, provider_routing_gain, provider_routing_loss.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "magnitude",
"description": "Minimum magnitude (severity) threshold, integer 1–5. Defaults to 1.",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"tags": [
"KmiService"
]
}
},
"/kmi/v202212/market/{marketId}/network/{asn}/{type}": {
"post": {
"summary": "List metadata and list of customers, providers, and peers for an Autonomous System.",
"description": "Returns metadata and list of customers, providers, and peers for an Autonomous System.",
"operationId": "GetASNDetails",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202212GetASNDetailsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "marketId",
"description": "Unique Geo Market identifier (as provided by the ListMarkets RPC)",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "asn",
"description": "Autonomous System Number (ASN)",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "type",
"description": "Type of the requested ASN ('all', 'customers', 'providers', 'peers'). Defaults to 'all'.",
"in": "path",
"required": true,
"schema": {
"type": "string",
"default": "all"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KmiServiceGetASNDetailsBody"
}
}
},
"required": true
},
"tags": [
"KmiService"
]
}
},
"/kmi/v202212/market/{marketId}/rankings/{rankType}/ip/{ip}": {
"post": {
"summary": "List KMI rankings by geo market and rank type.",
"description": "Returns list of KMI rankings.",
"operationId": "GetRankings",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202212GetRankingsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "marketId",
"description": "Unique Geo Market identifier (as provided by the ListMarkets RPC)",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "rankType",
"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'.",
"in": "path",
"required": true,
"schema": {
"type": "string",
"default": "customer_base"
}
},
{
"name": "ip",
"description": "IP Address Family ('v4' or 'v6') of requested ranking. Defaults to 'v4'.",
"in": "path",
"required": true,
"schema": {
"type": "string",
"default": "v4"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/KmiServiceGetRankingsBody"
}
}
},
"required": true
},
"tags": [
"KmiService"
]
}
},
"/kmi/v202212/markets": {
"get": {
"summary": "List all geo markets for KMI.",
"description": "Returns list of geo markets for KMI.",
"operationId": "ListMarkets",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202212ListMarketsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"tags": [
"KmiService"
]
}
}
},
"security": [
{
"email": [],
"token": []
}
],
"externalDocs": {
"description": "General information about Kentik APIs",
"url": "https://kb.kentik.com/v0/Ab09.htm#Ab09-APIs_Overview"
},
"components": {
"securitySchemes": {
"email": {
"type": "apiKey",
"name": "X-CH-Auth-Email",
"in": "header"
},
"token": {
"type": "apiKey",
"name": "X-CH-Auth-API-Token",
"in": "header"
}
},
"schemas": {
"KmiServiceGetASNDetailsBody": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"enum": [
"v4",
"v6"
],
"default": "v4",
"description": "IP Address Family ('v4' or 'v6'). Defaults to 'v4'."
},
"mutualProvider": {
"type": "string",
"enum": [
"all",
"only",
"exclude"
],
"default": "all",
"description": "Filter by mutual provider ('all', 'only', 'exclude'). Defaults to 'all'."
},
"mutualCustomer": {
"type": "string",
"enum": [
"all",
"only",
"exclude"
],
"default": "all",
"description": "Filter by mutual customer ('all', 'only', 'exclude'). Defaults to 'all'."
},
"singlehomedCustomer": {
"type": "string",
"enum": [
"all",
"only",
"exclude"
],
"default": "all",
"description": "Filter by singlehomed customer ('all', 'only', 'exclude'). Defaults to 'all'."
}
},
"title": "GetASNDetailsRequest"
},
"KmiServiceGetRankingsBody": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"format": "int64",
"description": "Maximum number of entries returned. (Default: 600)."
}
},
"title": "GetRankingsRequest"
},
"protobufAny": {
"type": "object",
"properties": {
"@type": {
"type": "string"
}
},
"additionalProperties": {}
},
"rpcStatus": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/protobufAny"
}
}
}
},
"v202212ASNDetails": {
"type": "object",
"properties": {
"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": "#/components/schemas/v202212CustomerProvider"
},
"description": "List of Customers",
"readOnly": true
},
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212CustomerProvider"
},
"description": "List of Providers",
"readOnly": true
},
"peers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212Peer"
},
"description": "List of Peers",
"readOnly": true
}
},
"title": "ASNDetails"
},
"v202212CustomerProvider": {
"type": "object",
"properties": {
"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
}
},
"title": "CustomerProvider"
},
"v202212GetASNDetailsResponse": {
"type": "object",
"properties": {
"asnDetails": {
"$ref": "#/components/schemas/v202212ASNDetails"
}
},
"title": "GetASNDetailsResponse"
},
"v202212GetASNInsightsResponse": {
"type": "object",
"properties": {
"insights": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212Insight"
},
"description": "List of ASN-specific insights",
"readOnly": true
}
},
"title": "GetASNInsightsResponse"
},
"v202212GetGlobalInsightsResponse": {
"type": "object",
"properties": {
"insights": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212Insight"
},
"description": "List of global insights",
"readOnly": true
}
},
"title": "GetGlobalInsightsResponse"
},
"v202212GetRankingsResponse": {
"type": "object",
"properties": {
"rankings": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212Ranking"
},
"description": "List of rankings"
},
"invalidCount": {
"type": "integer",
"format": "int64",
"description": "Number of invalid entries encountered while collecting data"
}
},
"title": "GetRankingsResponse"
},
"v202212Insight": {
"type": "object",
"properties": {
"asn": {
"type": "integer",
"format": "int64",
"description": "Autonomous System Number (ASN)",
"readOnly": true
},
"name": {
"type": "string",
"description": "Name of the Autonomous System",
"readOnly": true
},
"type": {
"type": "integer",
"format": "int64",
"description": "Type of insight",
"readOnly": true
},
"message": {
"type": "string",
"description": "Insight message text",
"readOnly": true
},
"createdAt": {
"type": "string",
"description": "Timestamp when insight was created",
"readOnly": true
}
},
"title": "Insight"
},
"v202212ListMarketsResponse": {
"type": "object",
"properties": {
"markets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202212Market"
},
"description": "Markets",
"readOnly": true
}
},
"title": "ListMarketsResponse"
},
"v202212Market": {
"type": "object",
"properties": {
"marketId": {
"type": "string",
"description": "Unique Geo Market identifier",
"readOnly": true
},
"name": {
"type": "string",
"description": "Geo Market Name",
"readOnly": true
}
},
"title": "Market"
},
"v202212Peer": {
"type": "object",
"properties": {
"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
}
},
"title": "Peer"
},
"v202212Ranking": {
"type": "object",
"properties": {
"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
}
},
"title": "Ranking"
}
}
}
}