Skip to main content
Returns the Polymarket outcome tokens one wallet holds on Polygon, one row per token, with the latest balance of each. These are the ERC-1155 tokens of Polymarket’s Conditional Tokens contract. Use it to check what a wallet holds right now, whatever trades, splits, merges, or transfers got it there. This is a different feed from the wallet Balances feed, which returns native and ERC-20 balances with USD values.

Parameters

string
required
The wallet to look up: 0x followed by 40 hex characters, in any case.
string
Comma-separated outcome token IDs. Only return balances of these tokens.
string
Only return balances of tokens issued by this contract: 0x followed by 40 hex characters.
string
Only return balances of this token type, such as ERC_1155. Case-sensitive.
string
default:"0"
Only return balances at or above this value, in the same raw units as balance. The default includes balances that have dropped to zero. Set min_balance=1 to leave them out.
integer
Return the latest balance Goldsky recorded at or before this Polygon block. It isn’t an exact reconstruction of the chain at that block: events Goldsky processed late or out of order may not be reflected.
string
default:"block_timestamp_desc"
block_timestamp_desc, most recently changed first, or balance_desc, largest first. Ties are broken by token_id, ascending.
integer
default:"100"
Rows per page, up to 500. See pagination.
string
The next_cursor from a previous response. Use the same sort as the request that returned it.

Response

object[]
One entry per outcome token, in sort order.
integer
The page size used for this response.
string | null
Pass it as cursor to get the next page. null on the last page.

How the data behaves

  • A balance isn’t a position. balance is what the wallet holds onchain. Positions returns the net position from trades, which can differ, because splits, merges, redeems, and plain transfers move tokens without a trade.
  • Balances are raw strings. Divide balance by 1,000,000 before you show it.
  • Caching follows the block. Responses carry Cache-Control: public, max-age=2. With as_of_block, they carry public, max-age=86400, immutable.

Errors

This endpoint returns the same errors as the other feeds. It returns 400 BAD_REQUEST when address is missing, when address or contract_address isn’t 40 hex characters, when sort isn’t one of the values above, or when cursor was issued for a different sort.

Billing

With an API key, each row returned is one compute unit, at $10 per million. An empty page is free. With x402, each request costs 10 atomic USDC ($0.00001), however many rows it returns. See Feeds pricing.

Example

Get a wallet’s two largest nonzero balances:
The response has this shape. The values are illustrative, and token IDs are shortened: