Developers / API

The Kresmion API

Market intelligence for bots and apps. One HTTP API over Polymarket prediction markets, on-chain crypto flows, equities, and macro, with a cited source behind every record. Authenticate with a Bearer key, read the live OpenAPI spec, subscribe to webhooks, or connect an AI agent over MCP. It is information-only and does not provide investment advice.

Get an API keyRead the referenceBrowse every field
QuickstartProductsReferenceLimits and tiersAttributionWebhooksMCPPython SDKExcel
Base URL: https://kresmion.com/api/v1Auth: Authorization: Bearer krm_...Spec: openapi.json

Quickstart

Mint a key at /settings/api-keys, then fetch five prediction markets. Send the key as a Bearer token on every request.

curl -s "https://kresmion.com/api/v1/prediction/markets?limit=5" \
  -H "Authorization: Bearer krm_your_key_here"

Products

6 product areas, each with representative endpoints. The full, authoritative list is in the live reference below. Every response is the same envelope: data, count for lists, as_of for freshness, and meta for filters, sources, caveats, and attribution.

Prediction Markets

Polymarket markets: probability history, order books and their history, execution cost, smart-money and algorithmic flow flags, movers, the resolution calendar, calibration, and resolutions.

  • GET /v1/prediction/markets
  • GET /v1/prediction/markets/{market_id}/history
  • GET /v1/prediction/markets/{market_id}/book
  • GET /v1/prediction/movers
  • GET /v1/prediction/calibration

Crypto

Labeled whale transfers, exchange wallet holdings, perpetual derivatives, funding and liquidations, token unlocks, and spot ETF AUM and fund counts. BTC and ETH ETF flows per trading session come back withheld (total_kind 'withheld', withheld_reason 'source_not_licensed'): the only per-fund session flows held for them carry no redistribution licence.

  • GET /v1/crypto/whales
  • GET /v1/crypto/exchanges/holdings
  • GET /v1/crypto/etf/flows
  • GET /v1/crypto/derivatives/{symbol}
  • GET /v1/crypto/funding
  • GET /v1/crypto/liquidations

Equities

Signal events, SEC Form 4 insider clusters, congressional trade disclosures, 13F institutional positioning, FINRA short interest, and FINRA daily short volume.

  • GET /v1/equities/signals
  • GET /v1/equities/insider-clusters
  • GET /v1/equities/congress
  • GET /v1/equities/institutional
  • GET /v1/equities/short-interest
  • GET /v1/equities/short-volume

Macro and Rates

The cross-asset regime score, central bank policy rates and their moves, US money markets and the Fed corridor, sovereign 10Y spreads (a Kresmion calculation, not a credit rating), official economic statistics by country from the World Bank and the OECD, the Fed path ladder (FOMC decision-outcome prices on Polymarket), the Treasury curve through history, curated FRED series, the economic surprise index, Fed liquidity, CFTC Commitments of Traders, Treasury TIC flows, and BIS policy rates.

  • GET /v1/macro/regime
  • GET /v1/macro/central-banks
  • GET /v1/macro/money-markets
  • GET /v1/macro/sovereign-spreads
  • GET /v1/macro/economics
  • GET /v1/macro/fed/path
  • GET /v1/macro/yield-curve/history
  • GET /v1/macro/fred/{series_id}/history
  • GET /v1/macro/surprise
  • GET /v1/macro/cot
  • GET /v1/macro/tic
  • GET /v1/macro/bis

Companies

Peer relative value from SEC fundamentals, a multi-filter screen, and IPOs and equity offerings from EDGAR with their prospectus terms.

  • GET /v1/rv/{ticker}
  • GET /v1/rv/{ticker}/matrix
  • POST /v1/screen
  • GET /v1/intel/offerings
  • GET /v1/intel/offerings/ipo-pipeline

Signals and Intelligence

One feed of scored events across equities, crypto, macro, and prediction markets; the published signal track record (forward returns after every logged signal, losses included); cross-family confluence composites with legs listed; per-ticker smart-money scores; a per-symbol brief; and a delta feed for polling agents.

  • GET /v1/signals
  • GET /v1/track-record
  • GET /v1/confluence
  • GET /v1/equities/smart-money
  • GET /v1/brief/{asset_class}/{symbol}
  • GET /v1/changes
  • GET /v1/status

