Skip to main content
GET
/
2
/
wallet
/
holdings
Get Wallet Holdings
curl --request GET \
  --url https://demo-api.mobula.io/api/2/wallet/holdings
{
  "data": {
    "totalWalletBalanceUsd": 123,
    "wallets": [
      "<string>"
    ],
    "holdings": [
      {
        "token": {
          "address": "<string>",
          "chainId": "<string>",
          "symbol": "<string>",
          "name": "<string>",
          "priceTokenString": "<string>",
          "approximateReserveTokenRaw": "<string>",
          "logo": "<string>",
          "bondedAt": "<string>",
          "createdAt": "<string>",
          "latestTradeDate": "<string>",
          "description": "<string>",
          "socials": {
            "twitter": "<string>",
            "website": "<string>",
            "telegram": "<string>",
            "others": {},
            "uri": "<string>"
          },
          "security": {
            "buyTax": "<string>",
            "sellTax": "<string>",
            "transferPausable": true,
            "top10Holders": "<string>",
            "isBlacklisted": true,
            "noMintAuthority": true,
            "isFreezable": true,
            "balanceMutable": true,
            "lowLiquidity": "<string>",
            "burnRate": "<string>",
            "liquidityBurnPercentage": 123,
            "transferTax": "<string>",
            "isHoneypot": true,
            "isNotOpenSource": true,
            "renounced": true,
            "locked": "<string>",
            "isWhitelisted": true,
            "isMintable": true,
            "modifyableTax": true,
            "selfDestruct": true
          },
          "liveStatus": "<string>",
          "liveThumbnail": "<string>",
          "livestreamTitle": "<string>",
          "liveReplyCount": 123,
          "decimals": 0,
          "id": null,
          "priceUSD": 0,
          "priceToken": 0,
          "approximateReserveUSD": 0,
          "approximateReserveToken": 0,
          "totalSupply": 0,
          "circulatingSupply": 0,
          "marketCapUSD": 0,
          "marketCapDilutedUSD": 0,
          "originLogoUrl": "<string>",
          "rank": null,
          "cexs": [],
          "exchange": {
            "name": "<string>",
            "logo": "<string>"
          },
          "factory": "<string>",
          "source": "<string>",
          "sourceFactory": "<string>",
          "sourceMetadata": {
            "name": "<string>",
            "logo": "<string>"
          },
          "sourceFactoryMetadata": {
            "name": "<string>",
            "logo": "<string>"
          },
          "liquidityUSD": 123,
          "liquidityMaxUSD": 123,
          "bonded": true,
          "bondingPercentage": 123,
          "migrating": true,
          "bondingCurveAddress": "<string>",
          "preBondingFactory": "<string>",
          "poolAddress": "<string>",
          "blockchain": "<string>",
          "type": "<string>",
          "deployer": "<string>",
          "athUSD": 123,
          "atlUSD": 123,
          "athDate": "<string>",
          "atlDate": "<string>",
          "priceChange1minPercentage": 0,
          "priceChange5minPercentage": 0,
          "priceChange1hPercentage": 0,
          "priceChange4hPercentage": 0,
          "priceChange6hPercentage": 0,
          "priceChange12hPercentage": 0,
          "priceChange24hPercentage": 0,
          "poolPriceChange1minPercentage": 0,
          "poolPriceChange5minPercentage": 0,
          "poolPriceChange1hPercentage": 0,
          "poolPriceChange4hPercentage": 0,
          "poolPriceChange6hPercentage": 0,
          "poolPriceChange12hPercentage": 0,
          "poolPriceChange24hPercentage": 0,
          "liquidityBurnPercentage": 123,
          "volume1minUSD": 0,
          "volume5minUSD": 0,
          "volume15minUSD": 0,
          "volume1hUSD": 0,
          "volume4hUSD": 0,
          "volume6hUSD": 0,
          "volume12hUSD": 0,
          "volume24hUSD": 0,
          "volumeBuy1minUSD": 0,
          "volumeBuy5minUSD": 0,
          "volumeBuy15minUSD": 0,
          "volumeBuy1hUSD": 0,
          "volumeBuy4hUSD": 0,
          "volumeBuy6hUSD": 0,
          "volumeBuy12hUSD": 0,
          "volumeBuy24hUSD": 0,
          "volumeSell1minUSD": 0,
          "volumeSell5minUSD": 0,
          "volumeSell15minUSD": 0,
          "volumeSell1hUSD": 0,
          "volumeSell4hUSD": 0,
          "volumeSell6hUSD": 0,
          "volumeSell12hUSD": 0,
          "volumeSell24hUSD": 0,
          "trades1min": 0,
          "trades5min": 0,
          "trades15min": 0,
          "trades1h": 0,
          "trades4h": 0,
          "trades6h": 0,
          "trades12h": 0,
          "trades24h": 0,
          "buys1min": 0,
          "buys5min": 0,
          "buys15min": 0,
          "buys1h": 0,
          "buys4h": 0,
          "buys6h": 0,
          "buys12h": 0,
          "buys24h": 0,
          "sells1min": 0,
          "sells5min": 0,
          "sells15min": 0,
          "sells1h": 0,
          "sells4h": 0,
          "sells6h": 0,
          "sells12h": 0,
          "sells24h": 0,
          "buyers1min": 0,
          "buyers5min": 0,
          "buyers15min": 0,
          "buyers1h": 0,
          "buyers4h": 0,
          "buyers6h": 0,
          "buyers12h": 0,
          "buyers24h": 0,
          "sellers1min": 0,
          "sellers5min": 0,
          "sellers15min": 0,
          "sellers1h": 0,
          "sellers4h": 0,
          "sellers6h": 0,
          "sellers12h": 0,
          "sellers24h": 0,
          "traders1min": 0,
          "traders5min": 0,
          "traders15min": 0,
          "traders1h": 0,
          "traders4h": 0,
          "traders6h": 0,
          "traders12h": 0,
          "traders24h": 0,
          "feesPaid1minUSD": 0,
          "feesPaid5minUSD": 0,
          "feesPaid15minUSD": 0,
          "feesPaid1hUSD": 0,
          "feesPaid4hUSD": 0,
          "feesPaid6hUSD": 0,
          "feesPaid12hUSD": 0,
          "feesPaid24hUSD": 0,
          "totalFeesPaidUSD": 0,
          "totalFeesPaidNativeRaw": "0",
          "organicTrades1min": 0,
          "organicTrades5min": 0,
          "organicTrades15min": 0,
          "organicTrades1h": 0,
          "organicTrades4h": 0,
          "organicTrades6h": 0,
          "organicTrades12h": 0,
          "organicTrades24h": 0,
          "organicTraders1min": 0,
          "organicTraders5min": 0,
          "organicTraders15min": 0,
          "organicTraders1h": 0,
          "organicTraders4h": 0,
          "organicTraders6h": 0,
          "organicTraders12h": 0,
          "organicTraders24h": 0,
          "organicVolume1minUSD": 0,
          "organicVolume5minUSD": 0,
          "organicVolume15minUSD": 0,
          "organicVolume1hUSD": 0,
          "organicVolume4hUSD": 0,
          "organicVolume6hUSD": 0,
          "organicVolume12hUSD": 0,
          "organicVolume24hUSD": 0,
          "organicVolumeBuy1minUSD": 0,
          "organicVolumeBuy5minUSD": 0,
          "organicVolumeBuy15minUSD": 0,
          "organicVolumeBuy1hUSD": 0,
          "organicVolumeBuy4hUSD": 0,
          "organicVolumeBuy6hUSD": 0,
          "organicVolumeBuy12hUSD": 0,
          "organicVolumeBuy24hUSD": 0,
          "organicVolumeSell1minUSD": 0,
          "organicVolumeSell5minUSD": 0,
          "organicVolumeSell15minUSD": 0,
          "organicVolumeSell1hUSD": 0,
          "organicVolumeSell4hUSD": 0,
          "organicVolumeSell6hUSD": 0,
          "organicVolumeSell12hUSD": 0,
          "organicVolumeSell24hUSD": 0,
          "organicBuys1min": 0,
          "organicBuys5min": 0,
          "organicBuys15min": 0,
          "organicBuys1h": 0,
          "organicBuys4h": 0,
          "organicBuys6h": 0,
          "organicBuys12h": 0,
          "organicBuys24h": 0,
          "organicSells1min": 0,
          "organicSells5min": 0,
          "organicSells15min": 0,
          "organicSells1h": 0,
          "organicSells4h": 0,
          "organicSells6h": 0,
          "organicSells12h": 0,
          "organicSells24h": 0,
          "organicBuyers1min": 0,
          "organicBuyers5min": 0,
          "organicBuyers15min": 0,
          "organicBuyers1h": 0,
          "organicBuyers4h": 0,
          "organicBuyers6h": 0,
          "organicBuyers12h": 0,
          "organicBuyers24h": 0,
          "organicSellers1min": 0,
          "organicSellers5min": 0,
          "organicSellers15min": 0,
          "organicSellers1h": 0,
          "organicSellers4h": 0,
          "organicSellers6h": 0,
          "organicSellers12h": 0,
          "organicSellers24h": 0,
          "holdersCount": 123,
          "twitterReusesCount": 0,
          "twitterRenameCount": 0,
          "twitterRenameHistory": [],
          "deployerMigrationsCount": 0,
          "deployerTokensCount": 0,
          "securityScore": null,
          "securityScoreUpdatedAt": null,
          "dexscreenerListed": false,
          "dexscreenerHeader": null,
          "dexscreenerAdPaid": false,
          "dexscreenerAdPaidDate": null,
          "dexScreenerEnhanced": null,
          "dexscreenerPendingAt": null,
          "dexscreenerSocialPaid": false,
          "dexscreenerSocialPaidDate": null,
          "dexscreenerBoosted": false,
          "dexscreenerBoostedDate": null,
          "dexscreenerBoostedAmount": 0,
          "trendingScore1min": 0,
          "trendingScore5min": 0,
          "trendingScore15min": 0,
          "trendingScore1h": 0,
          "trendingScore4h": 0,
          "trendingScore6h": 0,
          "trendingScore12h": 0,
          "trendingScore24h": 0,
          "surgeScore": null,
          "isMayhemMode": null,
          "isCashbackCoin": null,
          "isAgentMode": null,
          "isOGCoin": null,
          "top10HoldingsPercentage": 123,
          "top50HoldingsPercentage": 123,
          "top100HoldingsPercentage": 123,
          "top200HoldingsPercentage": 123,
          "devHoldingsPercentage": 123,
          "insidersHoldingsPercentage": 123,
          "bundlersHoldingsPercentage": 123,
          "snipersHoldingsPercentage": 123,
          "proTradersHoldingsPercentage": 123,
          "freshTradersHoldingsPercentage": 123,
          "smartTradersHoldingsPercentage": 123,
          "insidersCount": 123,
          "bundlersCount": 123,
          "snipersCount": 123,
          "freshTradersCount": 123,
          "proTradersCount": 123,
          "smartTradersCount": 123,
          "freshTradersBuys": 123,
          "proTradersBuys": 123,
          "smartTradersBuys": 123
        },
        "amount": 123,
        "amountUsd": 123,
        "allocation": 123,
        "priceUsd": 123,
        "priceChange24h": 123,
        "liquidityUsd": 123,
        "marketCapUsd": 123,
        "crossChainBalances": {},
        "contractBalances": [
          {
            "chainId": "<string>",
            "address": "<string>",
            "amount": 123,
            "amountRaw": "<string>",
            "decimals": 123,
            "amountUsd": 123,
            "liquidityUsd": 123,
            "priceUsd": 123,
            "security": {
              "buyTax": "<string>",
              "sellTax": "<string>",
              "transferPausable": true,
              "top10Holders": "<string>",
              "isBlacklisted": true,
              "noMintAuthority": true,
              "isFreezable": true,
              "balanceMutable": true,
              "lowLiquidity": "<string>",
              "burnRate": "<string>",
              "liquidityBurnPercentage": 123,
              "transferTax": "<string>",
              "isHoneypot": true,
              "isNotOpenSource": true,
              "renounced": true,
              "locked": "<string>",
              "isWhitelisted": true,
              "isMintable": true,
              "modifyableTax": true,
              "selfDestruct": true,
              "frozen": true
            },
            "lamports": "<string>",
            "tokenAccount": "<string>"
          }
        ],
        "wallets": [
          "<string>"
        ]
      }
    ],
    "holdingsCount": 123,
    "balancesLength": 123
  }
}
Returns the current token holdings for one wallet or a comma-separated list of wallets. Use GET for standard wallet queries. Use POST on the same path when you need to filter returned tokens with Prisma-like filters on enriched token fields.

