Migration guide

Migrate from DeBank Cloud to GoldRush

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

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 that is the core of its product — do not. This guide is explicit about that.

8 direct5 need work4 no equivalent4 GoldRush only

Reviewed 2026-09-11. Endpoint paths read from docs.cloud.debank.com, goldrush.dev. Verify against DeBank Cloud docs before relying on a row.

What changes before any endpoint works

These are the cross-cutting differences. Miss one and every call fails the same way, so fix them first.

 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 are not going to paper over — read those first.

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 balance
Filter 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 chains
Sum 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 chain
No equivalent. This is DeBank's core strength and GoldRush does not replace it.
GET /v1/user/complex_protocol_listNo equivalent
Protocol positions, all chainsGET /v1/user/all_complex_protocol_listNo equivalent
Simplified protocol balances
LP 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_listNo equivalent
Positions in one protocolGET /v1/user/protocolNo 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 chains
Call 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 approvals
Approvals 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 curve
Per-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

Before and after

Copy-pasteable. Left is what you have on DeBank Cloud; right is 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

  1. Swap the auth header

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

  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. 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. 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. 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. 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 any of these is load-bearing for your product, do not 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

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.

Migration FAQ

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.

Start the port

Free API key with 25,000 credits and no card, or skip signup entirely and pay per request with x402.

Get Started

Get started with GoldRush API in minutes. Sign up for a free API key and start building.

Support

Explore multiple support options! From FAQs for self-help to real-time interactions on Discord.

Contact Sales

Interested in our professional or enterprise plans? Contact our sales team to learn more.