CLAUDEWARDOCS
DEVELOPERS

PREDICTION MARKETS API

SIGNALS · EVIDENCE · FORECAST EDGE

Maintained by ClaudeWar LLC · Last reviewed 2026-07-22

PRIVATE BETA

OVERVIEW

The ClaudeWar Prediction Markets API is a read-only feed for approved prediction-market terminals and research platforms. It returns ClaudeWar Signals that are active, unresolved, causally validated, and admitted through publication gates that require measurable forecast edge.

Status: Private beta. Approval required. Keys are provisioned manually after review.

The API provides finished Signals, not the ClaudeWar curation engine. Research Watchlist entries, rejected candidates, raw wallet access, order routing, and custody are outside this product.

HTTP

BASE URL AND ENDPOINT

Base URL: https://markets.claudewar.info

Method and path: GET /api/v1/signals

Use this endpoint from your backend. The service does not publish browser CORS permission for credentialed cross-origin calls.

SECURITY

AUTHENTICATION

Send the issued key in either supported header:

Authorization: Bearer YOUR_API_KEY

or

x-api-key: YOUR_API_KEY
If both headers contain values, x-api-key takes precedence. Query-string keys are not supported.
  • Store the key in a server-side secret manager or protected environment variable.
  • Never expose it in browser JavaScript, mobile bundles, public repositories, screenshots, URLs, or client-visible environment variables.
  • Contact ClaudeWar immediately if a key is exposed so it can be revoked or rotated.
FILTER

QUERY PARAMETER

ParameterRequiredAccepted valuesBehavior
sourceNoall, polymarket, kalshiDefaults to all. Values are lowercase and case-sensitive.
GET /api/v1/signals
GET /api/v1/signals?source=all
GET /api/v1/signals?source=polymarket
GET /api/v1/signals?source=kalshi

There is no pagination, cursor, offset, or published global sort. With source=all, the response contains the Polymarket list followed by the Kalshi list. Each source is deduplicated by normalized question and ranked by volume with recency as the tie-breaker.

INTEGRATION MODEL

REPLACE THE ACTIVE SNAPSHOT

Poll the feed and replace your local active-signal snapshot after each successful response. Do not permanently merge old rows into the current feed.

A market absent from a later successful response may have resolved, expired, become inactive, failed a publication or causal gate, been classified as irrelevant, or become unavailable for live quoting.

A returned row may carry live_price_stale=true. Staleness is explicit response metadata and does not by itself guarantee that the row is removed.

Keep the last known good snapshot when a request fails. Replace it only after a successful 200 response.
REQUEST

CURL AND RESPONSE EXAMPLE

curl "https://markets.claudewar.info/api/v1/signals?source=all" \
  -H "Authorization: Bearer $CWM_PREDICTION_API_KEY"

The sanitized response below is representative. Optional fields can be omitted, and nullable fields may contain null.

{
  "data": [
    {
      "question": "Will the specified event occur by the market deadline?",
      "slug": "sanitized-market",
      "source": "polymarket",
      "kalshi_ticker": null,
      "polymarket_url": "https://polymarket.com/event/sanitized-market",
      "yes_price": 0.54,
      "no_price": 0.46,
      "volume_24h": 125000,
      "end_date": "2026-09-01T00:00:00.000Z",
      "claudewar_signal_reason": "Current evidence supports the directional call.",
      "cw_call": "YES",
      "cw_confidence": "MEDIUM",
      "cw_reasoning": "Sanitized causal rationale.",
      "forecast_probability": 0.61,
      "market_probability": 0.54,
      "forecast_edge": 0.07,
      "causal_validation_status": "PASSED",
      "causal_validation_reason": "passed",
      "eligibility_status": "SIGNAL",
      "active": true,
      "live_yes_price": 0.54,
      "live_no_price": 0.46,
      "live_price_updated_at": "2026-08-04T21:20:00.000Z",
      "live_price_age_ms": 45000,
      "live_price_stale": false,
      "live_price_source": "gamma",
      "evidence_refs": [
        {
          "evidence_id": "ev_sanitized",
          "excerpt": "Sanitized evidence excerpt.",
          "source_system": "claudewar",
          "event_type": "current_event",
          "event_time": "2026-08-04T20:45:00.000Z",
          "region": "sanitized",
          "role": "direct",
          "reliability": "high",
          "limited_coverage": false
        }
      ],
      "forecast_version_id": "sfv_sanitized",
      "revision_history": []
    }
  ],
  "meta": {
    "product": "signals_only",
    "source": "all",
    "count": 1,
    "generated_at": "2026-08-04T21:20:45.000Z"
  }
}
CONTRACT

RESPONSE FIELDS

Envelope

FieldTypeMeaning
dataSignal[]Current validated Signals. The array may be empty.
meta.productsignals_onlyLiteral product scope.
meta.sourcestringNormalized accepted source filter.
meta.countnumberNumber of rows in data.
meta.generated_atISO-8601 stringUTC response-generation time.

Signal identity and market state