Endpoints

GET /api/2/wallet/holdings
POST /api/2/wallet/holdings

Query Parameters

ParameterTypeRequiredDefaultDescription
walletstringConditional-Single wallet address. Required when wallets is not provided. Accepts EVM, Solana, Tron, TON, and other supported wallet formats.
walletsstringConditional-Comma-separated wallet addresses. Required when wallet is not provided. Holdings are aggregated across wallets.
blockchainsstringNopremium chainsComma-separated chain IDs or names, for example ethereum,base,solana or evm:1,evm:8453,solana:solana.
assetstringNo-Filter to one asset by name or symbol before holdings are returned.
unlistedAssetsbooleanNotrueInclude tokens that do not have a canonical asset mapping.
filterSpambooleanNotrueRemove spam/phishing tokens from the result.
minLiquiditynumberNo1000Minimum liquidity threshold in USD. This is the v2 alias for legacy minliq.
fetchAllChainsbooleanNofalseQuery all supported chains instead of the default premium chain set.
fetchEmptyBalancesbooleanNofalseInclude zero-balance token accounts when available.
backfillTransfersbooleanNofalseTrigger transfer backfill and return backfillStatus.
pnlbooleanNofalseKept for parity with portfolio parameters.

Example

curl "https://genius-api.mobula.io/api/2/wallet/holdings?wallet=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&blockchains=ethereum,base&minLiquidity=10000" \
  -H "Authorization: YOUR_API_KEY"

