What Is This?
The Stuff.io Public API lets you query on-chain ownership data for all digital assets published on stuff.io — books, audiobooks, music, and video minted on the Cardano blockchain as Media Tokens (DEAs).
You can look up which Stuff.io assets a given wallet holds, or see all wallets that own a specific asset. Holder data is indexed from Blockfrost and cached locally for fast responses. No API key is required.
Endpoints
Returns the complete catalog of Cardano-based Stuff.io assets with holder counts.
{
"total": 312,
"assets": [
{
"slug": "the-maltese-falcon",
"title": "The Maltese Falcon",
"type": "book",
"policy_id": "f8c8eb7ec132141312b659815d8f92a6d7f4665caf28215a2a487c75",
"holder_count": 47,
"url": "https://stuff.io/book/the-maltese-falcon/"
},
// ... more assets
]
}
Returns all Stuff.io assets held by a given Cardano wallet address. Pass any valid addr1... address.
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet |
string | required | Cardano Shelley-era wallet address (starts with addr1) |
{
"wallet": "addr1qx8...",
"count": 3,
"assets": [
{
"slug": "the-maltese-falcon",
"title": "The Maltese Falcon",
"type": "book",
"policy_id": "f8c8eb7ec132141312b659815d8f92a6d7f4665caf28215a2a487c75",
"url": "https://stuff.io/book/the-maltese-falcon/"
}
]
}
// 404 if wallet holds no Stuff.io assets
{
"detail": "No Stuff.io assets found for this wallet"
}
Returns detailed info for a specific asset including its full holder list. Use the URL slug from stuff.io (e.g. the-maltese-falcon).
| Parameter | Type | Required | Description |
|---|---|---|---|
slug |
string | required | URL slug from stuff.io asset page (e.g. the-maltese-falcon) |
{
"slug": "the-maltese-falcon",
"title": "The Maltese Falcon",
"type": "book",
"policy_id": "f8c8eb7ec132141312b659815d8f92a6d7f4665caf28215a2a487c75",
"url": "https://stuff.io/book/the-maltese-falcon/",
"holder_count": 47,
"holders": [
"addr1qx8rs3lzptjrec...",
"addr1q9h0h7vctau9p5...",
// ... more wallet addresses
]
}
Returns API health status and index statistics. Useful for verifying the service is live and indexes are loaded.
{
"status": "ok",
"asset_count": 312,
"indexed_wallets": 4821
}
Quick Start
Get started in seconds with any HTTP client.
curl https://developer.stuff.io/assets/addr1qx8rs3lzptjrec...
// Get all assets owned by a wallet const wallet = "addr1qx8rs3lzptjrec..."; const res = await fetch(`https://developer.stuff.io/assets/${wallet}`); const data = await res.json(); console.log(`This wallet owns ${data.count} Stuff.io assets:`); data.assets.forEach(a => console.log(` - ${a.title} (${a.type})`));
import requests # Who owns The Maltese Falcon? r = requests.get("https://developer.stuff.io/asset/the-maltese-falcon") data = r.json() print(f"'{data['title']}' has {data['holder_count']} owners:") for addr in data['holders'][:5]: print(f" {addr[:20]}...")
const { data } = await axios.get('https://developer.stuff.io/assets');
// Find top 5 most-owned assets
const top5 = data.assets
.sort((a, b) => b.holder_count - a.holder_count)
.slice(0, 5);
top5.forEach(a =>
console.log(`${a.title}: ${a.holder_count} holders`)
);