API reference

Rendered live from the OpenAPI spec: every endpoint grouped by tag, with parameters and responses. Expand a row for details.

Loading the live API reference...

Rate limits and tiers

Kresmion is in a free beta and billing is not switched on. Every registered account can self-serve an API key, and the API, the MCP server, the SDK and the Excel add-in all run on that key at no charge. Requests over the per-minute limit get a 429 with a Retry-After header telling you how long to wait; the monthly quota resets each calendar month.

TierMonthly callsRate limitOver limitAccess
Free beta (registered)10,000120 req / min429 + Retry-AfterSelf-serve key, today
Developer (planned)50,000600 req / min429 + Retry-AfterWhen billing opens
BusinessBy agreementBy agreement429 + Retry-AfterContact us

When paid plans open, programmatic access (the API and the MCP server) belongs to the Developer plan on the pricing page, planned at EUR 80 a month excluding VAT, with five times the free limits shown in this table. Nothing is charged during the beta. Need more today? Email inquiry@kresmion.com.

Securing a key

A key is for reading data. A request made with a key using a write method (POST, PUT, DELETE) is refused with a 403, except the two POST routes that carry a query body and write nothing (the screen and the sheet evaluator); account data such as portfolios and messages needs a signed-in session. You can lock a key to specific source addresses from /settings/api-keys. An allowlisted key is rejected with a 401 when it is presented from any other address. The allowlist takes exact IPv4 and IPv6 addresses; leave it empty to accept any address. Keys are shown in full only once at creation, can be revoked at any time, and you can hold up to five active keys per account.

Attribution and caveats

Some data owners require a credit line wherever their data is shown. When they do, the response carries it in meta.attribution, and you must keep that text with the figures when you display, store, or pass them on. Two families carry it today:

meta.caveats lists the known limits of a dataset (a lag, a single venue, a withheld value) and meta.source names the upstream. MCP tools return the envelope unchanged, and the Python SDK exposes it as .meta on every result. Read the methodology for how each figure is built.

Webhooks

Subscribe to push events instead of polling. Manage up to five webhooks per account at /settings/webhooks, optionally filtered to event types and symbols. Each delivery is signed with HMAC-SHA256 over the raw body, sent as X-Kresmion-Signature: sha256=<hex>, so you can verify it came from Kresmion.

EventFires when
signal.createdA new cross-asset signal fired at the top severity tier.
whale.transferA single on-chain transfer of $1,000,000 or more (self-transfer artifacts excluded).
prediction.repricingA Polymarket market moved 10 percentage points or more in 24 hours.
prediction.resolution_imminentA liquid Polymarket market is scheduled to close within 48 hours.
prediction.algo_flowA high-confidence algorithmic-flow flag on a Polymarket market.
etf.flowA new daily crypto ETF print. BTC and ETH session flow values are withheld; AUM and fund count are sent.
regime.changeThe daily macro regime crossed into a new bucket.
confluence.firedSeveral independent data families aligned on one symbol.
Example payload
{
  "event": "whale.transfer",
  "fired_at": "2026-07-16T14:05:00+00:00",
  "data": {
    "blockchain": "ETH",
    "from_label": null,
    "to_label": "Binance",
    "direction": "exchange_inflow",
    "amount_usd": 4200000.0,
    "tx_hash": "0xabc...",
    "tx_timestamp": "2026-07-16T14:04:12+00:00"
  }
}
Verify the signature (Python)
import hashlib
import hmac

def verify(secret: str, raw_body: bytes, signature: str) -> bool:
    expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)

# In your handler, read the raw request body and the signature header:
#   sig = request.headers["X-Kresmion-Signature"]   # "sha256=<hex>"
#   if not verify(WEBHOOK_SECRET, raw_body, sig):
#       return 401  # reject a forged payload

MCP for AI agents

AI agents connect to Kresmion over the Model Context Protocol. The hosted server exposes 43 tools: 43 read data, and none writes, pays or changes state. Every tool response carries the same envelope and freshness stamp as the HTTP API, and the same key, quota, and rate limits apply. Start with kresmion_status to see how fresh each family is.

