Developer Documentation

Stuff.io
Public Beta API

Query digital ownership data across Stuff.io's entire catalog of books, music, and video on the Cardano blockchain.

View Endpoints Browse Store
Cardano Assets
Unique Holders
3
Endpoints
Free
No Auth Required
Introduction

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.

Base URL
Blockchain
Cardano Mainnet
Authentication
None required
Response Format
JSON (UTF-8)
Reference

Endpoints

GET /assets Full catalog

Returns the complete catalog of Cardano-based Stuff.io assets with holder counts.

200 OK
JSON Response
{
  "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
  ]
}
GET /assets/{wallet} Wallet lookup

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)
200 OK
JSON Response
{
  "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"
}
⚡ Try it live
Response

              
GET /asset/{slug} Asset detail + holders

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)
200 OK
JSON Response
{
  "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
  ]
}
⚡ Try it live
Response

              
GET /health Status check

Returns API health status and index statistics. Useful for verifying the service is live and indexes are loaded.

JSON Response
{
  "status":          "ok",
  "asset_count":     312,
  "indexed_wallets": 4821
}
Code Examples

Quick Start

Get started in seconds with any HTTP client.

cURL — Check what a wallet owns
curl https://developer.stuff.io/assets/addr1qx8rs3lzptjrec...
JavaScript (fetch)
// 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})`));
Python (requests)
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]}...")
Node.js — Check entire catalog
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`)
);