curl -X GET "https://api.credprotocol.com/api/v2/report/address/vitalik.eth" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://api.credprotocol.com/api/v2/report/address/vitalik.eth', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const report = await response.json();
console.log(`Total Value: $${report.assets.total_value_usd}`);
import requests
response = requests.get(
'https://api.credprotocol.com/api/v2/report/address/vitalik.eth',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
report = response.json()
print(f"Total Value: ${report['assets']['total_value_usd']}")
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"score": {
"value": 847,
"classification": "Excellent"
},
"assets": {
"total_value_usd": 125000000.50,
"tokens": [
{
"symbol": "ETH",
"name": "Ethereum",
"balance": "50000.5",
"value_usd": 100000000,
"chain_id": 1
}
],
"nfts": [
{
"name": "CryptoPunk #1234",
"collection": "CryptoPunks",
"chain_id": 1
}
]
},
"defi": {
"protocols": [
{
"name": "Aave",
"supplied": 1000000,
"borrowed": 0,
"chain_id": 1
}
],
"total_supplied": 1000000,
"total_borrowed": 0
},
"activity": {
"first_transaction": "2015-08-07T00:00:00Z",
"total_transactions": 15420,
"active_chains": [1, 137, 42161]
},
"cached": false,
"timestamp": "2024-01-15T10:30:00Z"
}
Report
Get Credit Report
Get a comprehensive credit report for an Ethereum address
GET
/
api
/
v2
/
report
/
address
/
{address}
curl -X GET "https://api.credprotocol.com/api/v2/report/address/vitalik.eth" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://api.credprotocol.com/api/v2/report/address/vitalik.eth', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const report = await response.json();
console.log(`Total Value: $${report.assets.total_value_usd}`);
import requests
response = requests.get(
'https://api.credprotocol.com/api/v2/report/address/vitalik.eth',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
report = response.json()
print(f"Total Value: ${report['assets']['total_value_usd']}")
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"score": {
"value": 847,
"classification": "Excellent"
},
"assets": {
"total_value_usd": 125000000.50,
"tokens": [
{
"symbol": "ETH",
"name": "Ethereum",
"balance": "50000.5",
"value_usd": 100000000,
"chain_id": 1
}
],
"nfts": [
{
"name": "CryptoPunk #1234",
"collection": "CryptoPunks",
"chain_id": 1
}
]
},
"defi": {
"protocols": [
{
"name": "Aave",
"supplied": 1000000,
"borrowed": 0,
"chain_id": 1
}
],
"total_supplied": 1000000,
"total_borrowed": 0
},
"activity": {
"first_transaction": "2015-08-07T00:00:00Z",
"total_transactions": 15420,
"active_chains": [1, 137, 42161]
},
"cached": false,
"timestamp": "2024-01-15T10:30:00Z"
}
Overview
Returns a comprehensive credit report including asset balances, NFT holdings, DeFi positions, and transaction history across multiple blockchain networks.Reports aggregate data from 10+ supported networks and are cached for 5 minutes.
Path Parameters
string
required
Ethereum address or ENS name (e.g.,
vitalik.eth or 0x742d35Cc6634C0532925a3b844Bc9e7595f0Ab17)Response
string
The resolved Ethereum address (checksummed)
object
Credit score summary
integer
Credit score between 300-1000
string
Score classification
object
Asset holdings across all networks
number
Total portfolio value in USD
array
List of token holdings
array
List of NFT holdings
object
DeFi positions and activity
array
Active DeFi protocol positions
number
Total value supplied to lending protocols
number
Total value borrowed from lending protocols
object
Transaction activity summary
string
Date of first transaction
integer
Total number of transactions
boolean
Whether the response was served from cache
Credit Events
The full report includes acredit_events section with the address’s lending-protocol event history. See Chains & Protocols for coverage.
object
What kind of account the address is.
type is contract when the address holds code on any chain it is active on (a Safe, a smart account, an ERC-8004 agent), eoa for a wallet, or unknown when no chain could be read. contract_chains lists the chains with contract code, delegated_chains those where the wallet has an EIP-7702 delegation (still a wallet), checked_chains what was read. A contract is reported and scored like a wallet; this field says which it is.string
The least complete
coverage of any pool. complete means every pool’s history is complete and current.object
Event counts across all covered pools:
supply, withdraw, borrow, repay, liquidationobject
USD value of the events across all covered pools, each at the price of its day:
supply, withdraw, borrow, repay, liquidation (the debt a liquidator repaid) and liquidation_collateral (the collateral seized). Values are stored once per event, so they are stable across requests.integer
Events with no USD value yet: either not valued yet (they are valued within a few seconds of being stored, or by the next report) or in an asset with no market price (spam tokens). Compare with
totals to see how much of the history the volumes cover.object
count, debt_repaid_usd and collateral_seized_usd over all liquidations, the largest_debt_repaid_usd and largest_collateral_seized_usd of any single one (null without a valued liquidation), and last_at.object
How long the address’s borrowing stays open, from the stored events replayed per pool and asset: a loan episode opens when the outstanding debt goes from nothing to something and closes when repayments (or a liquidation) bring it back to nothing.
episodes, closed, open, closed_by_liquidation, average_closed_days, longest_days (closed or still open), open_days (the longest currently open), open_since, last_closed_at, and by_protocol with episodes, closed, open and average_closed_days each. A history that starts mid-loan (pool coverage not complete) opens no episode for the repayments it cannot match.array
One entry per covered lending pool contract. Protocols with several markets on a chain (Compound) have one entry per market.
string
aave_v2, aave_v3, compound_v3, compound_v2 or morpho_bluestring
Market name for protocols with several markets per chain (for example
cUSDCv3, cDAI); null for single-pool protocolsboolean
Whether this pool’s repayments and liquidations count towards the score.
false for a protocol still being validated: its events are shown but do not move the score.integer
Chain the pool is deployed on
string
How complete the event history is for this pool. See the table below.
integer
The block the event history is complete through.
null if the pool has not been read yet.object
Event counts for this pool, by event type. A count is
null for an event type that is not collected for the protocol (Compound V2 supply and withdraw), which is different from 0.object
The pool’s USD volumes by event type, as for the section total.
null for an event type that is not collected for the protocol.integer
The pool’s events with no USD value yet
string
Timestamp of the earliest event, or
null if there are nonestring
Timestamp of the most recent event, or
null if there are noneobject
Recent borrowing on the pools that feed the score, over the last
window_days (90) days: originations (borrow events), repayments, net_new_borrowing (originations minus repayments), originations_prior_window (borrows in the 90 days before that), acceleration (how many more originations than in the prior window, floored at 0), new_protocols (protocols first borrowed on inside the window) and last_borrow_at. These are the New Credit factor’s inputs.object
{"status": "not_applicable"} with a reason. Defaults are not observable on overcollateralized protocols.object
{"status": "not_applicable"} with a reasonarray
Lending protocols whose event history is not yet available, so that a missing record is not read as a clean one
boolean
Whether these events contribute to the address’s Cred Score
Coverage
| Value | Meaning |
|---|---|
complete | The event history is complete and current |
partial | The history is complete through synced_to_block but not yet current |
pending | The address is being read for the first time. Request the report again shortly. |
failed | The pool could not be read. Counts for this pool are not available. |
The first report for an address with a long borrowing history may return
pending while its events are read in the background, usually within a few seconds. Until coverage is complete, the counts, and any score that depends on them, may understate the address’s history. Check coverage before relying on count_repayments or count_liquidations. An incomplete report is never cached for more than 30 seconds.Example
"credit_events": {
"coverage": "complete",
"feeds_score": true,
"totals": { "supply": 5, "withdraw": 0, "borrow": 7, "repay": 4, "liquidation": 0 },
"pools": [
{
"protocol": "aave_v3",
"chain_id": 1,
"market_address": "0x87870bca3f3fd6335c3f4ce8392d69350b4fa4e2",
"market": null,
"feeds_score": true,
"coverage": "complete",
"synced_to_block": 26080712,
"counts": { "supply": 5, "withdraw": 0, "borrow": 7, "repay": 4, "liquidation": 0 },
"first_event_at": "2025-03-08T08:24:47+00:00",
"last_event_at": "2026-09-01T16:59:23+00:00"
},
{
"protocol": "compound_v3",
"chain_id": 1,
"market_address": "0xc3d688b66703497daa19211eedff47f25384cdc3",
"market": "cUSDCv3",
"feeds_score": false,
"coverage": "complete",
"synced_to_block": 26080712,
"counts": { "supply": 2, "withdraw": 1, "borrow": 3, "repay": 3, "liquidation": 0 },
"first_event_at": "2025-06-11T10:02:35+00:00",
"last_event_at": "2026-08-20T21:14:59+00:00"
},
{
"protocol": "compound_v2",
"chain_id": 1,
"market_address": "0x39aa39c021dfbae8fac545936693ac917d5e7563",
"market": "cUSDC",
"feeds_score": false,
"coverage": "complete",
"synced_to_block": 26080700,
"counts": { "supply": null, "withdraw": null, "borrow": 1, "repay": 1, "liquidation": 0 },
"first_event_at": "2021-02-03T14:40:11+00:00",
"last_event_at": "2021-05-19T07:12:44+00:00"
}
],
"new_credit": {
"window_days": 90,
"originations": 2,
"repayments": 1,
"net_new_borrowing": 1,
"originations_prior_window": 3,
"acceleration": 0,
"new_protocols": ["compound_v3"],
"last_borrow_at": "2026-08-20T21:14:59+00:00"
},
"defaults": { "status": "not_applicable", "reason": "..." },
"delinquencies": { "status": "not_applicable", "reason": "..." },
"not_covered": []
}
Supported Networks
Reports aggregate data from the following networks:| Network | Chain ID |
|---|---|
| Ethereum | 1 |
| Polygon | 137 |
| Arbitrum | 42161 |
| Optimism | 10 |
| Base | 8453 |
| Avalanche | 43114 |
| BNB Chain | 56 |
| Fantom | 250 |
| zkSync | 324 |
| Linea | 59144 |
| Robinhood Chain | 4663 |
curl -X GET "https://api.credprotocol.com/api/v2/report/address/vitalik.eth" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://api.credprotocol.com/api/v2/report/address/vitalik.eth', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const report = await response.json();
console.log(`Total Value: $${report.assets.total_value_usd}`);
import requests
response = requests.get(
'https://api.credprotocol.com/api/v2/report/address/vitalik.eth',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
report = response.json()
print(f"Total Value: ${report['assets']['total_value_usd']}")
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"score": {
"value": 847,
"classification": "Excellent"
},
"assets": {
"total_value_usd": 125000000.50,
"tokens": [
{
"symbol": "ETH",
"name": "Ethereum",
"balance": "50000.5",
"value_usd": 100000000,
"chain_id": 1
}
],
"nfts": [
{
"name": "CryptoPunk #1234",
"collection": "CryptoPunks",
"chain_id": 1
}
]
},
"defi": {
"protocols": [
{
"name": "Aave",
"supplied": 1000000,
"borrowed": 0,
"chain_id": 1
}
],
"total_supplied": 1000000,
"total_borrowed": 0
},
"activity": {
"first_transaction": "2015-08-07T00:00:00Z",
"total_transactions": 15420,
"active_chains": [1, 137, 42161]
},
"cached": false,
"timestamp": "2024-01-15T10:30:00Z"
}
Performance
- Response Time: Typically 3-10 seconds depending on activity
- Caching: Results cached for 5 minutes per address