That returns positions belonging to that wallet and worth at least $1,000. To express OR, use a group.Fields are addressed by the same names you get back in the response, so you filter on what you see. Each endpoint documents its own filterable fields and the operators each accepts — see the API Reference.
Because conditions are list items rather than object keys, you can use the same field as many times as you like — for example, to bound a value on both sides:
in and notIn accept either a single value or an array — "value": 1234 and "value": [1234, 5678] both work. ID fields such as marketId and eventId take integers; text fields take strings.
Reference fields come back as the resolved entity rather than a bare id, so you don’t need a second request to turn an id into a name.Resolution is one level deep — a resolved row keeps its own references as plain ids, so responses can’t fan out across the graph. The API Reference shows what each endpoint resolves.
By default the endpoint returns one row per event. Pass aggregationWindow to get rows grouped by time bucket, activity type, and wallet instead — a summary rather than a log.
Each row then covers one wallet’s activity of one type within one bucket, with the measures aggregated over that window. The available grains — hourly through monthly — are listed in the API Reference; omit the field for the unaggregated log.
activityIds and aggregationWindow apply only to the activity endpoint. Sending them anywhere else returns 400.
Some endpoints require a filter on a particular field. The position and holder endpoints, for example, require userId — every query must be scoped to a wallet or a cohort. Omitting one returns 400.