POST Body

The POST body accepts the same wallet parameters as GET, plus filters.
interface WalletHoldingsPostBody extends WalletHoldingsQueryParams {
  filters?: WalletHoldingFilters;
}

interface WalletHoldingsQueryParams {
  wallet?: string | number | boolean;
  wallets?: string | number | boolean;
  portfolio?: string | number | boolean;
  blockchains?: string | number | boolean;
  asset?: string | number | boolean;
  unlistedAssets?: string | number | boolean;
  filterSpam?: string | number | boolean;
  minLiquidity?: string | number | boolean;
  fetchAllChains?: string | number | boolean;
  fetchEmptyBalances?: string | number | boolean;
  backfillTransfers?: string | number | boolean;
  pnl?: string | number | boolean;
  from?: string | number | boolean;
  to?: string | number | boolean;
  period?: string | number | boolean;
  accuracy?: string | number | boolean;
  testnet?: string | number | boolean;
}
FieldTypeRequiredDescription
walletstringConditionalSingle wallet address. Required when wallets is not provided.
walletsstringConditionalComma-separated wallet addresses. Required when wallet is not provided. Holdings are aggregated across wallets.
blockchainsstringNoComma-separated chain IDs or names, for example ethereum,base,solana.
assetstringNoFilter to one asset before RAM filters are applied.
unlistedAssetsbooleanNoInclude tokens that do not have a canonical asset mapping.
filterSpambooleanNoRemove spam/phishing tokens before RAM filters are applied.
minLiquiditynumberNoMinimum liquidity threshold in USD.
fetchAllChainsbooleanNoQuery all supported chains instead of the default premium chain set.
fetchEmptyBalancesbooleanNoInclude zero-balance token accounts when available.
backfillTransfersbooleanNoTrigger transfer backfill and return backfillStatus.
filtersWalletHoldingFiltersNoPrisma-like where tree applied to holding.token.

