Skip to main content
Returns a user’s pack (parlay) positions by Ethereum address, newest first. Public, no authentication required. The response includes only ACTIVE, WON, and LOST positions; internal lifecycle states never appear here.

When to use

Use this endpoint to render a packs positions list on a public profile view. Pass any wallet address; you do not need to be that user. For your own positions with private fields (wallet, transaction hashes, vig), use the authenticated positions endpoint instead.

Response contract

The 200 body is a paginated page: data, limit, page, totalPages, and totalRows.
  • Each position carries its status, stake, multiplier, claim state (isClaimed), leg details, and the source pack it was bought from (null for custom packs).
  • The public payload deliberately excludes wallet addresses, token IDs, transaction hashes, and vig fields.
  • The API sorts positions by creation time, newest first.

Filtering and pagination

  • status narrows the list to a single status: ACTIVE, WON, or LOST. Any other value returns 400 Bad Request. Omit it to return all three.
  • The API clamps limit server-side to the range 1-50. The default is 20.
  • offset defaults to 0. The API caps it at 10,000; a larger offset returns 400 Bad Request.
  • totalRows always reflects the full matching count, while totalPages stops at the last browsable page under the offset cap.

Address handling

The account path parameter accepts a checksummed (EIP-55) or lowercase Ethereum address. A malformed address returns 400 Bad Request. An address with no profile returns 404 Not Found.

Caching

Responses carry Cache-Control: public, max-age=5, s-maxage=15, so CDN edges may serve a cached copy for up to 15 seconds. Status and claim state can trail the live database by roughly 30 seconds in the worst case. The authenticated owner endpoint is uncached.