Base URL
VariableDescriptionDAXLEDGER_API_KEYAPI key used to authenticateDAXLEDGER_API_SECRETAPI secret used to authenticate
To get the aggregated portfolio valuation in a fast and canonical way, use:
GET /api/portfolio/{portfolioId}/position_snapshot/graph?span={n} Example: span=7 for 7 days.
To get historical data for a specific token when asset-level detail is needed, use:
GET /api/portfolio/{portfolioId}/position_snapshot/graph/{ticker}?span={n}
Practical rule: by default, automations/agents should use the aggregated endpoint. Only use per-ticker aggregation when it is explicitly requested (force_by_ticker=true) or when granular asset-level analysis is required.
POST /api/auth/external_api
Body:
{ "APIKey": "{{DAXLEDGER_API_KEY}}", "APISecret": "{{DAXLEDGER_API_SECRET}}" }
Response:
{ "token": "your_access_token_here" }
Header for authenticated calls:
Authorization: Bearer {{token}}
You needEndpointRefAuthenticatePOST /api/auth/external_apireferences/apis.mdList portfoliosGET /api/portfoliosreferences/apis.mdGet KPIsGET /api/portfolio/{portfolioId}/kpis/portfolioreferences/apis.mdGet findings (problems in portfolio)GET /api/portfolio/{portfolioId}/findings?page=1&pageSize=20references/apis.mdGet finding by rule idGET /api/portfolio/{portfolioId}/finding/{ruleId}references/apis.mdGet position snapshot (balances and values)GET /api/portfolio/{portfolioId}/position_snapshot?page=1&pageSize=20references/apis.mdGet portfolio position (variation) graphGET /api/portfolio/{portfolioId}/position_snapshot/graph?span=30references/apis.mdGet token position graph (variation)GET /api/portfolio/{portfolioId}/position_snapshot/graph/{ticker}?span=30references/apis.mdGet DeFi positionsGET /api/portfolio/{portfolioId}/positions_report/defireferences/apis.mdGet capital gains reportGET /api/portfolio/{portfolioId}/capital_gains_report?page=1&pageSize=20references/apis.mdGet capital gains available filtersGET /api/portfolio/{portfolioId}/capital_gains_report/filtersreferences/apis.mdGet sanity check reportGET /api/portfolio/{portfolioId}/sanity_check_report?page=1&pageSize=20references/apis.mdGet calculation summary reportGET /api/portfolio/{portfolioId}/calculation_summary_report?page=1&pageSize=20references/apis.mdGet fiscal reportGET /api/portfolio/{portfolioId}/fiscal_report?page=1&pageSize=20references/apis.mdList transactionsGET /api/portfolio/{portfolioId}/transactions?page=1&pageSize=20references/apis.mdFilter transactionsGET /api/portfolio/{portfolioId}/transactions?filter=references/apis.mdGet compliance reportGET /api/portfolio/{portfolioId}/compliance?page=1&pageSize=20references/apis.md
Endpoint
GET /api/portfolio/{portfolioId}/transactions
Query params
page
pageSize
filter
Endpoint
GET /api/portfolio/{portfolioId}/findings
Query params
page
pageSize
Use this endpoint when the user asks for problems or findings in a portfolio.
Endpoint
GET /api/portfolio/{portfolioId}/finding/{ruleId}
Use this endpoint when the user asks for findings tied to a specific rule/identifier returned in findings.
Endpoint
GET /api/portfolio/{portfolioId}/position_snapshot
Query params
page
pageSize
filter
sort
Use this endpoint when the user asks about token balance or token value.
Endpoint
GET /api/portfolio/{portfolioId}/position_snapshot/graph/
Query params
span (7, 30, 365, -1)
Use this endpoint when the user asks about variation in balance over time or on a specific date range.
Endpoint
GET /api/portfolio/{portfolioId}/position_snapshot/graph/{ticker}
Query params
span (7, 30, 365, -1)
Use this endpoint when the user asks about a specific token holding over time or on a specific date range.
Endpoint
GET /api/portfolio/{portfolioId}/positions_report/defi
Use this endpoint when the user asks to retrieve all DeFi positions.
Endpoint
GET /api/portfolio/{portfolioId}/compliance
Query params
page
pageSize
filter
Use this endpoint when the user asks about:
Endpoint
GET /api/portfolio/{portfolioId}/capital_gains_report
Available filters endpoint
GET /api/portfolio/{portfolioId}/capital_gains_report/filters
Query params
page
pageSize
filter
sort
Use this endpoint when the user asks for gains/losses by asset and realized/unrealized values.
Capital gains filters:
If isSeparateSetting=true in capital gains response, run the endpoint with several filters using the values from /capital_gains_report/filters to retrieve separate results.
Endpoint
GET /api/portfolio/{portfolioId}/sanity_check_report
Query params
page
pageSize
Use this endpoint when the user asks for balance mismatches between calculated and reported balances.
Endpoint
GET /api/portfolio/{portfolioId}/calculation_summary_report
Query params
page
pageSize
filter
sort
Use this endpoint when the user asks for high-level calculated totals and summary metrics.
Endpoint
GET /api/portfolio/{portfolioId}/fiscal_report
Query params
page
pageSize
filter
sort
Use this endpoint when the user asks for fiscal/tax line items with acquisition, sale, and holding details.
Filters must be encoded with Base64 before sending.
Operator: contains
{"transactionHash":{"operator":"contains","value":"123456789"}}
Operator: between
{"transactionDate":{"operator":"between","value":{"startDate":"2026-03-01","endDate":"2026-03-02"}}}
Operator: contains_in
{"transactionType":{"operator":"contains_in","value":["computed-reward"]}}
Available transaction types:
Multiple filters can be applied in the same JSON object.
Example combining:
Example JSON:
{ "transactionHash": { "operator": "contains", "value": "123456" }, "transactionType": { "operator": "contains_in", "value": ["trade","deposit"] }, "transactionDate": { "operator": "between", "value": { "startDate": "2026-03-01", "endDate": "2026-03-31" } } }
Encode this JSON to Base64 and pass it as:
GET /api/portfolio/{portfolioId}/transactions?filter=&page=1&pageSize=20
Browser
btoa(JSON.stringify(filter))
Node
Buffer.from(JSON.stringify(filter)).toString("base64")
If an API field is an epoch timestamp, convert it to ISO date before returning it to the user.
Rule:
Example (Node):
new Date(Number(epoch) < 1e12 ? Number(epoch) * 1000 : Number(epoch)).toISOString()
page starts at 1
pageSize default = 20
Continue requesting pages while:
items.length < total
references/apis.md