---
title: Polymarket Analytics
description: Bounded Polymarket leaderboard, trader profile, positions, market summary, and user category endpoints.
---

# Polymarket Analytics

<TypeHeader type="" meta="Weight: Fixed per request, depending on endpoint | Advanced-tier only"></TypeHeader>

These endpoints expose Polymarket-specific analytics that are not served through `/v1/points`. They are fixed-weight `GET` endpoints under `/v1/polymarket/analytics/*`, and they do not use the usual point-based weight formula.
All examples use the standard public auth header:

<CodeBlock lang="Header">
<pre><span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

## Common behavior

| Rule | Details |
| --- | --- |
| Tier access | Advanced-tier only |
| Weight model | Fixed per endpoint |
| HTTP method | `GET` |
| Pagination | `limit` defaults to `20`, `offset` defaults to `0` |
| Pagination bounds | `limit <= 100`, `offset <= 100` |
| Streaming | Not available on WebSocket |

<Callout kind="note">

These endpoints are separate from `/v1/points`. They do not use `type`, `exchange`, `interval`, `from`, or `period`.

</Callout>

<Callout kind="note">

Top-level JSON fields are camelCase (`traderProfiles`, `traderProfile`, `userPositions`, `marketSummary`, `userCategories`). Nested Polymarket payload fields remain snake_case.

</Callout>

<Callout kind="note">

The JSON response can omit fields whose values are zero, empty, or unset. The response tables below list the available fields even when a specific response sample does not include every field. Long distribution arrays are shortened in the examples.

</Callout>

## Endpoint overview

| Endpoint | Weight | Purpose |
| --- | --- | --- |
| `/v1/polymarket/analytics/leaderboard` | 60 | Browse trader leaderboard results with bounded filters and sorting |
| `/v1/polymarket/analytics/trader-profile` | 100 | Fetch a single trader profile for one wallet |
| `/v1/polymarket/analytics/positions` | 40 | Fetch bounded position rows by wallet, asset, or condition |
| `/v1/polymarket/analytics/market-summary` | 60 | Fetch a market summary for exactly one `assetId` or `conditionId` |
| `/v1/polymarket/analytics/user-categories` | 40 | Fetch a trader's category breakdown for one wallet |

When the target is a known market rather than a specific outcome token, prefer `conditionId`.

## Leaderboard

<EndpointBar method="GET" path="/v1/polymarket/analytics/leaderboard"></EndpointBar>

Returns a bounded list of trader profiles. By default it sorts by realized PnL descending.

### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | int32 | No | Number of rows to return. Default: `20`. Max: `100`. |
| `offset` | int32 | No | Zero-based pagination offset. Default: `0`. Max: `100`. |
| `roiPercentage` | int64 | No | Minimum realized ROI percentage. |
| `minTotalTradeCount` | double | No | Minimum total position count. |
| `maxTotalTradeCount` | double | No | Maximum total position count. |
| `winRate` | double | No | Minimum win rate percentage. |
| `avgPositionSize` | double | No | Minimum average position size. |
| `totalVolume` | double | No | Minimum total traded size. |
| `primaryCategory` | string | No | Filter to traders who have traded a category, for example `Politics`. |
| `openPositionCount` | int64 | No | Minimum number of open positions. |
| `timeSinceLastTrade` | int64 | No | Minimum seconds since the latest trade. |
| `avgHoldingTime` | int64 | No | Minimum average holding duration in seconds. |
| `sortBy` | enum | No | `REALIZED_PNL`, `ROI`, `WIN_COUNT`, `WIN_RATE`, `TOTAL_SIZE`, or `TOTAL_POSITION_COUNT`. |
| `sortDirection` | enum | No | `SORT_DIRECTION_ASC` or `SORT_DIRECTION_DESC`. |

### Response fields

Each entry in `traderProfiles` is a `PolymarketTraderProfile`:

| Field | Type | Description |
| --- | --- | --- |
| `wallet_address` | string | Trader wallet address |
| `total_position_count` | int64 | Total number of tracked positions |
| `open_position_count` | int64 | Number of currently open positions |
| `closed_position_count` | int64 | Number of closed positions |
| `latest_open_position_ts` | object | Latest open position timestamp, with `seconds` and `nanoseconds` |
| `total_size` | double | Total tracked position size |
| `total_realized_pnl` | double | Total realized PnL |
| `total_unrealized_pnl` | double | Total unrealized PnL |
| `total_roi` | double | Total return on investment |
| `win_rate_by_positions` | double | Win rate by closed positions |
| `largest_win` | double | Largest realized win |
| `largest_loss` | double | Largest realized loss |
| `avg_holding_duration` | int64 | Average holding duration in seconds |
| `total_open_pos_value` | double | Total value of open positions |
| `total_closed_pos_value` | double | Total value of closed positions |

### Example

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/leaderboard?limit=1"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<CodeBlock lang="JSON">
<pre>{
  <span class="s-p">"traderProfiles"</span>: [
    {
      <span class="s-p">"wallet_address"</span>: <span class="s-s">"0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span>,
      <span class="s-p">"total_position_count"</span>: <span class="s-n">1047</span>,
      <span class="s-p">"closed_position_count"</span>: <span class="s-n">1047</span>,
      <span class="s-p">"total_size"</span>: <span class="s-n">193273897.17371872</span>,
      <span class="s-p">"total_realized_pnl"</span>: <span class="s-n">94916520.2155992</span>,
      <span class="s-p">"win_rate_by_positions"</span>: <span class="s-n">80.70678127984718</span>,
      <span class="s-p">"largest_win"</span>: <span class="s-n">5740012.643231001</span>,
      <span class="s-p">"largest_loss"</span>: <span class="s-n">-48.26</span>,
      <span class="s-p">"avg_holding_duration"</span>: <span class="s-n">3429946</span>,
      <span class="s-p">"total_closed_pos_value"</span>: <span class="s-n">193273897.17371872</span>
    }
  ]
}</pre>
</CodeBlock>

---

## Trader Profile

<EndpointBar method="GET" path="/v1/polymarket/analytics/trader-profile"></EndpointBar>

Returns a single trader profile for exactly one wallet.

### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `userWallet` | string | Yes | Wallet address, for example `0x...` |

### Response

The response contains a single `traderProfile` object with the same shape as leaderboard rows.

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/trader-profile?userWallet=0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<CodeBlock lang="JSON">
<pre>{
  <span class="s-p">"traderProfile"</span>: {
    <span class="s-p">"wallet_address"</span>: <span class="s-s">"0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span>,
    <span class="s-p">"total_position_count"</span>: <span class="s-n">1047</span>,
    <span class="s-p">"closed_position_count"</span>: <span class="s-n">1047</span>,
    <span class="s-p">"total_size"</span>: <span class="s-n">193273897.17371872</span>,
    <span class="s-p">"total_realized_pnl"</span>: <span class="s-n">94916520.2155992</span>,
    <span class="s-p">"win_rate_by_positions"</span>: <span class="s-n">80.70678127984718</span>,
    <span class="s-p">"largest_win"</span>: <span class="s-n">5740012.643231001</span>,
    <span class="s-p">"largest_loss"</span>: <span class="s-n">-48.26</span>,
    <span class="s-p">"avg_holding_duration"</span>: <span class="s-n">3429946</span>,
    <span class="s-p">"total_closed_pos_value"</span>: <span class="s-n">193273897.17371872</span>
  }
}</pre>
</CodeBlock>

---

## Positions

<EndpointBar method="GET" path="/v1/polymarket/analytics/positions"></EndpointBar>

Returns bounded position rows for one wallet, one asset, or one market condition.

### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `userWallet` | string | No | Wallet address. Can be used alone or together with one identifier. |
| `assetId` | string | No | Outcome token identifier. Mutually exclusive with `conditionId`. |
| `conditionId` | string | No | Market condition identifier. Mutually exclusive with `assetId`. |
| `limit` | int32 | No | Number of rows to return. Default: `20`. Max: `100`. |
| `offset` | int32 | No | Zero-based pagination offset. Default: `0`. Max: `100`. |

### Valid request shapes

- `userWallet=<wallet>`
- `userWallet=<wallet>&assetId=<asset_id>`
- `userWallet=<wallet>&conditionId=<condition_id>`
- `assetId=<asset_id>`
- `conditionId=<condition_id>`
At least one of `userWallet`, `assetId`, or `conditionId` is required. `assetId` and `conditionId` cannot be set together.

### Response fields

Each entry in `userPositions` is a `PolymarketUserPositions` row:

