API Conventions
Shared rules for every external endpoint: auth, precision, coverage, pagination, validation, errors, and operational limits.
Authenticate every request
All external API calls use the same base URL and authentication header. The API is read-only: requests in this namespace are GET requests with query parameters, not JSON request bodies.
curl -sS "https://api.dexhunt.app/api/developer/v1/networks" \
-H "X-API-Key: hlsk_your_developer_key"{
"items": [
{
"network": "hyperliquid",
"displayName": "Hyperliquid",
"active": true,
"strategyEnabled": true,
"scanAssetCount": 250
}
],
"nextCursor": null
}Token usage
Successful developer-token requests are recorded by method, path, response status, and day. Keep tokens server-side and rotate them if they are exposed.
Interpret 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. It is the right scope for wallet intelligence and tracked positioning.
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 Elasticsearch wallet profiles or live upstream data can be null when unavailable.
Null is signal absence
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.
curl -sS "https://api.dexhunt.app/api/developer/v1/networks/hyperliquid/wallets?limit=2&cursor=2" \
-H "X-API-Key: hlsk_your_developer_key"{
"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 surface 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
News limits
Market news defaults to 30 rows and caps at 100 rows.
30 / 100
Validate query values
Validation is strict enough to prevent ambiguous routes and unsafe query values. Invalid parameters return 400 bad_requestwith a problem-detail response.
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
curl -sS "https://api.dexhunt.app/api/developer/v1/networks/hyperliquid/markets/BTC/candles?interval=2m" \
-H "X-API-Key: hlsk_your_developer_key"{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Unsupported interval",
"instance": "/api/developer/v1/networks/hyperliquid/markets/BTC/candles",
"code": "bad_request",
"requestId": "f1f3f4a9-2b51-47e9-9966-2e6d78c4b0a3"
}Use supported intervals
The timeseries endpoints share the same interval and time-window parser. Supported intervals are:
1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, and 1M.
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.
curl -sS "https://api.dexhunt.app/api/developer/v1/networks"{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "Invalid or missing API key",
"instance": "/api/developer/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
503
A live upstream source is temporarily unavailable. Wallet activity endpoints can return this in API-only deployments.
service_unavailable
Plan for availability
The current Java server does not publish a fixed per-token GET limit for /api/developer/v1 and does not return rate-limit headers. Integrations should still use timeouts, retry transient 503 responses with backoff, and be prepared for 429 if edge-level limits are added later.
Live passthrough endpoints
Open orders, fills, funding, and transfers read live wallet activity from Hyperliquid through the server-side limiter. These endpoints can be slower or temporarily unavailable compared with cached analytics endpoints.
What to do next
Wallets
Use the wallet directory and profile endpoints with the shared pagination and nullable-field rules.
Timeseries
Read supported intervals and paging examples for candles, open interest, and positioning.
Endpoint catalog
Check the complete path list before adding routes to a client SDK.
Related pages
Start
Quickstart
Make the first DexHunt external API requests with curl and inspect wallet, market, and timeseries responses.
API Reference
Endpoint Catalog
Complete catalog of DexHunt external API endpoints under /api/developer/v1.
API Reference
Timeseries
Candles, open-interest series, and scanned-wallet positioning series in the DexHunt external API.