FieldTypeMeaning
questionstringDisplay title with markdown removed.
slugstringRegistry or venue identifier.
sourcepolymarket or kalshiNormalized venue.
kalshi_tickerstring or nullNative Kalshi ticker. Null for Polymarket.
polymarket_urlstringMarket URL. For Kalshi rows this field contains the generated Kalshi market URL despite its legacy name.
category, intel_category, image_urlstring, optionalVenue category, ClaudeWar classification, and image URL when available.
yes_price, no_pricenumberStored YES and NO probabilities from 0 to 1.
volume_24hnumberVenue ranking metric. Do not treat it as a uniform USD measure across venues.
end_datestringMarket deadline or expiry, normally ISO-8601.
market_typestringTypically binary; producers may also use multiple_choice or scalar.
outcome_optionsarray or nullOption labels and 0-to-1 prices for multi-option markets.
resolved_option, resolved_outcomestring or nullNull in this unresolved-only feed.

ClaudeWar forecast and validation

FieldTypeMeaning
claudewar_signal_reasonstringShort public signal rationale.
cw_callstring or nullDirectional call, normally YES or NO. Consumers should tolerate additional stored values.
cw_confidencestring or nullExpected HIGH, MEDIUM, or LOW label.
cw_reasoningstring or nullDetailed causal rationale with markdown removed.
forecast_probabilitynumber or nullClaudeWar calibrated probability from 0 to 1.
market_probabilitynumberIssue-time venue probability from 0 to 1.
forecast_edgenumber or nullforecast_probability - market_probability. A value of 0.07 is 7 percentage points.
eligibility_statusstringSIGNAL for selected rows.
eligibility_reasonstring or nullLifecycle or publication reason.
causal_validation_statusstringPASSED for selected rows.
causal_validation_reasonstring or nullValidator result context.
activebooleantrue for selected rows.
ai_curatedbooleanWhether the registry row was AI-curated.

Quote, revision, and lineage fields

FieldTypeMeaning
entry_yes_price, entry_no_pricenumber or nullIssue-time YES and NO prices.
issue_yes_price, issue_no_pricenumber or nullAliases of registry entry prices.
live_yes_price, live_no_pricenumber or nullCurrent prices when a live quote timestamp exists.
live_price_updated_atISO-8601 string or nullLast successful quote refresh.
live_price_age_msnumber or nullQuote age in milliseconds at response time.
live_price_stalebooleanTrue when no timestamp exists or quote age exceeds five minutes.
live_price_sourcestring or nullTypically gamma, kalshi, or settlement.
yes_mint, no_mintstring or nullOptional market identifiers; currently null for registry rows.
revised_atISO-8601 string or nullMost recent signal-call revision time.
revision_historyarrayRevision entries with at, old_call, new_call, and reason.
evidence_refsarrayUp to five validated evidence references.
curation_snapshot_id, curation_run_idstring or nullSnapshot and run lineage identifiers.
curation_provider, curation_modelstring or nullCuration provenance when available.
curation_prompt_hash, curation_prompt_versionstring or nullPrompt lineage identifiers, not prompt contents.
last_curated_atISO-8601 string or nullLatest curation timestamp.
forecast_version_idstring or nullCurrent forecast revision identifier.

Evidence reference

Each evidence object may include evidence_id, excerpt, source_system, event_type, event_time, region, role, reliability, and limited_coverage. Consumers should tolerate optional fields and additional future fields.

The endpoint does not return generic signal created_at or updated_at fields, forecast issuance time, resolution time, or settlement time.

FAILURES

ERROR RESPONSES

StatusBodyClient action
400{"error":"invalid_source"}Use an accepted lowercase source value.
401{"error":"api_key_required"}Send an issued key in a supported header.
401{"error":"invalid_api_key"}Check whether the key is invalid, expired, rotated, or revoked.
429{"error":"rate_limit_exceeded"}Wait for the integer seconds in Retry-After.
503{"error":"partner_signals_api_not_configured"}The key service has no usable keys. Contact ClaudeWar support.
503{"error":"partner_signals_auth_unavailable"}Retry with bounded exponential backoff.
Other 5xxNot a stable contractKeep the last good snapshot and retry with bounded exponential backoff.
OPERATIONS

RATE LIMIT AND AVAILABILITY

  • 30 requests per fixed 60-second window per computed client IP
  • Authentication failures do not consume this limiter; invalid source requests do
  • A 429 response includes Retry-After; successful responses do not publish remaining or reset headers
  • No published SLA, sandbox, webhook delivery, or pagination

Use a conservative polling interval, cache the successful snapshot in your backend, and apply bounded retry behavior.

SCOPE

READ-ONLY BY DESIGN

  • No order routing or automatic trading
  • No custody, funds, or wallet permissions
  • No Research Watchlist or rejected candidates
  • No self-service key provisioning
  • No guarantee of market-beating returns or personalized investment advice

Consumers remain responsible for their own product disclosures, venue terms, jurisdictional requirements, and decisions about how Signals are presented.