| Field | Type | Description |
| --- | --- | --- |
| `wallet_address` | string | Trader wallet address |
| `asset_id` | string | Outcome token identifier |
| `unrealized_size` | double | Currently unrealized position size |
| `realized_size` | double | Realized position size |
| `avg_price` | double | Average entry price |
| `avg_exit_price` | double | Average exit price |
| `realized_pnl` | double | Realized PnL |
| `resolved_price` | double | Final resolved price, when available |
| `latest_open_ts` | int64 | Latest open timestamp |
| `prev_hold_duration` | int64 | Previous holding duration in seconds |
| `buy_count` | int32 | Number of buy events |
| `sell_count` | int32 | Number of sell events |
| `split_count` | int32 | Number of split events |
| `merge_count` | int32 | Number of merge events |
| `transfer_in_count` | int32 | Number of inbound transfer events |
| `transfer_out_count` | int32 | Number of outbound transfer events |
| `conversion_in_count` | int32 | Number of inbound conversion events |
| `conversion_out_count` | int32 | Number of outbound conversion events |
| `market_name` | string | Market title |
| `outcome_name` | string | Outcome label |
| `category` | string | Market category |
| `sub_category` | string | Market sub-category |
| `condition_id` | string | Market condition identifier |

### Example

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/positions?userWallet=0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab&amp;limit=1"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<CodeBlock lang="JSON">
<pre>{
  <span class="s-p">"userPositions"</span>: [
    {
      <span class="s-p">"wallet_address"</span>: <span class="s-s">"0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span>,
      <span class="s-p">"asset_id"</span>: <span class="s-s">"69984203794322070924779554468751071533998686576952069110752844084141678897886"</span>,
      <span class="s-p">"realized_size"</span>: <span class="s-n">11555027.501624001</span>,
      <span class="s-p">"avg_exit_price"</span>: <span class="s-n">0.49675456353732356</span>,
      <span class="s-p">"realized_pnl"</span>: <span class="s-n">5740012.643231001</span>,
      <span class="s-p">"resolved_price"</span>: <span class="s-n">1</span>,
      <span class="s-p">"prev_hold_duration"</span>: <span class="s-n">14305671</span>,
      <span class="s-p">"merge_count"</span>: <span class="s-n">153</span>,
      <span class="s-p">"transfer_in_count"</span>: <span class="s-n">383</span>,
      <span class="s-p">"transfer_out_count"</span>: <span class="s-n">24</span>,
      <span class="s-p">"market_name"</span>: <span class="s-s">"Which party will control the U.S. Senate after the 2022 election?"</span>,
      <span class="s-p">"outcome_name"</span>: <span class="s-s">"Democratic"</span>,
      <span class="s-p">"category"</span>: <span class="s-s">"Politics"</span>,
      <span class="s-p">"sub_category"</span>: <span class="s-s">"US Politics"</span>,
      <span class="s-p">"condition_id"</span>: <span class="s-s">"0xe0658c4beed2102c181b3987edff5edd578ad2952a6eb5fa8018925e5d7a48fd"</span>
    }
  ]
}</pre>
</CodeBlock>

---

## Market Summary

<EndpointBar method="GET" path="/v1/polymarket/analytics/market-summary"></EndpointBar>

Returns a market summary for exactly one `assetId` or one `conditionId`.

### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `assetId` | string | No | Outcome token identifier |
| `conditionId` | string | No | Market condition identifier |

Exactly one of `assetId` or `conditionId` is required.

### Response fields

The response contains a single `marketSummary` object:

| Field | Type | Description |
| --- | --- | --- |
| `event_id` | string | Polymarket event identifier |
| `condition_id` | string[] | Condition IDs included in the summary |
| `total_open_positions` | int32 | Open position count |
| `total_closed_positions` | int32 | Closed position count |
| `total_cost_basis` | double | Total cost basis |
| `total_size` | double | Total traded size |
| `largest_open_position` | double | Largest open position size |
| `total_buy_count` | int32 | Total buy event count |
| `total_sell_count` | int32 | Total sell event count |
| `total_split_count` | int32 | Total split event count |
| `total_merge_count` | int32 | Total merge event count |
| `total_transfer_in_count` | int32 | Total inbound transfer event count |
| `total_transfer_out_count` | int32 | Total outbound transfer event count |
| `total_conversion_in_count` | int32 | Total inbound conversion event count |
| `total_conversion_out_count` | int32 | Total outbound conversion event count |
| `net_transfer_flow` | int32 | Net transfer flow count |
| `net_conversion_flow` | int32 | Net conversion flow count |
| `median_hold_duration` | double | Median holding duration in seconds |
| `mean_hold_duration` | double | Mean holding duration in seconds |
| `realized_pnl_min` | double | Minimum realized PnL |
| `realized_pnl_max` | double | Maximum realized PnL |
| `realized_pnl_distribution` | double[] | Realized PnL percentile values from p0 to p99 |
| `win_rate` | double | Win rate for the summarized market |
| `avg_buy_count` | double | Average buy event count |
| `avg_sell_count` | double | Average sell event count |
| `avg_size` | double | Average position size |
| `outcome_pricing` | object[] | Per-outcome token pricing rows |

