condition_id, question (formatted "Will {candidate} win?"), slug, active/closed state, and lifetime volume.
Backed by v2.neg_risk_child. Sorted by volume_all_time DESC so the most-traded outcomes surface first.
Request
Authentication
Paid tier required. See/clobv2/trades for auth formats.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
parent_id | string | Yes | The neg-risk event’s id (32-byte, 0x + 64 hex). Get one from /clobv2/neg-risk/events. |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Max children returned (1-1000, default 200). |
Parameter validation
parent_id: regex^0x[a-f0-9]{64}$.limit: 1-1000.
400 Bad Request.
Response
Response fields
| Field | Type | Description |
|---|---|---|
parent_id | string | Echoes the path parameter. |
source | string | Always "onchain-v2". |
count | integer | Number of children returned. |
children[].parent_id | string | Same as top-level parent_id. |
children[].child_condition_id | string | 32-byte condition_id for this child market. Use with /clobv2/trades?condition_id=... to pull fills. |
children[].outcome_title | string | Candidate name (e.g. "Cameron Young", "Donald Trump"). |
children[].question | string | Full question string ("Will {candidate} win ..."). |
children[].slug | string | Polymarket URL slug for the child market. |
children[].event_title | string | Same for every child — the parent event’s title. |
children[].event_slug | string | Same for every child — the parent event’s slug. |
children[].active | boolean | Market was enabled on Polymarket. |
children[].closed | boolean | Market has been resolved (event concluded). |
children[].end_date | string | null | ISO-8601 UTC resolution date. |
children[].volume_all_time | string (numeric) | Cumulative USDC volume across v1 + v2 for this child (from the metadata layer). |
children[].image | string | null | CDN URL of the event image (shared across all children). |
Rate-limit headers
Standard:x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset.
Examples
Error responses
| Status | Body | When |
|---|---|---|
400 | {"error": "invalid condition_id ..."} | parent_id isn’t 0x + 64 hex. |
401 | {"error": "missing API key ..."} | No key or bad key. |
402 | {"error": "paid plan required ..."} | Free tier. |
429 | {"error": "rate limit exceeded", "reset_at": <unix>} | Rate limit hit. |
5xx | {"error": "temporary_data_provider_error"} | Temporary data provider issue. Retry with backoff. |
Notes
- An unknown
parent_idreturnscount: 0withchildren: []— not a 404. volume_all_timeis cumulative across v1 + v2 because a single condition_id can exist in both exchanges. Use/clobv2/markets/{token_id}/volumeif you specifically want the v2-only subset for one outcome token.- The same event’s children all share
image,event_title,event_slug, andend_date. These are denormalized for convenience. activeandclosedboth beingtrueis expected for a resolved event —closedmeans resolution happened,activemeans Polymarket enabled the market (and never disabled).- Sorted by
volume_all_time DESC NULLS LAST.

