Skip to content

Add pagination for info methods, types: delegatorHistory and delegatorRewards. Currently silently truncate at 2000 entries #161

Description

@karen-cb

Summary

This is a report against the /info API endpoints, specifically the types: delegatorHistory and delegatorRewards.

Filing issue here instead of SDK repo because this is the most direct official Hyperliquid-maintained repo I can find, and this is not an issue in caused by the SDK's code. Info.delegator_history()/Info.delegator_rewards() simply pass through what the API returns, so the SDK exhibits the same behavior, but the feature request is server-side.

The API hard-caps responses at exactly 2000 entries per address, silently returning only the most recent 2000 with no error and no indication that older data was dropped. There is no pagination, cursor, or time-range parameter to retrieve entries beyond that window — unlike sibling endpoints (e.g. funding history) which do support startTime/endTime.

Reproduction

curl -s -X POST https://api.hyperliquid.xyz/info -H "Content-Type: application/json" \
  -d '{"type":"delegatorHistory","user":"0x393d0b87ed38fc779fd9611144ae649ba6082109"}'
# Returns exactly 2000 entries, on repeated fetches.

curl -s -X POST https://api.hyperliquid.xyz/info -H "Content-Type: application/json" \
  -d '{"type":"delegatorHistory","user":"0x393d0b87ed38fc779fd9611144ae649ba6082109","startTime":0,"endTime":1}'
# Identical 2000-entry response — startTime/endTime are silently ignored.

I also tested cursor, offset, limit, page, pageSize, maxResults, since, after, before, fromTime, toTime, and snake_case variants of each, against both api.hyperliquid.xyz and a third-party RPC provider — all silently ignored.

Why this matters

Neither the response shape nor the docs (the /info endpoint reference or the rate-limits page) expose a total-count field, cursor, or "has more" flag — there is no way for a caller to know their data has been truncated except by independently proving it (as above), which isn't generally possible. Any application reconstructing a delegator's full position history from these endpoints — for accounting, reconciliation, or auditing purposes — will silently produce an incorrect result for any address active enough to exceed 2000 lifetime entries, with no error surfaced anywhere.

Ask

  • Add pagination (startTime/endTime, or a cursor) to delegatorHistory/delegatorRewards

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions