Skip to content

Get complete dashboard data (single API call)

GET
/api/wallets/{address}/dashboard
curl --request GET \
--url 'https://api.qeychain.xyz/api/wallets/example/dashboard?include_transactions=false&force_refresh=false'

Returns ALL data needed for the frontend dashboard in ONE call: - Portfolio positions with current values - Tax summary (realized gains/losses, short/long term) - All lots with consumptions and lineage - Wash sales - Transaction history - Fee summary

Frontend should make this ONE call and only display the data.
No additional API calls or calculations needed on frontend.
address
required
Address
string
owned_wallets
Any of:
Array<string>

All wallet addresses owned by the user

include_transactions
Include Transactions

Include raw transactions in response (adds ~14MB). Default false — use /transactions endpoint instead.

boolean

Include raw transactions in response (adds ~14MB). Default false — use /transactions endpoint instead.

force_refresh
Force Refresh

Force recompute from scratch, bypassing DB cache.

boolean

Force recompute from scratch, bypassing DB cache.

Successful Response

Media typeapplication/json
DashboardResponse

Complete dashboard data in a single response.

Frontend makes ONE call, backend does ALL fetching and processing. Frontend only displays - no logic, no additional API calls.

object
address
required
Address
string
processing_time_ms
required
Processing Time Ms
integer
positions
Positions
Array<object>
PositionResponse

Current position with cost basis data.

object
symbol
required
Symbol

Token symbol

string
name
Any of:
string
chain
required
Chain

Blockchain network

string
quantity
required
Quantity

Current quantity held

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
current_price
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
current_value
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
total_cost_basis
required
Total Cost Basis

Total cost basis

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
average_cost
required
Average Cost

Average cost per unit

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
unrealized_gain_loss
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
unrealized_gain_loss_percent
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
open_lots_count
Open Lots Count

Number of open lots

integer
0
partial_lots_count
Partial Lots Count

Number of partially consumed lots

integer
0
is_zerion_only
Is Zerion Only

True if this position was detected on-chain (Zerion) but has no matching FIFO engine entry. Cost basis is unknown.

boolean
position_type
Any of:
string
protocol
Any of:
string
portfolio_total_value
Portfolio Total Value
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
portfolio_total_cost_basis
Portfolio Total Cost Basis
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
portfolio_unrealized_gl
Portfolio Unrealized Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
realized_including_pending
Realized Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
st_gains_including_pending
St Gains Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
st_losses_including_pending
St Losses Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
net_st_including_pending
Net St Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
lt_gains_including_pending
Lt Gains Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
lt_losses_including_pending
Lt Losses Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
net_lt_including_pending
Net Lt Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
wash_sale_disallowed
Wash Sale Disallowed
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
wash_sale_count
Wash Sale Count
integer
0
disposal_count
Disposal Count
integer
0
proceeds_including_pending
Proceeds Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
cost_basis_sold_including_pending
Cost Basis Sold Including Pending
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
income
Any of:
IncomeBreakdownResponse

Breakdown of income by type (airdrops, staking rewards, etc.).

object
airdrop
Airdrop

Total airdrop income at FMV

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
staking_reward
Staking Reward

Total staking reward income at FMV

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
mining_reward
Mining Reward

Total mining reward income at FMV

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
interest
Interest

Total interest income at FMV

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
other
Other

Other income at FMV

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
total
Total

Total income received (sum of all types)

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
lots
Lots
Array<object>
LotResponse

Tax lot with cost basis information.

Enhanced with detailed origin tracking for full money trail:

  • WHERE it came from (origin_address, origin_chain)
  • HOW it was acquired (origin_type, origin_symbol)
object
lot_id
required
Lot Id

Unique lot identifier (e.g., ‘ETH-ARB-001’)

string
symbol
required
Symbol

Token symbol

string
chain
required
Chain

Blockchain network

string
original_quantity
required
Original Quantity

Original quantity acquired

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
remaining_quantity
required
Remaining Quantity

Remaining quantity after disposals

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
cost_per_unit
required
Cost Per Unit

Cost per unit in USD

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
total_cost
required
Total Cost

Total cost basis in USD

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
remaining_cost
required
Remaining Cost

Remaining cost basis

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
acquisition_date
Any of:
string format: date-time
type
required
Type

