Skip to main content
GET
/
v1
/
distribution
Universe-wide score distribution.
curl --request GET \
  --url https://api.keplerinsights.us/v1/distribution \
  --header 'X-API-Key: <api-key>'
import requests

url = "https://api.keplerinsights.us/v1/distribution"

headers = {"X-API-Key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};

fetch('https://api.keplerinsights.us/v1/distribution', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.keplerinsights.us/v1/distribution",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.keplerinsights.us/v1/distribution"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-API-Key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.keplerinsights.us/v1/distribution")
.header("X-API-Key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.keplerinsights.us/v1/distribution")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "mode": "<string>",
  "pipeline_version": "v1",
  "universe": {
    "count": 123,
    "mean": 123,
    "p50": 123,
    "p90": 123,
    "stddev": 123,
    "min": 123,
    "max": 123,
    "composite_hist": [
      {
        "range": "60-65",
        "count": 123
      }
    ],
    "scale_premium_hist": [
      {
        "range": "60-65",
        "count": 123
      }
    ],
    "rating_dist": {},
    "profile_split": {
      "growth": 123,
      "established": 123,
      "unclassified": 123
    }
  }
}
{
"error": "unauthorized",
"message": "<string>",
"reason": "<string>"
}
The shape of the entire scored universe. Use it to position any individual score against everyone — “is 67 in the top 10%?” — and to render aggregate dashboards.

When to use it

  • Render a histogram of scores with your target’s position marked.
  • Sanity-check whether a tier (KI-1+) is rare or common in the current universe.
  • Compare growth vs. established profile distributions.

Response

{
  "pipeline_version": "v1",
  "universe": {
    "count": 540,
    "mean": 54.3, "p50": 53.5, "p90": 76.0,
    "stddev": 16.8, "min": 28.7, "max": 79.4,
    "composite_hist": [
      { "range": "0-5",    "count": 0 },  { "range": "5-10",   "count": 0 },
      { "range": "10-15",  "count": 0 },  { "range": "15-20",  "count": 2 },
      { "range": "20-25",  "count": 4 },  { "range": "25-30",  "count": 8 },
      { "range": "30-35",  "count": 18 }, { "range": "35-40",  "count": 32 },
      { "range": "40-45",  "count": 54 }, { "range": "45-50",  "count": 78 },
      { "range": "50-55",  "count": 92 }, { "range": "55-60",  "count": 88 },
      { "range": "60-65",  "count": 68 }, { "range": "65-70",  "count": 48 },
      { "range": "70-75",  "count": 28 }, { "range": "75-80",  "count": 14 },
      { "range": "80-85",  "count": 6 },  { "range": "85-90",  "count": 0 },
      { "range": "90-95",  "count": 0 },  { "range": "95-100", "count": 0 }
    ],
    "scale_premium_hist": [
      { "range": "0-1",   "count": 380 },
      { "range": "1-2",   "count": 88 },
      ...
    ],
    "rating_dist": {
      "KI-1+": 6, "KI-1": 22, "KI-2+": 78, "KI-2": 142,
      "KI-3":  198, "KI-4": 78, "KI-5": 16
    },
    "profile_split": { "growth": 414, "established": 116, "unclassified": 10 }
  }
}

Bin granularity

  • Composite: 20 bins of width 5 (0-5, 5-10, …, 95-100).
  • Scale premium: 12 bins of width 1 (0-1, 1-2, …, 11-12).
If you need finer resolution, paginate /v1/score/{domain}/history over a representative sample of domains and compute it yourself. The histogram here is fixed-shape so we can cache it cheaply.

pipeline_version

The universe is filtered to records produced under the current pipeline version (e.g. v1). When Kepler ships a major engine change, this version bumps and the universe is re-seeded as new records land. Don’t compare counts across pipeline versions — they’re effectively different datasets.

Caching

Served from a 10-minute in-memory cache. Two calls in the same minute will likely return the same count even if a new scoring run lands between them.

Authorizations

X-API-Key
string
header
required

Live keys are prefixed ki_live_, test keys ki_test_. Issue + revoke keys at https://console.keplerinsights.us. Never embed a key in client-side code — every endpoint is backend-to-API only.

Response

Universe distribution.

mode
string
pipeline_version
string
Example:

"v1"

universe
object