Skip to main content

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.

Beta / polynode exclusive — this event watches explicit wallet filters and detects CTF position lifecycle changes from on-chain ERC-1155 transfer deltas.

What It Detects

position_status_change tracks state transitions for watched wallets:
  • none -> open when the wallet first receives shares for a token after the webhook is active
  • open -> closed when the wallet’s active-market balance returns to zero
  • open -> redeemable or none -> redeemable when the position is in a resolved market and the wallet holds shares
  • redeemable -> redeemed when the resolved-market balance returns to zero
Existing positions are seeded when a new watched wallet is first seen, so the webhook does not backfill historical opens that happened before registration. It emits future transitions from that point forward.
For this beta, wallet_addresses is required. Unfiltered/global position-status webhooks are intentionally not enabled.

Filters

FilterTypeDescription
wallet_addressesstring[]Required. Wallets to watch. Use lowercase 0x addresses. Max 500.
token_idsstring[]Optional outcome token IDs.
condition_idsstring[]Optional market condition IDs.
event_slugsstring[]Optional parent event slugs.
tagsstring[]Optional tag filters.
status_fromstringOptional previous status: none, open, closed, redeemable, or redeemed.
status_tostringOptional new status: open, closed, redeemable, or redeemed.
Use status_from: "none" and status_to: "open" to detect a wallet opening a new position after registration.

Payload

{
  "id": "evt_c3d4e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f",
  "type": "position_status_change",
  "created_at": "2026-05-26T12:00:00.000000000+00:00",
  "data": {
    "wallet": "0xdb27bf2ac5d428a9c63dbc910c5e6e75560c0ae5",
    "token_id": "83970135942868582996575481879514955574496723508450032076038091728966335782753",
    "condition_id": "0x3b7ad6a803daeb1994c840027b95d711d634e79a09ff3b02625600dc9d31a8bc",
    "from_status": "none",
    "to_status": "open",
    "previous_amount": 0,
    "new_amount": 150,
    "delta_amount": 150,
    "transfer_amount": 150,
    "source": "erc1155_transfer",
    "raw_event_type": "TransferSingle",
    "source_event_id": "0x4f606b3d4c58c723e4aeb3051e3ba92100f9b0d9116e5d60f7668c34087c8167_621",
    "transaction_hash": "0x4f606b3d4c58c723e4aeb3051e3ba92100f9b0d9116e5d60f7668c34087c8167",
    "block_number": 87481303,
    "timestamp": "2026-05-26T10:58:22.000000+00:00",
    "market": "Will Bitcoin hit $100k by 2026?",
    "slug": "will-bitcoin-hit-100k-by-2026",
    "event_slug": "bitcoin-100k-2026",
    "outcome": "Yes",
    "tags": "{Crypto,Bitcoin}"
  }
}

Fields

FieldTypeDescription
walletstringWatched wallet address.
token_idstringERC-1155 outcome token ID.
condition_idstringMarket condition ID.
from_statusstringPrevious tracked state. none means no prior tracked balance/state.
to_statusstringNew tracked state.
previous_amountnumberPrevious share balance, scaled to normal token units.
new_amountnumberNew share balance, scaled to normal token units.
delta_amountnumberSigned balance change for the watched wallet.
transfer_amountnumberAbsolute transfer amount from the ERC-1155 event.
sourcestringerc1155_transfer, split, merge, or redemption.
raw_event_typestringRaw ERC-1155 event type.
source_event_idstringSource CTF transfer-delta ID.
transaction_hashstringPolygon transaction hash.
block_numbernumberPolygon block number.
timestampstringSource ingestion timestamp.
marketstringMarket question, when enrichment is available.
slugstringMarket slug, when enrichment is available.
event_slugstringParent event slug.
outcomestringOutcome label.
tagsstringMarket tag array as text.

Example

curl -X POST https://api.polynode.dev/v3/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/hooks/position-opened",
    "event_types": ["position_status_change"],
    "filters": {
      "wallet_addresses": ["0xdb27bf2ac5d428a9c63dbc910c5e6e75560c0ae5"],
      "status_from": "none",
      "status_to": "open"
    },
    "description": "Notify when a watched wallet opens a new Polymarket position"
  }'

Use Cases

  • Copy-trading: detect when a leader opens a new position, including opens that come from ERC-1155 transfers
  • Portfolio automation: react when a watched wallet fully exits a position
  • Settlement workflows: detect redemption-style zero-balance transitions for resolved markets