> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polynode.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Position Change Event

> Polymarket position transfers between wallets.

Emitted when conditional tokens are transferred between wallets (ERC-1155 `TransferSingle` or `TransferBatch` events on Polymarket's CTF contract).

```json theme={null}
{
  "data": {
    "amount": 0.050921,
    "block_number": 84697556,
    "condition_id": "0xc288913391d7d3b484d9e63f60996671a1888207e0d9917691c5257cbab09309",
    "event_title": "Bitcoin Up or Down - March 26, 4:50AM-4:55AM ET",
    "event_type": "position_change",
    "from": "0xe3f18acc55091e2c48d883fc8c8413319d4ab7b0",
    "log_index": 2147,
    "market_image": "https://polymarket-upload.s3.us-east-2.amazonaws.com/BTC+fullsize.png",
    "market_slug": "btc-updown-5m-1774515000",
    "market_title": "Bitcoin Up or Down - March 26, 4:50AM-4:55AM ET",
    "neg_risk": false,
    "outcome": "Up",
    "outcomes": ["Up", "Down"],
    "taker_base_fee": 1000.0,
    "tick_size": 0.01,
    "timestamp": 1774515147000,
    "to": "0xb27bc932bf8110d8f78e55da7d5f0497a18b5b82",
    "token_id": "58779171378753040273547833889411100281640930430837040192014777442237090167078",
    "token_ids": [
      "58779171378753040273547833889411100281640930430837040192014777442237090167078",
      "44910406836464179003614524044201701268382942629198430107881894265432491492514"
    ],
    "tokens": {
      "44910406836464179003614524044201701268382942629198430107881894265432491492514": "Down",
      "58779171378753040273547833889411100281640930430837040192014777442237090167078": "Up"
    },
    "transfer_type": "single",
    "tx_hash": "0x2b72f18ba36846fa72c7083e89d1a66438e0b9b15e170325f4efde5d08cc602e"
  },
  "timestamp": 1774515147000,
  "type": "position_change"
}
```

## Fields

<ResponseField name="type" type="string" required>
  Always `"position_change"`.
</ResponseField>

<ResponseField name="timestamp" type="number" required>
  Block timestamp in Unix milliseconds.
</ResponseField>

<ResponseField name="data" type="object" required>
  <Expandable title="data fields">
    <ResponseField name="tx_hash" type="string" required>
      Transaction hash.
    </ResponseField>

    <ResponseField name="block_number" type="number" required>
      Block number.
    </ResponseField>

    <ResponseField name="log_index" type="number" required>
      Log index within the transaction.
    </ResponseField>

    <ResponseField name="timestamp" type="number" required>
      Block timestamp in Unix milliseconds.
    </ResponseField>

    <ResponseField name="from" type="string" required>
      Sender wallet address.
    </ResponseField>

    <ResponseField name="to" type="string" required>
      Receiver wallet address.
    </ResponseField>

    <ResponseField name="token_id" type="string" required>
      Conditional token ID being transferred.
    </ResponseField>

    <ResponseField name="amount" type="number" required>
      Number of tokens transferred.
    </ResponseField>

    <ResponseField name="transfer_type" type="string" required>
      `"single"` (TransferSingle) or `"batch"` (TransferBatch).
    </ResponseField>

    <ResponseField name="market_title" type="string">
      Human-readable market question. Enriched from metadata.
    </ResponseField>

    <ResponseField name="outcome" type="string">
      Outcome name (e.g. "Yes", "No"). Enriched from metadata.
    </ResponseField>

    <ResponseField name="market_slug" type="string">
      Market URL slug. Enriched from metadata.
    </ResponseField>

    <ResponseField name="event_title" type="string">
      Parent event title. Enriched from metadata.
    </ResponseField>

    <ResponseField name="market_image" type="string">
      Market image URL. Enriched from metadata.
    </ResponseField>

    <ResponseField name="neg_risk" type="boolean">
      Whether this market uses the negRisk contract type. Enriched from metadata.
    </ResponseField>

    <ResponseField name="tick_size" type="number">
      Minimum price increment (e.g. `0.01` or `0.001`). Enriched from metadata.
    </ResponseField>

    <ResponseField name="taker_base_fee" type="number">
      Taker fee rate in basis points. `200` = 2%, `1000` = 10%, `null` = no fee. Short-term crypto markets (5-minute ETH/BTC) typically have `1000` (10%), while standard markets have `200` (2%). Enriched from Polymarket metadata.
    </ResponseField>

    <ResponseField name="condition_id" type="string">
      Market condition ID (CTF contract identifier). Enriched from metadata.
    </ResponseField>

    <ResponseField name="outcomes" type="string[]">
      Ordered list of outcome names (e.g. `["Yes", "No"]`). Index-aligned with `token_ids`. Enriched from metadata.
    </ResponseField>

    <ResponseField name="token_ids" type="string[]">
      Ordered list of token IDs for this market. Index-aligned with `outcomes`. Enriched from metadata.
    </ResponseField>

    <ResponseField name="tokens" type="object">
      Map of token ID → outcome name for all outcomes in this market. Enriched from metadata.
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  Position changes from settlements are **not** duplicated here — the `settlement` event already contains the trade details. This event tracks non-trade transfers: wallet migrations, OTC deals, and smart contract interactions.
</Note>
