DH
7 min read·Updated 2026-06-12

API Conventions

Shared rules for every endpoint: auth, precision, coverage, pagination, validation, errors, and operational limits.

Authenticate every request

Every call requires a developer token in the X-API-Key header. See the Authentication page for key handling and 401 responses. Every endpoint is a GET with query parameters, never a JSON body.

Request
bash
curl -sS "https://api.dexhunt.app/v1/networks" \
  -H "X-API-Key: hlsk_your_developer_key"
Example response
json
{
  "items": [
    {
      "network": "hyperliquid",
      "displayName": "Hyperliquid",
      "scanAssetCount": 250
    }
  ],
  "nextCursor": null
}

Coverage and field types

DexHunt scans discovered wallets and aggregates their current state. Wallet and market responses do not claim global exchange coverage unless the response explicitly says so.

Coverage

Returned data covers wallets discovered and scanned by DexHunt.

scanned_wallets

Decimals

All monetary, price, PnL, ratio, and percentage fields are strings. Parse them with decimal-safe libraries.

JSON string

Timestamps

Times are UTC ISO-8601 strings unless a field is named time, where epoch milliseconds are also included.

UTC

Nullable analytics

Fields enriched from wallet profiles or live upstream data can be null when unavailable.

null = unavailable

Page through results

Paginated endpoints return an items array and a nextCursor. Send the cursor back unchanged to fetch the next page. Treat cursors as opaque even when they look like an offset or timestamp.

Request
bash
curl -sS "https://api.dexhunt.app/v1/networks/hyperliquid/wallets?limit=2&cursor=2" \
  -H "X-API-Key: hlsk_your_developer_key"
Example response
json
{
  "items": [
    {
      "address": "0x2222222222222222222222222222222222222222",
      "accountTotalValue": "940000.25",
      "totalPositionValue": "210000.00",
      "observedAt": "2026-06-12T12:03:00Z"
    }
  ],
  "nextCursor": null,
  "total": 3,
  "coverage": "scanned_wallets"
}

Directory limits

Wallets, market positions, rankings, activity, and liquidation levels default to 25 or 100 depending on the endpoint and cap at 200 or 1000.

endpoint-specific

Wallet activity limits

Open orders, fills, funding, and transfers default to 100 rows and cap at 500 rows.

100 / 500

Timeseries limits

Candles, open interest, and positioning default to 500 points and cap at 5000 points.

500 / 5000

Validate query values

Invalid parameters return a 400 bad_request response. The rules below cover common path and query values.

network

Network ids are normalized to lowercase and must match ^[a-z][a-z0-9_-]{1,63}$.

example: hyperliquid

asset

Assets allow letters, numbers, colon, underscore, and hyphen. Builder-style symbols such as xyz:SP500 are valid.

max 128 chars

address

Wallet addresses are normalized to lowercase and must be 0x plus 40 hex characters.

0x...

direction

Directional filters accept long or short. Wallet list direction can also return neutral as a derived value.

long | short

Request
bash
curl -sS "https://api.dexhunt.app/v1/networks/hyperliquid/markets/BTC/candles?interval=2m" \
  -H "X-API-Key: hlsk_your_developer_key"
Example response
json
{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "Unsupported interval",
  "instance": "/v1/networks/hyperliquid/markets/BTC/candles",
  "code": "bad_request",
  "requestId": "f1f3f4a9-2b51-47e9-9966-2e6d78c4b0a3"
}

Intervals and time windows

Candles and open interest accept intervals from 15m upward:

15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, and 1M.

Positioning and positioning flow accept their own exact interval set: 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, and 1M. Requests below15m return HTTP 400. Positioning flow is calculated from adjacent positioning points and is not a separate stored dataset.

The from, to, and cursor parameters accept either an ISO instant such as 2026-06-12T12:00:00Z or epoch milliseconds such as 1781265600000.

Handle problem details

Errors use RFC7807 problem details with application/problem+json. The response includes a stable code and a requestId that can be passed to support.

Request
bash
curl -sS "https://api.dexhunt.app/v1/networks"
Example response
json
{
  "type": "about:blank",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Invalid or missing API key",
  "instance": "/v1/networks",
  "code": "unauthorized",
  "requestId": "7d9c42f7-0dd0-4d4b-82dc-2c4d83b7f68a"
}

400

The path or query is invalid, a required parameter is missing, or the requested network is unsupported.

bad_request

401

The X-API-Key header is absent, malformed, revoked, or unknown.

unauthorized

404

The resource is absent, such as an unknown wallet profile or market symbol.

not_found

500

An unexpected server-side failure. Safe to retry idempotent GETs with backoff.

internal_error

Availability and limits

The API does not publish a fixed per-token GET limit or return rate-limit headers. Set timeouts and retry 500 responses with backoff.

Live passthrough endpoints

Open orders, fills, funding, and transfers read live wallet activity from Hyperliquid. These endpoints can be slower or temporarily unavailable compared with the cached analytics endpoints.

What to do next