Migrate from DeBank Cloud

Map the /v1/user/* Pro API onto GoldRush, including what does not port.

DeBank Cloud to GoldRush21 endpoints
Direct equivalent
8
Needs work
5
No equivalent
4
GoldRush advantage
4
Reviewed . Paths read from docs.cloud.debank.com, goldrush.dev.

Why move from DeBank Cloud

DeBank Cloud's Pro API is a wallet-centric REST surface at pro-openapi.debank.com, authenticated with an AccessKey header, organised as /v1/user/* with paired single-chain and all-chain variants. Token balances, NFTs, history, and approvals map cleanly onto GoldRush. DeBank's protocol-position endpoints (the complex_protocol_list family at the core of its product) do not. This guide is explicit about that.

What changes before any endpoint works

The cross-cutting differences. Miss one and every call fails the same way, so fix these first.

DeBank Cloud vs GoldRush: auth, format and pagination
DeBank CloudGoldRush
Base URLhttps://pro-openapi.debank.comhttps://api.covalenthq.com
AuthAccessKey: <your_accesskey>Authorization: Bearer <GOLDRUSH_API_KEY>
Chain addressingchain_id query param (eth, bsc, matic) with paired all_* endpoints for cross-chain reads.Chain slug in the path (eth-mainnet, bsc-mainnet, matic-mainnet), or /v1/allchains/* for cross-chain.
Response envelopeBare JSON array or object per endpoint, no common wrapper.{ data: { items: [...] }, error, error_message, error_code } on every endpoint.
Paginationstart_time / page_count cursors on history endpoints.Page number in the path: .../transactions_v3/page/{page}/. Page 0 is the OLDEST page.

Endpoint mapping

Every DeBank Cloud endpoint we could source, with its GoldRush equivalent. Rows marked No equivalent are gaps we won't paper over, so read those first. Verify a row against the DeBank Cloud docs before relying on it.

DeBank Cloud endpoints and their GoldRush equivalents
Use caseDeBank CloudGoldRushParity
Token balances on one chainGET /v1/user/token_listGET /v1/{chainName}/address/{walletAddress}/balances_v2/Direct equivalent
Token balances across chainsGET /v1/user/all_token_listGET /v1/allchains/address/{walletAddress}/balances/Direct equivalent
Single token balanceFilter the items array client-side; there is no single-token variant.GET /v1/user/tokenGET /v1/{chainName}/address/{walletAddress}/balances_v2/Needs work
Native balance on a chainGET /v1/user/chain_balanceGET /v1/{chainName}/address/{walletAddress}/balances_native/Direct equivalent
Chains a wallet has usedGET /v1/user/used_chain_listGET /v1/address/{walletAddress}/activity/Direct equivalent
Total net worth across chainsSum quote across items. DeBank returns the total pre-computed and includes protocol positions in it, so the two numbers will not match for a DeFi-heavy wallet.GET /v1/user/total_balanceGET /v1/allchains/address/{walletAddress}/balances/Needs work
Protocol positions, one chainNo equivalent. This is DeBank's core strength and GoldRush does not replace it.GET /v1/user/complex_protocol_listNoneNo equivalent
Protocol positions, all chainsGET /v1/user/all_complex_protocol_listNoneNo equivalent
Simplified protocol balancesLP and receipt token values show up in balances_v2 as tokens, but without the protocol attribution.GET /v1/user/simple_protocol_list, /v1/user/all_simple_protocol_listNoneNo equivalent
Positions in one protocolGET /v1/user/protocolNoneNo equivalent
Transaction history, one chainGET /v1/user/history_listGET /v1/{chainName}/address/{walletAddress}/transactions_v3/page/{page}/Direct equivalent
Transaction history, all chainsGET /v1/user/all_history_listGET /v1/allchains/transactions/Direct equivalent
NFTs on one chainGET /v1/user/nft_listGET /v1/{chainName}/address/{walletAddress}/balances_nft/Direct equivalent
NFTs across chainsCall per chain; there is no allchains NFT endpoint.GET /v1/user/all_nft_listGET /v1/{chainName}/address/{walletAddress}/balances_nft/Needs work
Token approvalsGET /v1/user/token_authorized_listGET /v1/{chainName}/approvals/{walletAddress}/Direct equivalent
NFT approvalsApprovals covers token allowances; NFT operator approvals are not broken out separately.GET /v1/user/nft_authorized_listGET /v1/{chainName}/approvals/{walletAddress}/Needs work
Net worth curvePer-chain, and 30-day granularity rather than DeBank's 24-hour curve.GET /v1/user/total_net_curve, /v1/user/chain_net_curveGET /v1/{chainName}/address/{walletAddress}/portfolio_v2/Needs work
Historical balances by dateNot availableGET /v1/{chainName}/address/{walletAddress}/historical_balances/GoldRush advantage
Bitcoin balancesNot availableGET /v1/btc-mainnet/address/{walletAddress}/balances_v2/GoldRush advantage
Contract log eventsNot availableGET /v1/{chainName}/events/address/{contractAddress}/GoldRush advantage
Token holdersNot availableGET /v1/{chainName}/tokens/{tokenAddress}/token_holders_v2/GoldRush advantage

Sources: docs.cloud.debank.com and goldrush.dev for DeBank Cloud, the GoldRush docs for GoldRush.

Before and after

Code you can paste. On the left, what you have on DeBank Cloud; on the right, the GoldRush replacement.

Token balances

DeBank Cloud

// BEFORE -- DeBank: AccessKey header, chain_id query param, bare array back.
const res = await fetch(
  "https://pro-openapi.debank.com/v1/user/token_list" +
    "?id=" + address + "&chain_id=eth&is_all=false",
  { headers: { AccessKey: process.env.DEBANK_ACCESS_KEY } }
);
const tokens = await res.json(); // array, no wrapper

GoldRush

// AFTER -- GoldRush: Bearer header, chain in the path, wrapped envelope.
const res = await fetch(
  "https://api.covalenthq.com/v1/eth-mainnet/address/" + address + "/balances_v2/",
  { headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY } }
);
const { data, error, error_message } = await res.json();
if (error) throw new Error(error_message);
const tokens = data.items;

All-chain reads

DeBank Cloud

// BEFORE -- DeBank pairs each endpoint with an all_* variant.
const res = await fetch(
  "https://pro-openapi.debank.com/v1/user/all_token_list?id=" + address,
  { headers: { AccessKey: process.env.DEBANK_ACCESS_KEY } }
);

GoldRush

// AFTER -- GoldRush uses a separate allchains path family.
const res = await fetch(
  "https://api.covalenthq.com/v1/allchains/address/" + address + "/balances/",
  { headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY } }
);

Net worth: why the number changes

DeBank Cloud

// BEFORE -- DeBank's total_balance includes protocol positions
// (staking, lending, LPs) in the total.
const res = await fetch(
  "https://pro-openapi.debank.com/v1/user/total_balance?id=" + address,
  { headers: { AccessKey: process.env.DEBANK_ACCESS_KEY } }
);
const { total_usd_value } = await res.json();

GoldRush

// AFTER -- GoldRush sums token balances only. For a DeFi-heavy wallet
// this will read LOWER than DeBank's figure, because protocol positions
// are not decoded per protocol. Verify against a known wallet before
// putting this number in front of a user.
const res = await fetch(
  "https://api.covalenthq.com/v1/allchains/address/" + address + "/balances/",
  { headers: { Authorization: "Bearer " + process.env.GOLDRUSH_API_KEY } }
);
const { data, error, error_message } = await res.json();
if (error) throw new Error(error_message);

const total_usd_value = data.items.reduce((sum, t) => sum + (t.quote ?? 0), 0);

Migration steps

The port in order. Each step is small enough to ship and check on its own.

  1. 1.

    Swap the auth header

    Replace AccessKey: <key> with Authorization: Bearer <GOLDRUSH_API_KEY>.

  2. 2.

    Move chain_id from query to path

    DeBank's chain_id=eth becomes eth-mainnet in the GoldRush path. Build the map from GET /v1/chains/ rather than hardcoding it.

  3. 3.

    Collapse the all_* endpoint pairs

    DeBank pairs every endpoint with an all_* variant. In GoldRush the cross-chain reads live under /v1/allchains/*, and there are fewer of them. NFTs, for instance, are per-chain only.

  4. 4.

    Add envelope handling

    DeBank returns bare arrays. GoldRush wraps everything in { data: { items }, error, error_message }, so add the unwrap and the error check.

  5. 5.

    Audit every protocol-position call site

    Grep for complex_protocol_list, simple_protocol_list, and /v1/user/protocol. Each one is a feature that does not port. Decide per call site whether to drop it, rebuild it, or keep DeBank alongside.

  6. 6.

    Re-baseline your net worth figures

    Compare DeBank total_balance against the summed GoldRush quote for several real wallets. Expect a gap on DeFi-heavy addresses and decide how to present it before launch.

What you lose by moving

If one of these is load-bearing for your product, don't migrate that surface. Running both providers is a legitimate answer.

  • No protocol-position decoding, DeBank's core feature

    The complex_protocol_list and simple_protocol_list families have no GoldRush equivalent. If your product shows positions attributed per protocol (Aave supplied, Lido staked, Uniswap LP), GoldRush will not reproduce it and you should not migrate that surface.

  • Net worth totals will differ

    DeBank folds protocol positions into total_balance. Summing GoldRush token quotes gives a lower number for DeFi-heavy wallets. This is a real behavioural change, not a rounding difference. Check it against a known wallet before shipping.

  • No single-call wallet PnL

    GoldRush has no one-shot realized/unrealized PnL endpoint. You can compute it from transactions_v3 plus historical pricing, but that is your code to write, not a field to read. If PnL is the product, budget for it.

  • No transaction webhooks

    GoldRush is request/response. There is no subscription endpoint that pushes transactions to a callback URL, so any real-time path becomes polling on your side.

What you gain

Each of these maps to a row above or to a documented GoldRush capability.

  • 100+ chains, including Bitcoin

    Live chain list at /v1/chains/ and per-chain sync state at /v1/chains/status/. Bitcoin is first-class with its own balances, historical balances, and HD-wallet endpoints. Most wallet APIs are EVM-only or EVM+Solana.

  • Log events, holders, and OHLCV

    Raw and decoded log events by contract or topic, token holder lists at a block height, and pool-level pricing. Wallet-portfolio APIs generally stop at the wallet boundary and cannot answer contract-level questions.

  • x402: no signup, no API key

    An autonomous agent can pay per request from an onchain wallet without registering an account or holding a key. If you are building agents rather than a dashboard, this removes the credential provisioning step entirely.

  • JSON-RPC on the same key

    GoldRush serves JSON-RPC across 30+ EVM chains, so a decoded-data provider and a node provider can collapse into one vendor and one bill.

Start the port

A free API key comes with 25,000 credits and no card. Or skip signup and pay per request with x402.

Common questions

Only partly, and only if protocol positions are not your product. DeBank's protocol-position decoding is genuinely best in class and GoldRush does not replace it. If you use DeBank mainly for token balances, history, NFTs, and approvals, the port is clean and you gain 100+ chains, Bitcoin, and contract-level data.

Other migration guides

  • From Zerion API

    Every Zerion v1 wallet endpoint, mapped to its GoldRush equivalent.

  • From Dune Sim

    Sim shut down on 1 August 2026. Here is where each endpoint goes.

  • From Alchemy

    Swap POST-with-key-in-URL Data APIs for flat GET endpoints.