POST Filters

The syntax mirrors the Prisma-like filter shape used by token/filters: direct scalar values mean equals, operator objects can be nested, and logical branches use AND, OR, and NOT.
type WalletHoldingFilters = {
  OR?: WalletHoldingFilters[];
  AND?: WalletHoldingFilters[];
  NOT?: WalletHoldingFilters | WalletHoldingFilters[];
  [tokenField: string]:
    | FilterValue
    | WalletHoldingFilters
    | WalletHoldingFilters[]
    | undefined;
};

type FilterValue = FilterOperator | string | number | boolean | null;

interface FilterOperator<T = unknown> {
  equals?: T | null;
  not?: T | null | FilterOperator<T>;
  in?: T[];
  notIn?: T[];
  gte?: number;
  lte?: number;
  gt?: number;
  lt?: number;
  contains?: string;
  startsWith?: string;
  endsWith?: string;
  isNull?: boolean;
  isNotNull?: boolean;
}
Filters run on holding.token, not on wallet-specific fields such as amount, amountUSD, or allocation. The response is recalculated after filtering, so totalWalletBalanceUSD, holdingsCount, balancesLength, and each remaining holding’s allocation match the filtered result.

Supported Operators

OperatorExampleDescription
Direct value{ "symbol": "WETH" }Equivalent to { "symbol": { "equals": "WETH" } }.
equals{ "chainId": { "equals": "evm:1" } }Exact match.
not{ "symbol": { "not": "SCAM" } }Excludes an exact value.
Nested not{ "name": { "not": { "contains": "test" } } }Negates another operator object.
in{ "chainId": { "in": ["evm:1", "evm:8453"] } }Match any listed value.
notIn{ "source": { "notIn": ["unknown", "spam"] } }Exclude any listed value.
gte / lte{ "liquidityUSD": { "gte": 100000, "lte": 5000000 } }Inclusive numeric bounds.
gt / lt{ "priceChange24hPercentage": { "gt": 5 } }Strict numeric bounds.
contains{ "name": { "contains": "wrapped" } }Case-insensitive substring match.
startsWith{ "symbol": { "startsWith": "W" } }Case-insensitive prefix match.
endsWith{ "symbol": { "endsWith": "ETH" } }Case-insensitive suffix match.
isNull{ "deployer": { "isNull": true } }Match null or missing values.
isNotNull{ "socials.website": { "isNotNull": true } }Match existing values.
AND{ "AND": [{ "liquidityUSD": { "gte": 100000 } }, { "security.isHoneypot": false }] }Every branch must match.
OR{ "OR": [{ "symbol": "WETH" }, { "symbol": "USDC" }] }At least one branch must match.
NOT{ "NOT": { "security.isHoneypot": true } }Excludes matching tokens.

Nested Fields

