Foresea · Schema
MarketQuote
A live prediction-market quote, normalised for use with `/predict`.
Prediction-MarketIntelligenceForecastingData AnalyticsBusiness
Properties
| Name | Type | Description |
|---|---|---|
| platform | string | Venue: 'Polymarket' or 'Kalshi'. |
| ident | object | Venue market identifier. |
| question | string | Market question/title. |
| market_url | string | Canonical market URL. |
| description | object | Venue-provided background context. |
| resolution_criteria | object | Complete venue rules used to resolve the market. |
| venue_news_articles | array | Articles supplied by the prediction-market venue. |
| outcome | string | Primary outcome (prefers 'Yes'). |
| probability | object | Market-implied probability for `outcome` (0..1). |
| outcomes | array | All outcomes with their probabilities. |
| close_time | object | |
| created_time | object | |
| volume | object | |
| liquidity | object | |
| price_change_24h | object | |
| price_change_7d | object | |
| yes_bid | object | |
| yes_ask | object | |
| last_trade_price | object | |
| resolution_source | object | |
| no_sub_title | object | |
| expected_expiration_time | object | |
| floor_strike | object | |
| cap_strike | object | |
| category | object | |
| fetched_at | object | ISO 8601 UTC time this quote was actually fetched from the venue (not when it was served from cache). |
| series_ticker | object | Kalshi series ticker -- the 'extra' id /market/batch needs for candlesticks. |
| token_id | object | Polymarket YES-outcome CLOB token id -- the 'extra' id /market/batch needs for order book/price history. |
| event_title | object | For an event link (one market per option): the event's title. |
| event_exclusive | object | For an event link: whether exactly one option can win. |
| event_options | array | For an event link: each open option's `label`, market `question` and `probability`; the quoted market has `quoted` set. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/foresea-ink/json-schema/foresea-ink-market-quote-schema.json",
"title": "MarketQuote",
"description": "A live prediction-market quote, normalised for use with `/predict`.",
"x-generated": "2026-11-08",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/foresea-ink-openapi.json#/components/schemas/MarketQuote",
"properties": {
"platform": {
"type": "string",
"title": "Platform",
"description": "Venue: 'Polymarket' or 'Kalshi'."
},
"ident": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ident",
"description": "Venue market identifier."
},
"question": {
"type": "string",
"title": "Question",
"description": "Market question/title.",
"default": ""
},
"market_url": {
"type": "string",
"title": "Market Url",
"description": "Canonical market URL.",
"default": ""
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "Venue-provided background context."
},
"resolution_criteria": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resolution Criteria",
"description": "Complete venue rules used to resolve the market."
},
"venue_news_articles": {
"items": {
"$ref": "#/$defs/NewsArticle"
},
"type": "array",
"title": "Venue News Articles",
"description": "Articles supplied by the prediction-market venue."
},
"outcome": {
"type": "string",
"title": "Outcome",
"description": "Primary outcome (prefers 'Yes').",
"default": ""
},
"probability": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Probability",
"description": "Market-implied probability for `outcome` (0..1)."
},
"outcomes": {
"items": {
"$ref": "#/$defs/MarketOption"
},
"type": "array",
"title": "Outcomes",
"description": "All outcomes with their probabilities."
},
"close_time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Close Time"
},
"created_time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Created Time"
},
"volume": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Volume"
},
"liquidity": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Liquidity"
},
"price_change_24h": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Price Change 24H"
},
"price_change_7d": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Price Change 7D"
},
"yes_bid": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Yes Bid"
},
"yes_ask": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Yes Ask"
},
"last_trade_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Last Trade Price"
},
"resolution_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resolution Source"
},
"no_sub_title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "No Sub Title"
},
"expected_expiration_time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Expected Expiration Time"
},
"floor_strike": {
"anyOf": [
{},
{
"type": "null"
}
],
"title": "Floor Strike"
},
"cap_strike": {
"anyOf": [
{},
{
"type": "null"
}
],
"title": "Cap Strike"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category"
},
"fetched_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fetched At",
"description": "ISO 8601 UTC time this quote was actually fetched from the venue (not when it was served from cache)."
},
"series_ticker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Series Ticker",
"description": "Kalshi series ticker -- the 'extra' id /market/batch needs for candlesticks."
},
"token_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Token Id",
"description": "Polymarket YES-outcome CLOB token id -- the 'extra' id /market/batch needs for order book/price history."
},
"event_title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Event Title",
"description": "For an event link (one market per option): the event's title."
},
"event_exclusive": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Event Exclusive",
"description": "For an event link: whether exactly one option can win."
},
"event_options": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array",
"title": "Event Options",
"description": "For an event link: each open option's `label`, market `question` and `probability`; the quoted market has `quoted` set."
}
},
"type": "object",
"required": [
"platform"
],
"$defs": {
"MarketOption": {
"properties": {
"label": {
"type": "string",
"title": "Label",
"description": "Outcome label, e.g. 'Yes' or 'No'."
},
"probability": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Probability",
"description": "Market-implied probability (0..1), or null when unpriced."
}
},
"type": "object",
"required": [
"label"
],
"title": "MarketOption",
"description": "One outcome of a fetched prediction market and its implied probability."
},
"NewsArticle": {
"properties": {
"title": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Title",
"description": "Article headline."
},
"summary": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
],
"title": "Summary",
"description": "Short human-written summary."
},
"summary_llm": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
],
"title": "Summary Llm",
"description": "LLM-generated summary."
},
"text": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "null"
}
],
"title": "Text",
"description": "Full article body text."
},
"source": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Source",
"description": "Publisher name (e.g. Reuters)."
},
"credibility": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Credibility",
"description": "Credibility score breakdown."
},
"frs": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"title": "Frs",
"description": "Future-Resolution Statement metadata."
},
"url": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
],
"title": "Url",
"description": "Canonical article URL."
},
"authors": {
"anyOf": [
{},
{
"type": "null"
}
],
"title": "Authors",
"description": "Author name(s)."
},
"publish_date": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Publish Date",
"description": "ISO 8601 publish timestamp."
},
"keywords": {
"anyOf": [
{},
{
"type": "null"
}
],
"title": "Keywords",
"description": "Extracted keywords."
},
"relevance_score": {
"anyOf": [
{
"type": "number",
"maximum": 1.0,
"minimum": 0.0
},
{
"type": "null"
}
],
"title": "Relevance Score",
"description": "Cosine similarity to the question (0–1)."
},
"search_query": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"title": "Search Query",
"description": "Query used to retrieve this article."
}
},
"type": "object",
"title": "NewsArticle",
"description": "A news article passed as evidence context for the prediction."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/foresea-ink-market-quote"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.