Each row in `outcome_pricing` includes:

| Field | Type | Description |
| --- | --- | --- |
| `condition_id` | string | Market condition identifier |
| `token_id` | string | Outcome token identifier |
| `outcome_name` | string | Outcome label |
| `weighted_avg_entry_price` | double | Weighted average entry price |
| `weighted_avg_exit_price` | double | Weighted average exit price |
| `open_pos_avg_price_distribution` | double[] | 101 buckets; index `i` is the account count with average entry price in `[i, i+1)` cents |
| `closed_pos_avg_exit_price_distribution` | double[] | 101 buckets; index `i` is the account count with average exit price in `[i, i+1)` cents |

### Example

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/market-summary?assetId=69984203794322070924779554468751071533998686576952069110752844084141678897886"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<CodeBlock lang="JSON">
<pre>{
  <span class="s-p">"marketSummary"</span>: {
    <span class="s-p">"event_id"</span>: <span class="s-s">"3506"</span>,
    <span class="s-p">"condition_id"</span>: [
      <span class="s-s">"0xe0658c4beed2102c181b3987edff5edd578ad2952a6eb5fa8018925e5d7a48fd"</span>
    ],
    <span class="s-p">"total_open_positions"</span>: <span class="s-n">12</span>,
    <span class="s-p">"total_closed_positions"</span>: <span class="s-n">934</span>,
    <span class="s-p">"total_cost_basis"</span>: <span class="s-n">3287751.5362184998</span>,
    <span class="s-p">"total_size"</span>: <span class="s-n">13278317.319730995</span>,
    <span class="s-p">"largest_open_position"</span>: <span class="s-n">6517160.129311998</span>,
    <span class="s-p">"total_split_count"</span>: <span class="s-n">10516</span>,
    <span class="s-p">"total_merge_count"</span>: <span class="s-n">6370</span>,
    <span class="s-p">"total_transfer_in_count"</span>: <span class="s-n">10523</span>,
    <span class="s-p">"total_transfer_out_count"</span>: <span class="s-n">10523</span>,
    <span class="s-p">"median_hold_duration"</span>: <span class="s-n">19340026</span>,
    <span class="s-p">"mean_hold_duration"</span>: <span class="s-n">15813372.224219989</span>,
    <span class="s-p">"realized_pnl_min"</span>: <span class="s-n">-7865106.637885602</span>,
    <span class="s-p">"realized_pnl_max"</span>: <span class="s-n">5740012.643231001</span>,
    <span class="s-p">"realized_pnl_distribution"</span>: [
      <span class="s-n">-7865106.637885602</span>,
      <span class="s-n">-0.00046407000000012324</span>,
      <span class="s-n">0</span>,
      <span class="s-n">74042.54808002156</span>
    ],
    <span class="s-p">"win_rate"</span>: <span class="s-n">0.5288259958071279</span>,
    <span class="s-p">"avg_size"</span>: <span class="s-n">48280.608293311605</span>,
    <span class="s-p">"outcome_pricing"</span>: [
      {
        <span class="s-p">"condition_id"</span>: <span class="s-s">"0xe0658c4beed2102c181b3987edff5edd578ad2952a6eb5fa8018925e5d7a48fd"</span>,
        <span class="s-p">"token_id"</span>: <span class="s-s">"111299642775108135148113523472260651188510255643046337855221699185339755388694"</span>,
        <span class="s-p">"outcome_name"</span>: <span class="s-s">"Republican"</span>,
        <span class="s-p">"weighted_avg_entry_price"</span>: <span class="s-n">0.000005283318038929714</span>,
        <span class="s-p">"weighted_avg_exit_price"</span>: <span class="s-n">0.1733132532287334</span>,
        <span class="s-p">"open_pos_avg_price_distribution"</span>: [<span class="s-n">10</span>, <span class="s-n">0</span>, <span class="s-n">0</span>, <span class="s-n">3</span>],
        <span class="s-p">"closed_pos_avg_exit_price_distribution"</span>: [<span class="s-n">872</span>, <span class="s-n">1</span>, <span class="s-n">2</span>, <span class="s-n">24</span>]
      }
    ]
  }
}</pre>
</CodeBlock>

---

## User Categories

