curl --request GET \
--url https://scienter.xyz/api/v1/leaderboard \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter.xyz/api/v1/leaderboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scienter.xyz/api/v1/leaderboard', 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://scienter.xyz/api/v1/leaderboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://scienter.xyz/api/v1/leaderboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scienter.xyz/api/v1/leaderboard")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter.xyz/api/v1/leaderboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"state": "ok",
"subject": "<string>",
"sources": [
{
"name": "scienter:intelligence",
"url": "<string>",
"as_of": 123
}
],
"as_of": 123,
"data": {
"entries": [
{
"address": "<string>",
"chain": "<string>",
"score": 123,
"first_flagged_at": "<string>",
"last_scored_at": "<string>",
"top_evidence": {},
"model_version": "<string>"
}
],
"count": 123,
"empty": true,
"empty_reason": "<string>",
"window_hours": 123,
"suppressed": 123
},
"reason": "<string>"
}{
"error": "<string>",
"reason": "no_credential",
"entitlements_durable": true
}{
"error": "<string>"
}The Wall of Rugs, as data
Wallets the rug model flagged in the last 24 hours, ranked by score, each with the single strongest piece of evidence behind it. Every row is an accusation about a named address, so established tokens are removed again here even though the producer already excludes them.
An empty entries list under ok is an answer and empty_reason says which one: a quiet day, or a flag table that no scorer has ever written (a gap in coverage, named as such). An engine that did not answer is not_deployed with data: null.
curl --request GET \
--url https://scienter.xyz/api/v1/leaderboard \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter.xyz/api/v1/leaderboard"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://scienter.xyz/api/v1/leaderboard', 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://scienter.xyz/api/v1/leaderboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://scienter.xyz/api/v1/leaderboard"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scienter.xyz/api/v1/leaderboard")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter.xyz/api/v1/leaderboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"state": "ok",
"subject": "<string>",
"sources": [
{
"name": "scienter:intelligence",
"url": "<string>",
"as_of": 123
}
],
"as_of": 123,
"data": {
"entries": [
{
"address": "<string>",
"chain": "<string>",
"score": 123,
"first_flagged_at": "<string>",
"last_scored_at": "<string>",
"top_evidence": {},
"model_version": "<string>"
}
],
"count": 123,
"empty": true,
"empty_reason": "<string>",
"window_hours": 123,
"suppressed": 123
},
"reason": "<string>"
}{
"error": "<string>",
"reason": "no_credential",
"entitlements_durable": true
}{
"error": "<string>"
}Authorizations
An sc_ key from https://scienter.xyz/settings/api, sent as Authorization: Bearer sc_.... The same key is accepted in the x-scienter-membership header. Prefer the header over any query form: a credential in a URL reaches access logs, proxies and browser history.
Query Parameters
x <= 100Response
ok with the entries (possibly empty, with empty_reason), or not_deployed.
The four-state envelope. state: ok carries data as described; the three absences carry data: null and reason. See the Absent schema.