Acquisition type (purchase, swap_in, etc.)

string
price_source
required
Price Source

Source of price data

string
decision_state
Any of:
string
status
required
Status

Lot status: OPEN, PARTIAL, or CLOSED

string
is_untracked
Is Untracked

Whether this lot has unknown cost basis

boolean
needs_manual_cost_basis
Needs Manual Cost Basis

Whether user should provide cost basis manually

boolean
manual_cost_basis_set
Manual Cost Basis Set

Whether user has provided manual cost basis

boolean
manual_cost_basis_note
Any of:
string
consumptions
Consumptions

List of consumption events

Array<object>
LotConsumptionResponse

Individual lot consumption event.

Enhanced with destination tracking for full money trail:

  • WHERE the lot went (destination_type, destination_address)
  • WHAT it became (destination_symbol, destination_lot_id)
object
lot_id
required
Lot Id
string
quantity_consumed
required
Quantity Consumed
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
cost_basis_used
required
Cost Basis Used
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
proceeds
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
realized_gain_loss
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
holding_period_days
Any of:
integer
is_long_term
Any of:
boolean
is_wash_sale
Is Wash Sale
boolean
wash_sale_disallowed_loss
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
event_type
required
Event Type
string
decision_state
Any of:
string
consumed_at
required
Consumed At
string format: date-time
destination_type
Any of:
string
destination_symbol
Any of:
string
destination_address
Any of:
string
destination_chain
Any of:
string
destination_protocol
Any of:
string
destination_lot_id
Any of:
string
source_lots
Source Lots

Lots this lot came from (e.g., SCR lots that became this ETH lot)

Array<object>
LineageRefResponse

Reference to a lot in the lineage chain (money trail).

object
lineage_key
required
Lineage Key

Unique lineage key (chain:symbol:lot_id)

string
lot_id
required
Lot Id

Lot identifier

string
symbol
required
Symbol

Token symbol

string
chain
required
Chain

Blockchain network

string
quantity
required
Quantity

Quantity from/to this lot

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
cost_basis
required
Cost Basis

Cost basis contribution

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
destination_lots
Destination Lots

Lots this lot became (e.g., ETH lot that this SCR lot was swapped for)

Array<object>
LineageRefResponse

Reference to a lot in the lineage chain (money trail).

object
lineage_key
required
Lineage Key

Unique lineage key (chain:symbol:lot_id)

string
lot_id
required
Lot Id

Lot identifier

string
symbol
required
Symbol

Token symbol

string
chain
required
Chain

Blockchain network

string
quantity
required
Quantity

Quantity from/to this lot

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
cost_basis
required
Cost Basis

Cost basis contribution

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
origin_type
Any of:
string
origin_address
Any of:
string
origin_entity
Any of:
object
key
additional properties
any
origin_chain
Any of:
string
origin_protocol
Any of:
string
origin_symbol
Any of:
string
origin_tx_hash
Any of:
string
gas_fee_included
Gas Fee Included

Gas fee (USD) included in cost basis (IRS allows adding gas to acquisition cost)

string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
total_lots
Total Lots
integer
0
open_lots
Open Lots
integer
0
closed_lots
Closed Lots
integer
0
wash_sales
Wash Sales
Array<object>
WashSaleResponse

Wash sale event details.

object
id
required
Id

Wash sale event ID

string
symbol
required
Symbol

Token symbol

string
sale_lot_id
required
Sale Lot Id

Lot ID that was sold at a loss

string
sale_date
required
Sale Date

Date of the loss sale

string format: date-time
sale_transaction_hash
required
Sale Transaction Hash

Transaction hash of sale

string
acquisition_lot_id
required
Acquisition Lot Id

Lot ID acquired within wash sale window

string
acquisition_date
required
Acquisition Date

Date of the replacement acquisition

string format: date-time
acquisition_transaction_hash
required
Acquisition Transaction Hash

Transaction hash of acquisition

string
disallowed_loss
required
Disallowed Loss

Amount of loss disallowed

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
quantity_matched
required
Quantity Matched

Quantity matched for wash sale

string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
days_apart
required
Days Apart

Days between sale and acquisition