<EndpointBar method="GET" path="/v1/polymarket/analytics/user-categories"></EndpointBar>

Returns a category breakdown for exactly one wallet.

### Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `userWallet` | string | Yes | Wallet address, for example `0x...` |

### Response fields

The response contains a single `userCategories` object:

| Field | Type | Description |
| --- | --- | --- |
| `wallet_address` | string | Trader wallet address |
| `category_breakdown` | object[] | Category-level breakdown rows |

Each row in `category_breakdown` includes:

| Field | Type | Description |
| --- | --- | --- |
| `market_category` | string | Top-level category name |
| `market_sub_category` | string | Sub-category name |
| `count` | int64 | Number of positions in that category |
| `realized_size` | double | Realized traded size |
| `unrealized_size` | double | Unrealized size |
| `realized_pnl` | double | Realized PnL for that category |

### Example

<CodeBlock lang="cURL">
<pre><span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/user-categories?userWallet=0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<CodeBlock lang="JSON">
<pre>{
  <span class="s-p">"userCategories"</span>: {
    <span class="s-p">"wallet_address"</span>: <span class="s-s">"0xf1302aafc43aa3a69bcd8058fc7a0259dac246ab"</span>,
    <span class="s-p">"category_breakdown"</span>: [
      {
        <span class="s-p">"market_category"</span>: <span class="s-s">"Politics"</span>,
        <span class="s-p">"market_sub_category"</span>: <span class="s-s">"US Politics"</span>,
        <span class="s-p">"count"</span>: <span class="s-n">248</span>,
        <span class="s-p">"realized_size"</span>: <span class="s-n">114739709.61980493</span>,
        <span class="s-p">"realized_pnl"</span>: <span class="s-n">56646616.73381202</span>
      }
    ]
  }
}</pre>
</CodeBlock>

---

## Typical workflows

Common starting points fall into two categories:
- inspect a trader
- inspect a market
Choose the workflow that matches the task. Not every endpoint needs to be called in sequence.

### Start from a trader

Use this flow to discover a wallet first, then inspect that trader's profile, category mix, and positions.
1. Call `/leaderboard` with a small `limit` to get a wallet.
2. Extract `traderProfiles[0].wallet_address`.
3. Reuse that wallet with `/trader-profile`, `/user-categories`, or `/positions`.
4. For market-level context on one returned position, extract `condition_id` from `/positions` and call `/market-summary`.

<CodeBlock lang="Bash">
<pre><span class="s-v">WALLET</span>=$(<span class="s-f">curl</span> -s <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/leaderboard?limit=1"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span> | <span class="s-f">jq</span> -r <span class="s-s">'.traderProfiles[0].wallet_address'</span>)
&#10;
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/trader-profile?userWallet=\${WALLET}"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span>
&#10;
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/user-categories?userWallet=\${WALLET}"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span>
&#10;
<span class="s-v">CONDITION_ID</span>=$(<span class="s-f">curl</span> -s <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/positions?userWallet=\${WALLET}&amp;limit=1"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span> | <span class="s-f">jq</span> -r <span class="s-s">'.userPositions[0].condition_id'</span>)
&#10;
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/market-summary?conditionId=\${CONDITION_ID}"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

### Start from a market

Use this flow when the market is already known and a `conditionId` is available.
1. Start with a `conditionId`.
2. Call `/market-summary` with that `conditionId`.
3. Optionally call `/positions?conditionId=...` to inspect position rows for that market.
The example below uses the same `conditionId` shown in the `/positions` example above, so the commands can be run directly.

<CodeBlock lang="Bash">
<pre><span class="s-v">CONDITION_ID</span>=<span class="s-s">"0xe0658c4beed2102c181b3987edff5edd578ad2952a6eb5fa8018925e5d7a48fd"</span>
&#10;
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/market-summary?conditionId=\${CONDITION_ID}"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span>
&#10;
<span class="s-f">curl</span> <span class="s-s">"https://api.kiyotaka.ai/v1/polymarket/analytics/positions?conditionId=\${CONDITION_ID}&amp;limit=5"</span> \\
  <span class="s-k">-H</span> <span class="s-s">"X-Kiyotaka-Key: YOUR_API_KEY"</span></pre>
</CodeBlock>

<Callout kind="note">

These examples use `jq` to extract identifiers from JSON. Without `jq`, extract `traderProfiles[0].wallet_address` or `userPositions[0].condition_id` from the responses and reuse those values manually.

</Callout>

Monitor weight consumption with `GET /v1/usage`, and see the Rate Limits page for the response headers and quota model.