curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history?days=180"
import httpx
response = httpx.get(
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history",
params={"days": 180},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
history = response.json()
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"days": 180,
"count": 2,
"points": [
{
"timestamp": "2026-10-30T09:12:44+00:00",
"score": 741,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
},
{
"timestamp": "2026-10-02T17:40:03+00:00",
"score": 726,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
}
]
}
Score
Score History
Get the recorded credit score history of an Ethereum address
GET
/
api
/
v2
/
score
/
address
/
{address}
/
history
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history?days=180"
import httpx
response = httpx.get(
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history",
params={"days": 180},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
history = response.json()
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"days": 180,
"count": 2,
"points": [
{
"timestamp": "2026-10-30T09:12:44+00:00",
"score": 741,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
},
{
"timestamp": "2026-10-02T17:40:03+00:00",
"score": 726,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
}
]
}
Overview
Returns the scores recorded for an address over a window, newest first, so you can see how a wallet’s creditworthiness has moved rather than only where it stands today. A score is recorded every time it is computed:- by any API request that scores the address (
GET /score/address/{address}, the batch and aggregate endpoints, the report endpoints that compute a score); - by the cache warmer, for frequently requested addresses;
- by a refresh after on-chain activity on an address watched by a
score_changewebhook.
An address that has never been scored has an empty history. Request its score once, or watch it with a
score_change webhook to keep its history current without polling.Authentication
| Method | Header | Cost |
|---|---|---|
| API Token | Authorization: Bearer YOUR_API_KEY | 1 Cred Unit |
| x402 Payment | X-PAYMENT: <signed_payment> | $0.01 USDC |
Path Parameters
string
required
Ethereum address or ENS name (e.g.,
vitalik.eth or 0x742d35Cc6634C0532925a3b844Bc9e7595f0Ab17)Query Parameters
integer
default:"90"
Window length, in days before now. Maximum 365.
integer
default:"100"
Maximum number of points to return. Maximum 1000.
Response
string
The resolved Ethereum address
integer
The window length that was applied
integer
Number of points returned
array
Recorded scores in the window, newest first. Each point has
timestamp (ISO 8601), score (300-1000), decile (1-10), range (low, fair, good, very_good, excellent) and model_version.curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history?days=180"
import httpx
response = httpx.get(
"https://api.credprotocol.com/api/v2/score/address/vitalik.eth/history",
params={"days": 180},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
history = response.json()
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"days": 180,
"count": 2,
"points": [
{
"timestamp": "2026-10-30T09:12:44+00:00",
"score": 741,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
},
{
"timestamp": "2026-10-02T17:40:03+00:00",
"score": 726,
"decile": 8,
"range": "good",
"model_version": "andromeda_1.4"
}
]
}