The DAS API
The Digital Asset Standard (DAS) API exposes rich asset metadata for tokens, NFTs, and compressed cNFTs over provider-enabled RPC endpoints.
Search across all documentation pages
The Digital Asset Standard (DAS) API exposes rich asset metadata for tokens, NFTs, and compressed cNFTs over provider-enabled RPC endpoints.
Quick-reference recipe card - copy-paste ready.
// DAS methods use JSON-RPC on DAS-enabled provider URLs
const DAS_RPC = "https://mainnet.helius-rpc.com/?api-key=YOUR_KEY";
const body = {
jsonrpc: "2.0",
id: 1,
method: "getAsset",
params: { id: "ASSET_ID_OR_MINT" },
};
const res = await fetch(DAS_RPC, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const { result } = await res.json();
console.log(result?.content?.metadata?.name);When to reach for this:
getTokenAccountsByOwner.const DAS_RPC = process.env.DAS_RPC_URL!;
async function dasRpc<T>(method: string, params: unknown): Promise<T> {
const res = await fetch(DAS_RPC, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
});
const json = await res.json();
if (json.error) throw new Error(json.error.message);
return json.result as T;
}
// Assets owned by wallet
const assets = await dasRpc<{ items: unknown[] }>("getAssetsByOwner", {
ownerAddress: "WALLET_PUBKEY",
page: 1,
limit: 50,
});
console.log("count:", assets.items?.length);
// Single asset detail
const asset = await dasRpc<unknown>("getAsset", { id: "ASSET_ID" });
console.log(asset);What this demonstrates:
getAsset, getAssetsByOwner.getAsset returns unified JSON for standard, compressed, and fungible assets where supported.@solana/kit handles standard RPC; DAS often uses fetch or provider SDK until unified in kit.| Method | Purpose |
|---|---|
getAsset | Single asset by id |
getAssetsByOwner | Wallet portfolio |
getAssetsByGroup | Collection queries |
searchAssets | Filtered discovery |
// Pair DAS reads with kit sends
import { createSolanaRpc } from "@solana/kit";
const txRpc = createSolanaRpc(process.env.RPC_URL!);
// DAS_RPC separate URL on same provider dashboard| Alternative | Use When | Don't Use When |
|---|---|---|
getTokenAccountsByOwner | Simple SPL balances only | NFT metadata richness |
| Custom indexer | Full control of schema | Fast MVP gallery |
| Metaplex SDK reads | Low-level metadata PDA | Compressed asset ergonomics |
| Explorer APIs | Ad-hoc analytics | Production app dependency |
Helius, Triton, and others advertise DAS - verify feature flag on your API key dashboard.
Yes - primary value is unified reads for Bubblegum cNFTs without manual proof decoding.
Provider-dependent - many DAS features target mainnet; check devnet support matrix.
Standard kit RPC covers validator methods; DAS typically uses provider JSON-RPC via fetch or vendor SDK.
getAssetsByGroup with group key/value (e.g., collection verified address) per provider schema.
Provider-computed identifier - do not assume equals leaf address without checking getAsset response.
Separate from standard RPC quotas - monitor 429 on portfolio endpoints.
For read-heavy wallets yes; analytics still need custom indexers for arbitrary program events.
Sub-slot to seconds behind chain depending on indexer - not identical to processed reads.
See Reading Compressed Assets DAS for cNFT-specific patterns.
Stack versions: This page was written for Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, and LiteSVM 0.6.x.
Reviewed by Chris St. John·Last updated Jul 16, 2026