Both dot-path and nested-object syntax are valid.
{
  "filters": {
    "security.isHoneypot": false,
    "socials.website": { "isNotNull": true }
  }
}
{
  "filters": {
    "security": {
      "isHoneypot": false,
      "isMintable": false
    },
    "socials": {
      "website": { "isNotNull": true }
    }
  }
}

Filterable Fields

Every field in holding.token is filterable. holding.token uses the same enriched token details object returned by TokenService; the full token interface is documented in Token Object. Common filter examples:
{
  "filters": {
    "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
    "chainId": { "in": ["evm:1", "evm:8453", "solana:solana"] },
    "symbol": { "notIn": ["SCAM", "TEST"] },
    "name": { "contains": "wrapped" },
    "decimals": { "equals": 18 },

    "priceUSD": { "gte": 0.01, "lte": 10000 },
    "liquidityUSD": { "gte": 100000 },
    "liquidityMaxUSD": { "gte": 250000 },
    "marketCapUSD": { "gte": 1000000 },
    "marketCapDilutedUSD": { "lte": 50000000 },
    "totalSupply": { "gt": 0 },
    "circulatingSupply": { "gt": 0 },

    "priceChange1hPercentage": { "gt": 0 },
    "priceChange24hPercentage": { "gte": 5 },
    "poolPriceChange24hPercentage": { "lt": 50 },

    "volume1hUSD": { "gte": 10000 },
    "volume24hUSD": { "gte": 500000 },
    "volumeBuy24hUSD": { "gte": 250000 },
    "volumeSell24hUSD": { "lte": 250000 },

    "trades24h": { "gte": 100 },
    "buys24h": { "gte": 50 },
    "sells24h": { "gte": 10 },
    "buyers24h": { "gte": 25 },
    "sellers24h": { "gte": 10 },
    "traders24h": { "gte": 30 },

    "feesPaid24hUSD": { "gte": 100 },
    "totalFeesPaidUSD": { "gte": 1000 },
    "organicTrades24h": { "gte": 25 },
    "organicVolume24hUSD": { "gte": 100000 },
    "organicBuyers24h": { "gte": 10 },

    "holdersCount": { "gte": 500 },
    "top10HoldingsPercentage": { "lte": 30 },
    "devHoldingsPercentage": { "lte": 5 },
    "insidersHoldingsPercentage": { "lte": 10 },
    "bundlersCount": { "lte": 3 },
    "smartTradersCount": { "gte": 5 },

    "security.isHoneypot": false,
    "security.isBlacklisted": false,
    "security.isMintable": false,
    "security.noMintAuthority": true,
    "security.isFreezable": false,

    "socials.website": { "isNotNull": true },
    "socials.twitter": { "isNotNull": true },
    "description": { "contains": "liquid" },
    "logo": { "isNotNull": true },

    "source": { "in": ["pumpfun", "raydium", "uniswap-v2"] },
    "factory": { "isNotNull": true },
    "poolAddress": { "isNotNull": true },
    "bonded": true,
    "migrating": false,
    "bondingPercentage": { "gte": 90 },
    "deployer": { "not": null },

    "dexscreenerListed": true,
    "dexscreenerAdPaid": false,
    "liveStatus": { "not": null },
    "trendingScore24h": { "gte": 10 },
    "surgeScore": { "gte": 5 },
    "isMayhemMode": false,
    "isCashbackCoin": false,
    "isAgentMode": false,
    "isOGCoin": false
  }
}

POST Example: Safe Liquid Holdings

curl -X POST "https://genius-api.mobula.io/api/2/wallet/holdings" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "blockchains": "ethereum,base,solana",
    "minLiquidity": 10000,
    "filters": {
      "AND": [
        { "marketCapUSD": { "gte": 1000000 } },
        { "liquidityUSD": { "gte": 100000 } },
        { "security.isHoneypot": false },
        { "security.isMintable": false },
        { "socials.website": { "isNotNull": true } }
      ],
      "NOT": [
        { "symbol": { "contains": "test" } },
        { "name": { "contains": "airdrop" } }
      ]
    }
  }'

POST Example: OR Logic

curl -X POST "https://genius-api.mobula.io/api/2/wallet/holdings" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallets": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045,0x00000000219ab540356cBB839Cbe05303d7705Fa",
    "blockchains": "ethereum,base",
    "filters": {
      "OR": [
        {
          "AND": [
            { "symbol": { "in": ["WETH", "USDC"] } },
            { "liquidityUSD": { "gte": 1000000 } }
          ]
        },
        {
          "AND": [
            { "priceChange24hPercentage": { "gt": 10 } },
            { "volume24hUSD": { "gte": 500000 } },
            { "security": { "isHoneypot": false } }
          ]
        }
      ]
    }
  }'

Response Model

