Wallets API
Recurring orders a wallet holds
The whole recurring-order book for one wallet across every status — running, paused, completed and pending — so a paused order's remaining balance is a frozen figure, not a live schedule.
GET
/api/external/wallet-analysis/wallet-dca-orders/{chain}/{address}Chains
- Solana SOL
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/wallet-analysis/wallet-dca-orders/SOL/<address>"
| Parameter | Description |
|---|---|
chainpath · string · required | Solana only; every other chain returns 400, because Jupiter DCA is a Solana program with no wired equivalent elsewhere. |
addresspath · string · required | The wallet address. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
summary | object | null | null when the source could not be reached or answer. Distinct from a CONFIRMED zero, where every count reads 0 because the wallet genuinely has no recurring-order history — that is a real, checked finding ("no scheduled buying"), not the same claim as "we could not check". Counts reflect one on-chain recurring-order program only (see orders[].program): total: 0 means none found in that one program's book, not necessarily nothing scheduled under a different one. |
summary.total | integer | |
summary.active | integer | |
summary.paused | integer | |
summary.completed | integer | |
summary.pending | integer | |
orders | object[] | Always an array — empty both when summary is null and when summary is a confirmed zero. |
orders[].orderAddress | string | null | The on-chain DCA order account. |
orders[].program | string | null | The on-chain recurring-order protocol running this order. Always jupiter today: this endpoint reads one on-chain recurring-order program only, never every program that might exist for a wallet — see summary's description for what that means for 0. |
orders[].status | string | null | Every status a real order can carry, not only ones currently running — this endpoint returns the wallet's whole recurring-order book across active, paused, completed and pending alike. null when the source reports a status this surface has not seen. On a paused order, remainingUsd/perCycleUsd/nextCycleAt describe a frozen state, not a live schedule — see their own descriptions. |
orders[].direction | string | null | |
orders[].inputMint | string | null | |
orders[].inputSymbol | string | null | |
orders[].outputMint | string | null | |
orders[].outputSymbol | string | null | |
orders[].depositedUsd | number | null | Total deposited over the order's life, valued at the CURRENT price — not a fixed historical cost basis. Two identical calls can return different values purely from price movement, with no new activity on the order at all. |
orders[].remainingUsd | number | null | What is left to spend, valued at the CURRENT price (see depositedUsd). 0 for a fully-spent order, distinct from null. On a paused order this is a frozen snapshot, not money queued to execute. |
orders[].receivedUsd | number | null | What the order has received back so far, valued at the CURRENT price (see depositedUsd). |
orders[].volumeUsd | number | null | Lifetime volume, valued at the CURRENT price (see depositedUsd). |
orders[].perCycleUsd | number | null | The USD size of one scheduled cycle, valued at the CURRENT price (see depositedUsd). On a paused order this is what the next cycle WOULD spend if resumed, not an imminent transaction. |
orders[].frequency | string | null | The cadence label, e.g. 1h, 9h, 52s. |
orders[].progressPercent | number | null | |
orders[].createdAt | string | null | ISO 8601. |
orders[].nextCycleAt | string | null | ISO 8601, or null when there is no next cycle to report. Can be IN THE PAST even on a paused order — it names when a cycle was next DUE, not a promise that one will fire. On a paused order this is a frozen, possibly stale schedule; do not read it as evidence the order will resume. |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key