Skip to main content
Every v2 fill where a wallet is either the maker or the taker, newest-first. Same per-trade shape as /clobv2/trades — raw two-sided fields, derived convenience fields, full market enrichment, and the side field always present (telling you whether this wallet was the maker or taker on each fill). Backed by the v2.fill view.

Request

Authentication

Paid tier required. See /clobv2/trades for the auth header formats.

Path parameters

Query parameters

Parameter validation

  • address: regex ^0x[a-f0-9]{40}$ (case-insensitive).
  • limit: 1-1000. offset: 0-10000000.
Bad input → 400 Bad Request.

Response

Response fields

Correlate a submitted order safely

The wallet feed’s side field is a role, not a BUY/SELL direction. An order_hash identifies the order owned by that row’s maker. Before submission, persist the canonical exchange order hash exposed by the current SDK’s prepared-order API or browser beforeSubmit callback. Descriptive fields cannot establish identity: two orders from the same wallet can have the same token, direction, price, size, and time window. When reconciling an order submitted for a wallet:
  1. Query the order’s trading/funder address. For a Safe or deposit wallet this is the signing preview’s order.maker, not its controlling EOA signer.
  2. Keep only rows whose order_hash exactly equals the persisted hash (case-insensitively), with side: "maker" and a matching maker address. A side: "taker" row describes an order owned by the counterparty, so its order_hash is not the queried wallet’s submitted order. Never search for a different hash because amounts or timestamps look similar.
  3. For ordinary outcome/collateral fills, derive the submitted order direction from the raw token sides:
  1. Group the exact-hash rows. The endpoint returns one row per fill, and a partially filled order can appear in several rows with the same hash.
  2. Convert each row’s maker_usdc and taker_usdc decimal string back to raw six-decimal units, then sum each leg within the group. Despite their historical names, the non-collateral leg represents outcome-token shares. Never use a binary floating-point type for this conversion.
This TypeScript helper performs the exact decimal conversion and rejects a value that cannot have originated from a six-decimal raw amount:
Let rowMaker and rowTaker be one fill’s converted raw values, and let orderMaker and orderTaker be BigInt(preview.makerAmount) and BigInt(preview.takerAmount). Every candidate row must have positive values and satisfy the order’s integer-rounded minimum received amount:
Use integer division exactly as shown because each on-chain fill rounds its received leg down to a raw unit before any later grouping. After validating each row, require the group’s positive summed maker leg to be no greater than orderMaker. Equality with the full preview amounts is not required: the order may be partially filled, per-fill integer rounding can accumulate, and price improvement may make the received leg larger than its preview minimum. These maker, token, direction, and amount checks validate an exact hash match; they do not discover one. If the persisted hash is absent after bounded rereads, the result remains ambiguous: mark it for operator/user review and never automatically resubmit the consumed order.

Rate-limit headers

Same as every clobv2 endpoint: x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset.

Examples

Error responses

Notes

  • The wallet in the path is case-insensitive — 0xD663F0... works the same as 0xd663f0.... The response always echoes the normalized lowercase form.
  • Results are always sorted by ts_unix DESC (newest first).
  • side is always "maker" or "taker" here, unlike /clobv2/trades where it only appears when you supply wallet=.
  • A wallet that has never traded on v2 returns count: 0 with an empty trades: [] — not a 404.
  • The same trade appears in both participants’ wallet-trade lists — if you need deduplication across both sides, use tx_hash + order_hash as the key.