The response is camelCase, and USD stays uppercase. The portfolio service returns holdings in this shape directly; legacy portfolio endpoints map this shape back to their old response models.
interface WalletHoldingsResponse {
  data: WalletHoldingsOutput;
  backfillStatus?: 'processed' | 'processing' | 'pending';
}

interface WalletHoldingsOutput {
  totalWalletBalanceUSD: number;
  wallets: string[];
  holdings: WalletHolding[];
  holdingsCount: number;
  balancesLength: number;
}

interface WalletHolding {
  token: WalletHoldingToken;
  amount: number;
  amountRaw?: string | null;
  amountUSD: number;
  allocation: number;
  chainBalances: Record<string, WalletHoldingChainBalance>;
  wallets: string[];
}

interface WalletHoldingChainBalance {
  chainId: string;
  address: string;
  amount: number;
  amountRaw: string;
  amountUSD: number;
  priceUSD?: number | null;
  liquidityUSD?: number | null;
  decimals: number;
  tokenType?: '2020' | '2022' | 'erc20' | 'trc10' | 'trc20' | null;
  security?: SecurityFlags | null;
  wallets: Record<string, WalletChainWalletBalance>;
}

interface WalletChainWalletBalance {
  amount: number;
  amountRaw: string;
  amountUSD: number;
  lamports?: string | null;
  tokenAccount?: string | null;
}
allocation is the holding share of totalWalletBalanceUSD, expressed as a percentage. For example, 23.88 means the token represents 23.88% of the returned wallet holdings value.

Token Object

holding.token is the enriched token details object returned by TokenService. POST filters operate on this same object.
interface WalletHoldingToken extends HolderStats {
  address: string;
  chainId: string;
  symbol: string | null;
  name: string | null;
  decimals: number;
  id?: number | null;

  priceUSD: number;
  priceToken: number;
  priceTokenString: string;
  approximateReserveUSD: number;
  approximateReserveTokenRaw: string;
  approximateReserveToken: number;
  totalSupply: number;
  circulatingSupply: number;
  marketCapUSD: number;
  marketCapDilutedUSD: number;
  logo: string | null;
  originLogoUrl?: string | null;
  rank: number | null;
  cexs: string[];

  exchange?: {
    name: string;
    logo: string;
  };

  factory?: string | null;
  source?: string | null;
  sourceFactory?: string | null;
  sourceMetadata?: MetadataSource | null;
  sourceFactoryMetadata?: MetadataSource | null;

  liquidityUSD?: number;
  liquidityMaxUSD?: number;
  bonded?: boolean;
  bondingPercentage?: number;
  migrating?: boolean;
  bondingCurveAddress?: string | null;
  preBondingFactory?: string;
  poolAddress?: string;

  blockchain?: string;
  type?: string;
  tokenType: '2020' | '2022' | 'erc20' | 'trc10' | 'trc20' | null;

  deployer?: string | null;
  bondedAt: string | null;
  athUSD?: number;
  atlUSD?: number;
  athDate?: string;
  atlDate?: string;

  priceChange1minPercentage: number;
  priceChange5minPercentage: number;
  priceChange1hPercentage: number;
  priceChange4hPercentage: number;
  priceChange6hPercentage: number;
  priceChange12hPercentage: number;
  priceChange24hPercentage: number;

  poolPriceChange1minPercentage: number;
  poolPriceChange5minPercentage: number;
  poolPriceChange1hPercentage: number;
  poolPriceChange4hPercentage: number;
  poolPriceChange6hPercentage: number;
  poolPriceChange12hPercentage: number;
  poolPriceChange24hPercentage: number;

  liquidityBurnPercentage?: number | null;

  volume1minUSD: number;
  volume5minUSD: number;
  volume15minUSD: number;
  volume1hUSD: number;
  volume4hUSD: number;
  volume6hUSD: number;
  volume12hUSD: number;
  volume24hUSD: number;

  volumeBuy1minUSD: number;
  volumeBuy5minUSD: number;
  volumeBuy15minUSD: number;
  volumeBuy1hUSD: number;
  volumeBuy4hUSD: number;
  volumeBuy6hUSD: number;
  volumeBuy12hUSD: number;
  volumeBuy24hUSD: number;

  volumeSell1minUSD: number;
  volumeSell5minUSD: number;
  volumeSell15minUSD: number;
  volumeSell1hUSD: number;
  volumeSell4hUSD: number;
  volumeSell6hUSD: number;
  volumeSell12hUSD: number;
  volumeSell24hUSD: number;

  trades1min: number;
  trades5min: number;
  trades15min: number;
  trades1h: number;
  trades4h: number;
  trades6h: number;
  trades12h: number;
  trades24h: number;

  buys1min: number;
  buys5min: number;
  buys15min: number;
  buys1h: number;
  buys4h: number;
  buys6h: number;
  buys12h: number;
  buys24h: number;

