All articles
solanadas-apinftscompressionmetaplex

The DAS API: one interface to read every Solana asset

The Digital Asset Standard API queries NFTs, compressed NFTs, and tokens through one JSON-RPC interface — and is the only way to read cNFTs. Here's the methods, getAssetProof, and the indexer caveat.

The Digital Asset Standard (DAS) API is a standardized read API for querying every Solana asset type — regular NFTs, compressed NFTs (cNFTs), fungible/SPL tokens, and Token-2022 — through a single JSON-RPC interface. Metaplex describes it as an open specification for interacting with digital assets on Solana.

Why it exists: a cNFT lives only as a leaf in an on-chain Merkle tree — there's no account to getAccountInfo. DAS indexes the tree (and off-chain metadata) so you can read the asset and, critically, fetch the Merkle proof needed to transact it.

The methods

  • getAsset / getAssets — one or many by ID
  • getAssetProof / getAssetProofs — the Merkle proof for compressed assets
  • getAssetsByOwner / ByCreator / ByGroup (e.g. collection) / ByAuthority
  • searchAssets — flexible multi-filter query
  • getAssetSignatures; providers add extensions like getTokenAccounts
typescript
// All NFTs (compressed or not) owned by a wallet:
const res = await fetch(RPC_URL, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0", id: "1", method: "getAssetsByOwner",
    params: { ownerAddress: owner, page: 1, limit: 1000 }, // pages start at 1
  }),
}).then(r => r.json())

// To MOVE a cNFT you must include its Merkle proof:
const proof = await rpc("getAssetProof", { id: assetId })
// → { root, proof: [...], node_index, leaf, tree_id }
// feed root/proof/leaf into the Bubblegum/compression instruction

An asset object carries interface, content (metadata + files), compression (whether compressed, tree, leaf), grouping, royalty, creators, ownership, and supply.

The honest read

The catch: DAS is not part of base Solana RPC. The index is maintained by providers (Helius, Triton, QuickNode, Shyft) — so you depend on one, and extension methods, pagination semantics, and limits vary between them. It's also eventually consistent: results can lag chain state, and off-chain metadata changes are only re-indexed after on-chain activity touches the asset. None of that is a dealbreaker — DAS is the de-facto standard read layer and the only practical way to read compressed assets — but write your code against one provider's exact behavior and don't assume instant consistency.

References

If you're building anything that displays or moves Solana NFTs, DAS is the API you reach for first — and the only one that can see compressed assets at all.

The DAS API: one interface to read every Solana asset | devrels.xyz