Polymarket Intelligence API

Resolution Watch measures, on-chain, Polymarket/UMA resolution risk: when a market is disputed, does the answer actually change? Dispute-rate and flip-rate rank categories in opposite orders. Fact/base-rate, auditor posture, machine-readable for AI agents.

TradingLiveeip155:8453Exactvia cdp
PolymarketPrediction-marketsResolution-riskUma-oracleBase
Calls · 30d
1→ 0%
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 17 snapshots so far.
$8.40
Verified settled volume
147 settlements proven x402 by their on-chain EIP-3009 marker.
$0.050
Listed price
As published in the catalog. Always read the live 402 before paying.
1
Calls · 30d
Upstream's own call count for this endpoint, not ours.
1
Unique payers · 30d
Last called 2026-09-07 10:17Z
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x7b13107779CfDA1bEba3289d0Fbe27310436f3E3

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "error": "Payment required",
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "iconUrl": "https://polym.uk/favicon.svg",
        "version": "2"
      },
      "payTo": "0x7b13107779CfDA1bEba3289d0Fbe27310436f3E3",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "maxTimeoutSeconds": 300
    }
  ],
  "resource": {
    "url": "https://api.polym.uk/market-intelligence/:conditionId",
    "tags": [
      "polymarket",
      "prediction-markets",
      "resolution-risk",
      "uma-oracle",
      "base"
    ],
    "iconUrl": "https://polym.uk/favicon.svg",
    "mimeType": "application/json",
    "description": "Resolution-integrity dossier for one Polymarket market: UMA exposure, proposer and disputer records, post-open context, comparables. Never a forecast. BEFORE YOU PAY: free substitute https://dash.polym.uk/calibration.json and https://dash.polym.uk/uma-flip-rate.json and gamma-api.polymarket.com. THIS ADDS: Proposer/disputer records from DisputePrice on chain, denominator named; context appended AFTER the market opened, window stated; comparables. No probability: observations are not independent.",
    "serviceName": "Polymarket Intelligence API"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "type": "http",
          "method": "GET",
          "pathParams": {
            "conditionId": ":conditionId"
          },
          "queryParams": {}
        },
        "output": {
          "type": "json",
          "example": {
            "asOf": "2026-09-05T23:59:36.239Z",
            "found": true,
            "source": "Composed once per pipeline run from: the decomposed market set, our labelled archive of resolved markets, the UMA oracle reputation ledger read from Polygon, and adapter BulletinBoard context updates. Nothing here is fetched at request time.",
            "caveats": [
              "SHOWCASE, NOT THE PAID RESPONSE: what you see is the resolution-integrity dossier for one market of the covered set, and the route answers for any covered conditionId you pass. missing is cut to 1 of the 2 rows this response carried. oracleExposure, ruleIntegrity and flowAuthenticity are the aggregate over the whole response, so they are null here and populated in a paid response. Nothing is masked or invented: every value is a dated measurement, kept so you can read the shape, the units and the field semantics. The schema published beside it is complete; a paid call returns the complete set.",
              "This is a resolution-integrity dossier, not a forecast. Every figure is an on-chain fact, a count with its denominator stated, or a set of comparable markets from our archive. No per-market probability is fitted, and none is sold.",
              "A dispute at UMA is not the same event as a reversal: the final answer often confirms the original proposal rather than overturning it. The share that actually reversed is published, free and current, in dash.polym.uk/uma-flip-rate.json — read it there rather than from a sentence here, because a figure written into fixed prose is a figure that stops being true.",
              "Coverage is partial and declared. We build dossiers for the decomposed market set; a market outside it returns 422 and is not charged.",
              "A market absent from this artifact is not a market with no risk: it is a market outside the decomposed set, and the API answers 422 for it without charging.",
              "Every rate carries the sample that produced it and the confidence gate that let it through. Where the gate refused, the counts stay and the rate is null — null means not measured, never zero.",
              "The theme and storyline labels are OUR reading of the market title. They are not the tags the venue published, and they are not read from the resolution rules."
            ],
            "coverage": {
              "level": "partial",
              "missing": [
                "priceContext"
              ]
            },
            "question": "Israel closes its airspace by September 30?",
            "comparables": {
              "theme": "geopolitical-conflict",
              "matched": [
                {
                  "story": "august ceasefire continues iran israel through",
                  "theme": "geopolitical-conflict",
                  "disputed": false,
                  "question": "Israel x Iran ceasefire continues through August 31?",
                  "volumeUsd": 3333311,
                  "outcomeYes": true,
                  "conditionId": "0xc1556ecbe613e403dfb9e38bf1b25a8aee2aa1687f2b343bc896dd2c9763ed74",
                  "scheduledEndTs": 1788475740
                }
              ],
              "summary": {
                "n": 132,
                "ci95": {
                  "hi": 0.3939639234802528,
                  "lo": 0.23796031769476275
                },
                "rate": 0.3106060606060606,
                "disputed": 41,
                "confidence": "measured"
              },
              "baseRate": {
                "n": 965,
                "ci95": {
                  "hi": 0.09860304145346961,
                  "lo": 0.06431481839069893
                },
                "rate": 0.07979274611398963,
                "disputed": 77,
                "confidence": "measured"
              },
              "scopeNote": "We could not verify whether this market falls inside the archive being compared against: its lifetime volume was not available to this run. The archive covers markets from 2,588,294 USD of lifetime volume upward.",
              "sampleScope": {
                "markets": 965,
                "binaryOnly": true,
                "volumeMinUsd": 2588294,
                "volumeMedianUsd": 5862236
              },
              "applicability": "unknown-scope",
              "storyConcentration": {
                "note": "These 132 markets are NOT 132 independent events: they collapse into 59 storylines, the largest accounting for 10.6% of them. The same question is asked repeatedly with a rolling deadline, so a rate computed as if each were independent carries a confidence interval narrower than the evidence supports. Read it as a description of this archive, not a probability for your market.",
                "distinctStories": 59,
                "largestStoryShare": 0.10606060606060606,
                "largestStoryMarkets": 14
              }
            },
            "conditionId": "0xcfbc2e5fbabb9e8a03bf234367244d4c97eaaf3ac33e2ba001541ee3e0e62416",
            "priceContext": {
              "note": "This is not a current price. bestAsk is the best ask at the instant the book was read; vwap is a historical volume-weighted average. Neither is a live quote, and no artifact we publish carries one.",
              "vwap": null,
              "bestAsk": null
            },
            "ruleIntegrity": null,
            "oracleExposure": null,
            "flowAuthenticity": null
          }
        }
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "required": [
              "type",
              "method"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "http"
              },
              "method": {
                "enum": [
                  "GET"
                ],
                "type": "string"
              },
              "pathParams": {
                "type": "object",
                "required": [
                  "conditionId"
                ],
                "properties": {
                  "conditionId": {
                    "type": "string",
                    "pattern": "^0x[0-9a-fA-F]{64}$",
                    "description": "A market is covered only while it is in the observed window, so any single example ages. Take a covered markets[].conditionId from the free snapshot at https://dash.polym.uk/markets.json, or call GET /coverage (free) for how many markets are decomposed right now. A conditionId outside the covered set returns 422 and is not billed."
                  }
                },
                "additionalProperties": false
              },
              "queryParams": {
                "type": "object",
                "properties": {},
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "output": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "example": {
                "type": "object",
                "oneOf": [
                  {
                    "type": "object",
                    "required": [
                      "asOf",
                      "found",
                      "source",
                      "conditionId",
                      "question",
                      "coverage",
                      "oracleExposure",
                      "ruleIntegrity",
                      "comparables",
                      "priceContext",
                      "caveats"
                    ],
                    "properties": {
                      "asOf": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "found": {
                        "const": true
                      },
                      "source": {
                        "type": "string"
                      },
                      "caveats": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "coverage": {
                        "type": "object",
                        "required": [
                          "level",
                          "missing"
                        ],
                        "properties": {
                          "level": {
                            "enum": [
                              "full",
                              "partial"
                            ],
                            "type": "string"
                          },
                          "missing": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      },
                      "question": {
                        "type": "string"
                      },
                      "comparables": {
                        "type": "object",
                        "required": [
                          "applicability",
                          "scopeNote",
                          "theme",
                          "matched",
                          "baseRate",
                          "storyConcentration",
                          "sampleScope"
                        ]
                      },
                      "conditionId": {
                        "type": "string",
                        "pattern": "^0x[0-9a-fA-F]{64}$"
                      },
                      "priceContext": {
                        "type": "object",
                        "required": [
                          "note"
                        ]
                      },
                      "ruleIntegrity": {
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "oracleExposure": {
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "flowAuthenticity": {
                        "type": [
                          "object",
                          "null"
                        ]
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "required": [
                      "asOf",
                      "conditionId",
                      "found",
                      "note",
                      "coverage",
                      "caveats"
                    ],
                    "properties": {
                      "asOf": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "note": {
                        "type": "string"
                      },
                      "found": {
                        "const": false
                      },
                      "caveats": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "coverage": {
                        "type": "object"
                      },
                      "conditionId": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                ]
              }
            }
          }
        }
      },
      "routeTemplate": "/market-intelligence/:conditionId"
    }
  },
  "x402Version": 2
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.05USDC≈ $0.05 USD
on Base · exact scheme

Pay 0.05 USDC on Base to 0x7b13…6f3E3. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
50000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "iconUrl": "https://polym.uk/favicon.svg",
      "version": "2"
    },
    "payTo": "0x7b13107779CfDA1bEba3289d0Fbe27310436f3E3",
    "amount": "50000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "type": "http",
        "method": "GET",
        "pathParams": {
          "conditionId": "0xa3b36b2d6104d34af4e6c6215fc818e43352e78a748fbfb0b85e3a35f71dec9a"
        },
        "queryParams": {}
      },
      "output": {
        "type": "json",
        "example": {
          "asOf": "2026-09-05T23:59:36.239Z",
          "found": true,
          "source": "Composed once per pipeline run from: the decomposed market set, our labelled archive of resolved markets, the UMA oracle reputation ledger read from Polygon, and adapter BulletinBoard context updates. Nothing here is fetched at request time.",
          "caveats": [
            "SHOWCASE, NOT THE PAID RESPONSE: what you see is the resolution-integrity dossier for one market of the covered set, and the route answers for any covered conditionId you pass. missing is cut to 1 of the 2 rows this response carried. oracleExposure, ruleIntegrity and flowAuthenticity are the aggregate over the whole response, so they are null here and populated in a paid response. Nothing is masked or invented: every value is a dated measurement, kept so you can read the shape, the units and the field semantics. The schema published beside it is complete; a paid call returns the complete set.",
            "This is a resolution-integrity dossier, not a forecast. Every figure is an on-chain fact, a count with its denominator stated, or a set of comparable markets from our archive. No per-market probability is fitted, and none is sold.",
            "A dispute at UMA is not the same event as a reversal: the final answer often confirms the original proposal rather than overturning it. The share that actually reversed is published, free and current, in dash.polym.uk/uma-flip-rate.json — read it there rather than from a sentence here, because a figure written into fixed prose is a figure that stops being true.",
            "Coverage is partial and declared. We build dossiers for the decomposed market set; a market outside it returns 422 and is not charged.",
            "A market absent from this artifact is not a market with no risk: it is a market outside the decomposed set, and the API answers 422 for it without charging.",
            "Every rate carries the sample that produced it and the confidence gate that let it through. Where the gate refused, the counts stay and the rate is null — null means not measured, never zero.",
            "The theme and storyline labels are OUR reading of the market title. They are not the tags the venue published, and they are not read from the resolution rules."
          ],
          "coverage": {
            "level": "partial",
            "missing": [
              "priceContext"
            ]
          },
          "question": "Israel closes its airspace by September 30?",
          "comparables": {
            "theme": "geopolitical-conflict",
            "matched": [
              {
                "story": "august ceasefire continues iran israel through",
                "theme": "geopolitical-conflict",
                "disputed": false,
                "question": "Israel x Iran ceasefire continues through August 31?",
                "volumeUsd": 3333311,
                "outcomeYes": true,
                "conditionId": "0xc1556ecbe613e403dfb9e38bf1b25a8aee2aa1687f2b343bc896dd2c9763ed74",
                "scheduledEndTs": 1788475740
              }
            ],
            "summary": {
              "n": 132,
              "ci95": {
                "hi": 0.3939639234802528,
                "lo": 0.23796031769476275
              },
              "rate": 0.3106060606060606,
              "disputed": 41,
              "confidence": "measured"
            },
            "baseRate": {
              "n": 965,
              "ci95": {
                "hi": 0.09860304145346961,
                "lo": 0.06431481839069893
              },
              "rate": 0.07979274611398963,
              "disputed": 77,
              "confidence": "measured"
            },
            "scopeNote": "We could not verify whether this market falls inside the archive being compared against: its lifetime volume was not available to this run. The archive covers markets from 2,588,294 USD of lifetime volume upward.",
            "sampleScope": {
              "markets": 965,
              "binaryOnly": true,
              "volumeMinUsd": 2588294,
              "volumeMedianUsd": 5862236
            },
            "applicability": "unknown-scope",
            "storyConcentration": {
              "note": "These 132 markets are NOT 132 independent events: they collapse into 59 storylines, the largest accounting for 10.6% of them. The same question is asked repeatedly with a rolling deadline, so a rate computed as if each were independent carries a confidence interval narrower than the evidence supports. Read it as a description of this archive, not a probability for your market.",
              "distinctStories": 59,
              "largestStoryShare": 0.10606060606060606,
              "largestStoryMarkets": 14
            }
          },
          "conditionId": "0xcfbc2e5fbabb9e8a03bf234367244d4c97eaaf3ac33e2ba001541ee3e0e62416",
          "priceContext": {
            "note": "This is not a current price. bestAsk is the best ask at the instant the book was read; vwap is a historical volume-weighted average. Neither is a live quote, and no artifact we publish carries one.",
            "vwap": null,
            "bestAsk": null
          },
          "ruleIntegrity": null,
          "oracleExposure": null,
          "flowAuthenticity": null
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "GET"
              ],
              "type": "string"
            },
            "pathParams": {
              "type": "object",
              "required": [
                "conditionId"
              ],
              "properties": {
                "conditionId": {
                  "type": "string",
                  "pattern": "^0x[0-9a-fA-F]{64}$",
                  "description": "A market is covered only while it is in the observed window, so any single example ages. Take a covered markets[].conditionId from the free snapshot at https://dash.polym.uk/markets.json, or call GET /coverage (free) for how many markets are decomposed right now. A conditionId outside the covered set returns 422 and is not billed."
                }
              },
              "additionalProperties": false
            },
            "queryParams": {
              "type": "object",
              "properties": {},
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "oneOf": [
                {
                  "type": "object",
                  "required": [
                    "asOf",
                    "found",
                    "source",
                    "conditionId",
                    "question",
                    "coverage",
                    "oracleExposure",
                    "ruleIntegrity",
                    "comparables",
                    "priceContext",
                    "caveats"
                  ],
                  "properties": {
                    "asOf": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "found": {
                      "const": true
                    },
                    "source": {
                      "type": "string"
                    },
                    "caveats": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "coverage": {
                      "type": "object",
                      "required": [
                        "level",
                        "missing"
                      ],
                      "properties": {
                        "level": {
                          "enum": [
                            "full",
                            "partial"
                          ],
                          "type": "string"
                        },
                        "missing": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "question": {
                      "type": "string"
                    },
                    "comparables": {
                      "type": "object",
                      "required": [
                        "applicability",
                        "scopeNote",
                        "theme",
                        "matched",
                        "baseRate",
                        "storyConcentration",
                        "sampleScope"
                      ]
                    },
                    "conditionId": {
                      "type": "string",
                      "pattern": "^0x[0-9a-fA-F]{64}$"
                    },
                    "priceContext": {
                      "type": "object",
                      "required": [
                        "note"
                      ]
                    },
                    "ruleIntegrity": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "oracleExposure": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "flowAuthenticity": {
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "required": [
                    "asOf",
                    "conditionId",
                    "found",
                    "note",
                    "coverage",
                    "caveats"
                  ],
                  "properties": {
                    "asOf": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "note": {
                      "type": "string"
                    },
                    "found": {
                      "const": false
                    },
                    "caveats": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "coverage": {
                      "type": "object"
                    },
                    "conditionId": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                }
              ]
            }
          }
        }
      }
    },
    "routeTemplate": "/market-intelligence/:conditionId"
  }
}

Provenance

Seen in the source catalog
2026-09-07 10:17Z
Last indexed by Roundhouse
2026-09-25 04:10Z
Last enriched (probe, favicon, geo)
2026-09-21 04:15Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 17 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service Polymarket Intelligence API and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=Polymarket%20Intelligence%20API'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://api.polym.uk/market-intelligence/:conditionId, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.