  sells1min: number;
  sells5min: number;
  sells15min: number;
  sells1h: number;
  sells4h: number;
  sells6h: number;
  sells12h: number;
  sells24h: number;

  buyers1min: number;
  buyers5min: number;
  buyers15min: number;
  buyers1h: number;
  buyers4h: number;
  buyers6h: number;
  buyers12h: number;
  buyers24h: number;

  sellers1min: number;
  sellers5min: number;
  sellers15min: number;
  sellers1h: number;
  sellers4h: number;
  sellers6h: number;
  sellers12h: number;
  sellers24h: number;

  traders1min: number;
  traders5min: number;
  traders15min: number;
  traders1h: number;
  traders4h: number;
  traders6h: number;
  traders12h: number;
  traders24h: number;

  feesPaid1minUSD: number;
  feesPaid5minUSD: number;
  feesPaid15minUSD: number;
  feesPaid1hUSD: number;
  feesPaid4hUSD: number;
  feesPaid6hUSD: number;
  feesPaid12hUSD: number;
  feesPaid24hUSD: number;
  totalFeesPaidUSD: number;
  totalFeesPaidNativeRaw: string;

  organicTrades1min: number;
  organicTrades5min: number;
  organicTrades15min: number;
  organicTrades1h: number;
  organicTrades4h: number;
  organicTrades6h: number;
  organicTrades12h: number;
  organicTrades24h: number;

  organicTraders1min: number;
  organicTraders5min: number;
  organicTraders15min: number;
  organicTraders1h: number;
  organicTraders4h: number;
  organicTraders6h: number;
  organicTraders12h: number;
  organicTraders24h: number;

  organicVolume1minUSD: number;
  organicVolume5minUSD: number;
  organicVolume15minUSD: number;
  organicVolume1hUSD: number;
  organicVolume4hUSD: number;
  organicVolume6hUSD: number;
  organicVolume12hUSD: number;
  organicVolume24hUSD: number;

  organicVolumeBuy1minUSD: number;
  organicVolumeBuy5minUSD: number;
  organicVolumeBuy15minUSD: number;
  organicVolumeBuy1hUSD: number;
  organicVolumeBuy4hUSD: number;
  organicVolumeBuy6hUSD: number;
  organicVolumeBuy12hUSD: number;
  organicVolumeBuy24hUSD: number;

  organicVolumeSell1minUSD: number;
  organicVolumeSell5minUSD: number;
  organicVolumeSell15minUSD: number;
  organicVolumeSell1hUSD: number;
  organicVolumeSell4hUSD: number;
  organicVolumeSell6hUSD: number;
  organicVolumeSell12hUSD: number;
  organicVolumeSell24hUSD: number;

  organicBuys1min: number;
  organicBuys5min: number;
  organicBuys15min: number;
  organicBuys1h: number;
  organicBuys4h: number;
  organicBuys6h: number;
  organicBuys12h: number;
  organicBuys24h: number;

  organicSells1min: number;
  organicSells5min: number;
  organicSells15min: number;
  organicSells1h: number;
  organicSells4h: number;
  organicSells6h: number;
  organicSells12h: number;
  organicSells24h: number;

  organicBuyers1min: number;
  organicBuyers5min: number;
  organicBuyers15min: number;
  organicBuyers1h: number;
  organicBuyers4h: number;
  organicBuyers6h: number;
  organicBuyers12h: number;
  organicBuyers24h: number;

  organicSellers1min: number;
  organicSellers5min: number;
  organicSellers15min: number;
  organicSellers1h: number;
  organicSellers4h: number;
  organicSellers6h: number;
  organicSellers12h: number;
  organicSellers24h: number;

  createdAt: string | null;
  latestTradeDate: string | null;
  holdersCount?: number | null;
  description: string | null;
  socials: {
    twitter: string | null;
    website: string | null;
    telegram: string | null;
    others?: Record<string, unknown> | null;
    uri?: string;
  };
  security: SecurityFlags | null;

  twitterReusesCount: number | null;
  twitterRenameCount: number;
  twitterRenameHistory: Array<{
    username: string;
    lastChecked: string;
  }>;

  deployerMigrationsCount: number;
  deployerTokensCount: number;
  securityScore: number | null;
  securityScoreUpdatedAt: string | null;

  dexscreenerListed: boolean | null;
  dexscreenerHeader: string | null;
  dexscreenerAdPaid: boolean | null;
  dexscreenerAdPaidDate: string | null;
  dexScreenerEnhanced: Record<string, unknown> | null;
  dexscreenerPendingAt: string | null;
  dexscreenerSocialPaid: boolean | null;
  dexscreenerSocialPaidDate: string | null;

  liveStatus: string | null;
  liveThumbnail: string | null;
  livestreamTitle: string | null;
  liveReplyCount: number | null;
  dexscreenerBoosted: boolean | null;
  dexscreenerBoostedDate: string | null;
  dexscreenerBoostedAmount: number | null;

