Get latest cached score for a company.
curl --request GET \
--url https://api.keplerinsights.us/v1/score/{domain} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.keplerinsights.us/v1/score/{domain}"
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/score/{domain}', 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/score/{domain}",
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/score/{domain}"
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/score/{domain}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.keplerinsights.us/v1/score/{domain}")
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{
"domain": "<string>",
"scored_at": "2023-11-07T05:31:56Z",
"ki_rating": "KI-1+",
"composite_score": 50,
"buckets": {
"team_structure": 50,
"market_position": 50,
"momentum_tailwinds": 50,
"financial_health": 50
},
"mode": "<string>",
"scale_premium": 6,
"rank": {
"percentile": 50,
"cohort_size": 1
},
"x_kepler": {
"tier": "free",
"cache_status": "cached",
"freshness_window_hours": 123
}
}{
"error": "unauthorized",
"message": "<string>",
"reason": "<string>"
}{
"error": "unauthorized",
"message": "<string>",
"reason": "<string>"
}Endpoints
GET /v1/score/{domain}
Read the latest cached score for a company. Never triggers a cold run.
GET
/
v1
/
score
/
{domain}
Get latest cached score for a company.
curl --request GET \
--url https://api.keplerinsights.us/v1/score/{domain} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.keplerinsights.us/v1/score/{domain}"
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/score/{domain}', 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/score/{domain}",
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/score/{domain}"
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/score/{domain}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.keplerinsights.us/v1/score/{domain}")
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{
"domain": "<string>",
"scored_at": "2023-11-07T05:31:56Z",
"ki_rating": "KI-1+",
"composite_score": 50,
"buckets": {
"team_structure": 50,
"market_position": 50,
"momentum_tailwinds": 50,
"financial_health": 50
},
"mode": "<string>",
"scale_premium": 6,
"rank": {
"percentile": 50,
"cohort_size": 1
},
"x_kepler": {
"tier": "free",
"cache_status": "cached",
"freshness_window_hours": 123
}
}{
"error": "unauthorized",
"message": "<string>",
"reason": "<string>"
}{
"error": "unauthorized",
"message": "<string>",
"reason": "<string>"
}Cached-only score lookup. Returns the freshest stored record, or
404 if Kepler has never scored this domain.
When to use it
- After a
202fromPOST /v1/score— onceGET /v1/jobs/{job_id}reportsstatus: "complete", call this endpoint (or use thescore_urlthe job response hands you) to fetch the fresh score. The Python and TypeScript SDKs do this automatically insideKepler.score(). - To re-render an existing UI without using a cold-call slot — calls to this endpoint count against your cached quota, not cold.
What it does NOT do
- Trigger a cold run. Even with no cached record, you get
404, never a 60-second wait. - Respect the freshness window. It returns the latest record regardless of age. If you care about freshness, check the
scored_attimestamp yourself or usePOST /v1/score.
Example
curl https://api.keplerinsights.us/v1/score/stripe.com \
-H "X-API-Key: ki_live_..."
{
"domain": "stripe.com",
"scored_at": "2026-05-12T14:30:00Z",
"ki_rating": "KI-1+",
"composite_score": 78.2,
"scale_premium": 6.4,
"buckets": { ... },
"rank": { "percentile": 99, "cohort_size": 541 },
"x_kepler": {
"tier": "growth",
"cache_status": "cached",
"freshness_window_hours": 6
}
}
Authorizations
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.
Path Parameters
Bare hostname. Strips a leading www. and any URL scheme automatically.
Response
Latest score.
Available options:
KI-1+, KI-1, KI-2+, KI-2, KI-3, KI-4, KI-5 Required range:
0 <= x <= 100The 4 KI buckets. Each is 0–100.
Show child attributes
Show child attributes
Present and = sandbox only with a ki_test_ key.
Up to ~12 pts for established mega-caps; up to ~6 pts for growth profile.
Required range:
0 <= x <= 12Show child attributes
Show child attributes
Caller-facing metadata. Stable across versions.
Show child attributes
Show child attributes