integer
rwa_holdings
Rwa Holdings
Array<object>
object
key
additional properties
any
rwa_yield_summary
Any of:
object
key
additional properties
any
transactions
Transactions
Array<object>
object
key
additional properties
any
transaction_count
Transaction Count
integer
0
total_fees_usd
Total Fees Usd
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
fee_transaction_count
Fee Transaction Count
integer
0
fee_by_chain
Fee By Chain
Array<object>
object
key
additional properties
any
unpriced_positions_count
Any of:
integer
unpriced_cost_basis
Any of:
string
/^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_realized_gl
Ytd Realized Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_short_term_gains
Ytd Short Term Gains
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_short_term_losses
Ytd Short Term Losses
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_net_short_term
Ytd Net Short Term
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_long_term_gains
Ytd Long Term Gains
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_long_term_losses
Ytd Long Term Losses
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
ytd_net_long_term
Ytd Net Long Term
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
yearly_realized_performance
Yearly Realized Performance
Array<object>
object
key
additional properties
any
confirmed_realized_gl
Confirmed Realized Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
confirmed_st_gl
Confirmed St Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
confirmed_lt_gl
Confirmed Lt Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
confirmed_proceeds
Confirmed Proceeds
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
confirmed_cost_basis_sold
Confirmed Cost Basis Sold
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
pending_disposals_count
Pending Disposals Count
integer
0
pending_proceeds_total
Pending Proceeds Total
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
pending_realized_gl
Pending Realized Gl
string
default: 0 /^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$/
pending_assets_summary
Pending Assets Summary
Array<object>
object
key
additional properties
any
plan_name
Any of:
string
tx_limit
Any of:
integer
tx_total
Any of:
integer
is_limited
Is Limited
boolean
Example
{
"positions": [
{
"open_lots_count": 0,
"partial_lots_count": 0,
"is_zerion_only": false
}
],
"portfolio_total_value": "0",
"portfolio_total_cost_basis": "0",
"portfolio_unrealized_gl": "0",
"realized_including_pending": "0",
"st_gains_including_pending": "0",
"st_losses_including_pending": "0",
"net_st_including_pending": "0",
"lt_gains_including_pending": "0",
"lt_losses_including_pending": "0",
"net_lt_including_pending": "0",
"wash_sale_disallowed": "0",
"wash_sale_count": 0,
"disposal_count": 0,
"proceeds_including_pending": "0",
"cost_basis_sold_including_pending": "0",
"income": {
"airdrop": "0",
"staking_reward": "0",
"mining_reward": "0",
"interest": "0",
"other": "0",
"total": "0"
},
"lots": [
{
"is_untracked": false,
"needs_manual_cost_basis": false,
"manual_cost_basis_set": false,
"consumptions": [
{
"is_wash_sale": false
}
],
"gas_fee_included": "0"
}
],
"total_lots": 0,
"open_lots": 0,
"closed_lots": 0,
"transaction_count": 0,
"total_fees_usd": "0",
"fee_transaction_count": 0,
"unpriced_positions_count": 0,
"unpriced_cost_basis": "0",
"ytd_realized_gl": "0",
"ytd_short_term_gains": "0",
"ytd_short_term_losses": "0",
"ytd_net_short_term": "0",
"ytd_long_term_gains": "0",
"ytd_long_term_losses": "0",
"ytd_net_long_term": "0",
"confirmed_realized_gl": "0",
"confirmed_st_gl": "0",
"confirmed_lt_gl": "0",
"confirmed_proceeds": "0",
"confirmed_cost_basis_sold": "0",
"pending_disposals_count": 0,
"pending_proceeds_total": "0",
"pending_realized_gl": "0",
"is_limited": false
}

Bad Request

Media typeapplication/json
ErrorResponse

Standard error response.

object
detail
required
Detail

Error message

string
error_code
Any of:
string
Examplegenerated
{
"detail": "example",
"error_code": "example"
}

Not Found

Media typeapplication/json
ErrorResponse

Standard error response.

object
detail
required
Detail

Error message

string
error_code
Any of:
string
Examplegenerated
{
"detail": "example",
"error_code": "example"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}

Internal Server Error

Media typeapplication/json
ErrorResponse

Standard error response.

object
detail
required
Detail

Error message

string
error_code
Any of:
string
Examplegenerated
{
"detail": "example",
"error_code": "example"
}