  trendingScore1min: number;
  trendingScore5min: number;
  trendingScore15min: number;
  trendingScore1h: number;
  trendingScore4h: number;
  trendingScore6h: number;
  trendingScore12h: number;
  trendingScore24h: number;

  surgeScore: number | null;
  isMayhemMode: boolean | null;
  isCashbackCoin: boolean | null;
  isAgentMode: boolean | null;
  isOGCoin: boolean | null;
}

interface MetadataSource {
  name: string;
  logo: string;
}

interface HolderStats {
  holdersCount?: number | null;
  top10HoldingsPercentage?: number | null;
  top50HoldingsPercentage?: number | null;
  top100HoldingsPercentage?: number | null;
  top200HoldingsPercentage?: number | null;
  devHoldingsPercentage?: number | null;
  insidersHoldingsPercentage?: number | null;
  bundlersHoldingsPercentage?: number | null;
  snipersHoldingsPercentage?: number | null;
  proTradersHoldingsPercentage?: number | null;
  freshTradersHoldingsPercentage?: number | null;
  smartTradersHoldingsPercentage?: number | null;
  insidersCount?: number | null;
  bundlersCount?: number | null;
  snipersCount?: number | null;
  freshTradersCount?: number | null;
  proTradersCount?: number | null;
  smartTradersCount?: number | null;
  freshTradersBuys?: number | null;
  proTradersBuys?: number | null;
  smartTradersBuys?: number | null;
}

interface SecurityFlags {
  buyTax?: string;
  sellTax?: string;
  transferTax?: string;
  transferPausable?: boolean;
  top10Holders?: string;
  isBlacklisted?: boolean;
  isHoneypot?: boolean;
  isNotOpenSource?: boolean;
  renounced?: boolean;
  locked?: string;
  isWhitelisted?: boolean;
  balanceMutable?: boolean;
  lowLiquidity?: string;
  burnRate?: string;
  isMintable?: boolean;
  modifyableTax?: boolean;
  selfDestruct?: boolean;
  liquidityBurnPercentage?: number;
  noMintAuthority?: boolean;
  isFreezable?: boolean;
  frozen?: boolean;
}

Example Response

{
  "data": {
    "totalWalletBalanceUSD": 5234.22,
    "wallets": [
      "0xwalletA",
      "0xwalletB"
    ],
    "holdingsCount": 1,
    "balancesLength": 1,
    "holdings": [
      {
        "token": {
          "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
          "chainId": "evm:1",
          "symbol": "USDC",
          "name": "USD Coin",
          "decimals": 6,
          "id": 100004304,
          "priceUSD": 1,
          "liquidityUSD": 250000000,
          "security": {
            "isHoneypot": false,
            "isMintable": false
          }
        },
        "amount": 1250,
        "amountUSD": 1250,
        "allocation": 23.88,
        "wallets": [
          "0xwalletA",
          "0xwalletB"
        ],
        "chainBalances": {
          "evm:1": {
            "chainId": "evm:1",
            "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "amount": 800,
            "amountRaw": "800000000",
            "amountUSD": 800,
            "priceUSD": 1,
            "liquidityUSD": 180000000,
            "decimals": 6,
            "tokenType": "erc20",
            "security": {
              "isHoneypot": false
            },
            "wallets": {
              "0xwalletA": {
                "amount": 500,
                "amountRaw": "500000000",
                "amountUSD": 500
              },
              "0xwalletB": {
                "amount": 300,
                "amountRaw": "300000000",
                "amountUSD": 300
              }
            }
          },
          "evm:8453": {
            "chainId": "evm:8453",
            "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
            "amount": 450,
            "amountRaw": "450000000",
            "amountUSD": 450,
            "priceUSD": 1,
            "liquidityUSD": 70000000,
            "decimals": 6,
            "tokenType": "erc20",
            "security": null,
            "wallets": {
              "0xwalletA": {
                "amount": 450,
                "amountRaw": "450000000",
                "amountUSD": 450
              }
            }
          }
        }
      }
    ]
  }
}

Query Parameters

wallet

Wallet address

wallets

Comma-separated wallet addresses

portfolio

Portfolio ID

blockchains

Comma-separated blockchain IDs

asset

Filter by specific asset

from

Start date

to

End date

portfolio_settings

Portfolio display settings

unlistedAssets

Include unlisted assets

period

Time period

accuracy

Data accuracy level

testnet

Include testnet data

minLiquidity

Minimum liquidity threshold in USD

filterSpam

Filter spam tokens

pnl

Include PnL data

rpc

Response

200 - application/json

Wallet holdings response

data
object
required
backfillStatus
enum<string>
Available options:
processed,
processing,
pending