🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

DAX Ledger Skills

by @pedromxavier14

Use the DAX Ledger API to authenticate, list portfolios, retrieve portfolio KPIs, list findings, retrieve position snapshots, and list/filter transactions wi...

Versionv1.0.0
Downloads526
TERMINAL
clawhub install daxledger-api

πŸ“– About This Skill


name: daxledger-api description: > Use the DAX Ledger API to authenticate, list portfolios, retrieve portfolio KPIs, list findings, retrieve position snapshots, and list/filter transactions with pagination.

DAX Ledger API

Base URL https://app.daxledger.io


Environment Variables

| Variable | Description | | -------------------- | ------------------------------- | | DAXLEDGER_API_KEY | API key used to authenticate | | DAXLEDGER_API_SECRET | API secret used to authenticate |


TL;DR β€” Best Practice

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.

  • Authentication

    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}}


    Pick Your Endpoint

    | You need | Endpoint | Ref | | ------------------------------------------- | ------------------------------------------------------------------------------ | ------------------ | | Authenticate | POST /api/auth/external_api | references/apis.md | | List portfolios | GET /api/portfolios | references/apis.md | | Get KPIs | GET /api/portfolio/{portfolioId}/kpis/portfolio | references/apis.md | | Get findings (problems in portfolio) | GET /api/portfolio/{portfolioId}/findings?page=1&pageSize=20 | references/apis.md | | Get finding by rule id | GET /api/portfolio/{portfolioId}/finding/{ruleId} | references/apis.md | | Get position snapshot (balances and values) | GET /api/portfolio/{portfolioId}/position_snapshot?page=1&pageSize=20 | references/apis.md | | Get portfolio position (variation) graph | GET /api/portfolio/{portfolioId}/position_snapshot/graph?span=30 | references/apis.md | | Get token position graph (variation) | GET /api/portfolio/{portfolioId}/position_snapshot/graph/{ticker}?span=30 | references/apis.md | | Get DeFi positions | GET /api/portfolio/{portfolioId}/positions_report/defi | references/apis.md | | Get capital gains report | GET /api/portfolio/{portfolioId}/capital_gains_report?page=1&pageSize=20 | references/apis.md | | Get capital gains available filters | GET /api/portfolio/{portfolioId}/capital_gains_report/filters | references/apis.md | | Get sanity check report | GET /api/portfolio/{portfolioId}/sanity_check_report?page=1&pageSize=20 | references/apis.md | | Get calculation summary report | GET /api/portfolio/{portfolioId}/calculation_summary_report?page=1&pageSize=20 | references/apis.md | | Get fiscal report | GET /api/portfolio/{portfolioId}/fiscal_report?page=1&pageSize=20 | references/apis.md | | List transactions | GET /api/portfolio/{portfolioId}/transactions?page=1&pageSize=20 | references/apis.md | | Filter transactions | GET /api/portfolio/{portfolioId}/transactions?filter= | references/apis.md | | Get compliance report | GET /api/portfolio/{portfolioId}/compliance?page=1&pageSize=20 | references/apis.md |


    Transactions

    Endpoint

    GET /api/portfolio/{portfolioId}/transactions

    Query params

    page pageSize filter


    Findings

    List Findings

    Endpoint

    GET /api/portfolio/{portfolioId}/findings

    Query params

    page pageSize

    Use this endpoint when the user asks for problems or findings in a portfolio.


    Finding By Rule Id

    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.


    Position Snapshot

    Positions Snapshot (balances and values)

    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.


    Position Snapshot Graph (Overall)

    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.


    Position Snapshot Graph By Ticker

    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.


    DeFi Positions

    Endpoint

    GET /api/portfolio/{portfolioId}/positions_report/defi

    Use this endpoint when the user asks to retrieve all DeFi positions.


    Compliance

    Portfolio Compliance

    Endpoint

    GET /api/portfolio/{portfolioId}/compliance

    Query params

    page pageSize filter

    Use this endpoint when the user asks about:

  • classified addresses
  • unclassified addresses
  • compliance issues
  • compliance status of addresses
  • blockchain address compliance

  • Reports

    Capital Gains Report

    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:

  • digitalAssetTicker (operator: contains_in)
  • report_year (operator: =)
  • portfolioConnection (operator: =)
  • 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.


    Sanity Check Report

    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.


    Calculation Summary Report

    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.


    Fiscal Report

    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.


    Transaction Filters

    Filters must be encoded with Base64 before sending.


    Transaction Hash

    Operator: contains

    {"transactionHash":{"operator":"contains","value":"123456789"}}


    Transaction Date

    Operator: between

    {"transactionDate":{"operator":"between","value":{"startDate":"2026-03-01","endDate":"2026-03-02"}}}


    Transaction Type

    Operator: contains_in

    {"transactionType":{"operator":"contains_in","value":["computed-reward"]}}

    Available transaction types:

  • airdrop
  • bonus
  • computed-deposit
  • computed-reward
  • deposit
  • other
  • reward
  • staking
  • trade
  • unknown
  • unstaking
  • withdrawal

  • Combining Multiple Filters

    Multiple filters can be applied in the same JSON object.

    Example combining:

  • transaction hash
  • transaction type
  • transaction date
  • 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


    Encoding Filters

    Browser

    btoa(JSON.stringify(filter))

    Node

    Buffer.from(JSON.stringify(filter)).toString("base64")


    Epoch Fields

    If an API field is an epoch timestamp, convert it to ISO date before returning it to the user.

    Rule:

  • 10 digits -> seconds
  • 13 digits -> milliseconds
  • Example (Node):

    new Date(Number(epoch) < 1e12 ? Number(epoch) \* 1000 : Number(epoch)).toISOString()


    Pagination

    page starts at 1

    pageSize default = 20

    Continue requesting pages while:

    items.length < total


    References

    references/apis.md