curl --request GET \
--url https://scienter.xyz/api/v1/solana/deployer/{address} \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter.xyz/api/v1/solana/deployer/{address}"
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/solana/deployer/{address}', 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/solana/deployer/{address}",
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/solana/deployer/{address}"
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/solana/deployer/{address}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter.xyz/api/v1/solana/deployer/{address}")
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>"
}What the wallet that deployed a Solana token has done before
Every settled launch the census has recorded for this deployer, and whether any of them survived.
Three answers. flagged means every settled launch by this wallet has died. record means a settled record exists and at least one launch survived. no_record is returned as insufficient_evidence and is not clean: most wallets on Solana have deployed nothing that was measured, and reporting those as clean would be the same error as reporting an unscreened address as clear of sanctions.
The flag is a NEGATIVE screen, scored once on a held-out later window: flagged launches were still listed a day later 0.80% of the time against 4.34% for the rest, with non-overlapping Wilson intervals. It says a launch is likelier to be gone tomorrow. It does not say anything is worth buying.
Case is load-bearing: Solana addresses are base58, so the lookup is exact and a mis-cased address answers no_record rather than matching something else.
curl --request GET \
--url https://scienter.xyz/api/v1/solana/deployer/{address} \
--header 'Authorization: Bearer <token>'import requests
url = "https://scienter.xyz/api/v1/solana/deployer/{address}"
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/solana/deployer/{address}', 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/solana/deployer/{address}",
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/solana/deployer/{address}"
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/solana/deployer/{address}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scienter.xyz/api/v1/solana/deployer/{address}")
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>"
}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.
Path Parameters
A base58 Solana wallet address, exact case.
^[1-9A-HJ-NP-Za-km-z]{32,44}$Response
ok with the deployer record, or insufficient_evidence when no settled launch by this wallet has been recorded.
The four-state envelope. state: ok carries data as described; the three absences carry data: null and reason. See the Absent schema.