Start here
kresmion_status, kresmion_brief, changes_since, field_search
Prediction markets (Polymarket)
prediction_markets, prediction_market_detail, prediction_market_history, prediction_order_book, prediction_movers, prediction_calibration, prediction_execution_cost, prediction_calendar
Crypto
crypto_whale_transfers, crypto_etf_flows, crypto_derivatives, crypto_funding, crypto_liquidations
Equities and companies
equity_signals, insider_clusters, congress_trades, institutional_holdings, equity_short_interest, short_volume, equity_gamma, smart_money, equity_offerings, relative_value
Macro and rates
macro_regime, central_banks, bis_policy_rates, money_markets, sovereign_spreads, economic_statistics, fed_path, yield_curve_history, fred_history, economic_surprise, macro_liquidity, cot_positioning, treasury_tic
Supply chain
semiconductor_corridors
Signal record
signal_track_record, confluence
Connect from claude.ai or ChatGPT (Sign in with Kresmion)

Web clients that connect by OAuth need no pasted key. Add a custom connector with the URL https://kresmion.com/api/mcp and leave the OAuth fields empty. The client discovers the Kresmion authorization server, opens the Kresmion consent page, and after you approve it while signed in, it receives a managed key with the kresmion:read scope, limited to the data API. That key appears in /settings/api-keys as an OAuth key and shares your account's quota; revoke it there to disconnect. ChatGPT connects the same way where your plan offers custom connectors.

Bearer header (Claude Desktop, Claude Code, other clients)

Hosted endpoint over streamable HTTP, with your key in the header:

{
  "mcpServers": {
    "kresmion": {
      "type": "http",
      "url": "https://kresmion.com/api/mcp",
      "headers": { "Authorization": "Bearer krm_your_key_here" }
    }
  }
}

One line in Claude Code:

claude mcp add --transport http kresmion https://kresmion.com/api/mcp \
  --header "Authorization: Bearer krm_your_key_here"
Local stdio server

Prefer to run it yourself? The standalone stdio server carries the same 43 tools, generated from the hosted server, and calls the same HTTP API with your key from the environment. Download /sdk/kresmion_mcp.py:

# download the standalone server, then register it over stdio
curl -sO https://kresmion.com/sdk/kresmion_mcp.py

{
  "mcpServers": {
    "kresmion": {
      "command": "uv",
      "args": ["run", "--with", "mcp", "--with", "httpx", "/absolute/path/to/kresmion_mcp.py"],
      "env": { "KRESMION_API_KEY": "krm_your_key_here" }
    }
  }
}

# without uv: pip install "mcp>=1.28" "httpx>=0.27", then run python kresmion_mcp.py

Python SDK

The kresmion package wraps the /v1 API in namespaced methods (k.prediction, k.crypto, k.equities, k.macro and more) and honours Retry-After. SDK version 0.6.1 is the single-file build served here; it needs Python 3.9 or newer and requests. The PyPI package of the same name lags behind this build, so download the file:

curl -O https://kresmion.com/sdk/kresmion.py
pip install "requests>=2.28"

Every result carries .as_of and .meta, which holds the caveats, source, and any attribution line you must reproduce:

from kresmion import Kresmion

k = Kresmion()  # reads KRESMION_API_KEY
spreads = k.macro.sovereign_spreads(country="IT")
print(spreads.as_of, spreads.meta.get("attribution"))

Version 0.4.0 removed six methods together with their routes, because the data behind them carries no redistribution licence: prediction.consensus, prediction.divergence, prediction.options_divergence, prediction.options_divergence_history, crypto.options, and crypto.stablecoins. Later versions only add methods and parameters.

Excel add-in

The Excel add-in ships 25 worksheet functions, from =KRESMION.REGIME() and =KRESMION.CBRATE("US") to =KRESMION.YIELD("10Y"), backed by the same live data API as the on-site sheet. It works in Excel for Windows and Mac and in Excel for the web. To install it, open Insert, then Get Add-ins, then Upload My Add-in, and select the manifest at kresmion.com/excel-addin/manifest.xml. Open the Kresmion taskpane, paste your API key, and click Connect; the taskpane lists every function with an example.

The API is free during beta. There is no uptime SLA yet, and figures can lag their upstream sources or be revised. Read the methodology and data caveats before you build on a number. Information-only, not investment advice.