REST API · v1No key needed to start

Market data built for products and agents.

Explore normalized market data, research, and user workflows through one predictable API. Public data works keyless; add a key for higher snapshot limits and private resources.

Base URLhttps://mkts.io/api/v1
01

Try it keyless

Public market and research endpoints work immediately.

02

Add a key when needed

Keys unlock private workflows and higher snapshot limits.

03

Keep your current key

Existing mk_live_… keys need no migration.

Your first request
curl https://mkts.io/api/v1/market

Authentication

Use a key only when it adds value.

API keys are optional for public market data. A valid key applies authenticated-tier limits and identifies the owner of private portfolio, watchlist, journal, and AI resources.

ModeBehavior
No keyMarket data and research at keyless limits.
Optional keySame endpoints, authenticated tier limits.
Required keyPortfolio, watchlists, journal, and POST /ask.
X-API-Key header
curl -H "X-API-Key: $MKTS_API_KEY" \
  https://mkts.io/api/v1/brief
Bearer header
curl -H "Authorization: Bearer $MKTS_API_KEY" \
  https://mkts.io/api/v1/brief

Already using the OpenClaw skill? Your stored key and both authentication formats continue to work.

Manage keys →

API reference

Explore every endpoint.

Expand an operation for parameters, request body, and a copyable cURL example.

Download OpenAPI →

System & access

3
GET
/pingCheck API status

Lightweight health check with server time and service status.

No key
cURL request
curl \
  "https://mkts.io/api/v1/ping"
GET
/openapi.jsonDownload the OpenAPI schema

Machine-readable OpenAPI description of the v1 REST surface.

No key
cURL request
curl \
  "https://mkts.io/api/v1/openapi.json"
POST
/registerCreate a free agent API key

Creates a free API key for an agent or application. The key is returned once.

No key

JSON body

{
  "email": "you@example.com",
  "name": "my-agent"
}
cURL request
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{  "email": "you@example.com",  "name": "my-agent"}' \
  "https://mkts.io/api/v1/register"

Market data

9
GET
/marketMarket overview

Global market overview and broad market context.

Key optional
cURL request
curl \
  "https://mkts.io/api/v1/market"
GET
/assetsBrowse the asset universe

Filter and search the normalized multi-asset universe.

Key optional

Parameters

typesectorplatformmarketTypesearch
cURL request
curl \
  "https://mkts.io/api/v1/assets?type=stock&sector=Technology"
GET
/asset/{symbol}Get an asset snapshot

Normalized price, change, market cap, volume, identity, and classification for one symbol.

Key optional

Parameters

symbol (path)
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL"
GET
/asset/{symbol}/liveGet a live quote

Fresh quote with market state and extended-hours fields.

Live dataKey optional

Parameters

symbol (path)type
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/live"
GET
/asset/{symbol}/historyGet price history

Historical OHLCV series for charts and analysis.

Key optional

Parameters

symbol (path)range
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/history?range=3M"
GET
/moversGet market movers

Top gainers and losers, optionally filtered by direction and asset type.

Key optional

Parameters

directiontypelimit
cURL request
curl \
  "https://mkts.io/api/v1/movers?direction=gainers&limit=10"
GET
/trendingGet market highlights

Most active stocks, top gainers, and top losers.

Key optional

Parameters

sectioncount
cURL request
curl \
  "https://mkts.io/api/v1/trending?section=trending&count=10"
GET
/sectorsGet sector performance

Sector-level market performance and composition.

Key optional
cURL request
curl \
  "https://mkts.io/api/v1/sectors"
GET
/macroGet a macro snapshot

BTC, ETH, SPY, QQQ, gold, oil, VIX, DXY, and the 10-year yield in one call.

Key optional
cURL request
curl \
  "https://mkts.io/api/v1/macro"

Point-in-time archive

5
GET
/asset/{symbol}/as-ofWhat we recorded on a date

The archived observation for a symbol on a given date, or the most recent one before it if the market was shut. Revisions recorded after that date are excluded, so a backtest cannot see hindsight.

Key optional

Parameters

symbol (path)date
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/as-of?date=2026-07-15"
GET
/archive/as-ofMany symbols, one past date

The same point-in-time lookup for up to 100 symbols at once. unresolvedSymbols and symbolsWithoutObservation are returned separately, so a short answer is never silently short.

Key optional

Parameters

symbolsdate
cURL request
curl \
  "https://mkts.io/api/v1/archive/as-of?symbols=AAPL,MSFT,BTC&date=2026-07-15"
GET
/asset/{symbol}/seriesArchived closes over a range

Daily closes for one symbol across a date range, in a single call. Asking /as-of for 90 separate dates costs 90 requests; this costs one. Each row carries observedAt and isRevision, so a later restatement stays visible.

Key optional

Parameters

symbol (path)fromto
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/series?from=2026-07-01&to=2026-07-31"
GET
/archive/seriesPortfolio backtest in one call

Daily closes for many symbols across a date range — the N-symbols-by-M-days shape a portfolio backtest needs. Limits are 100 symbols, 366 days, and symbols x days up to 10,000.

Key optional

Parameters

symbolsfromto
cURL request
curl \
  "https://mkts.io/api/v1/archive/series?symbols=AAPL,MSFT,BTC&from=2026-07-01&to=2026-07-31"
GET
/asset/{symbol}/intradayObservations within a day

Every observation made inside a window, not just the close — roughly one per 15 minutes for recent months. Check observedIntervalMinutes, largestGapMinutes and coveragePercent before treating it as fixed bars: cadence is not uniform across the archive.

Key optional

Parameters

symbol (path)fromtointerval
cURL request
curl \
  "https://mkts.io/api/v1/asset/BTC/intraday?from=2026-08-08&to=2026-08-09&interval=1h"

Research & discovery

11
GET
/screenScreen market snapshots

Filter assets by price, change, volume, market cap, type, and sector.

Key optional

Parameters

typesectorminPricemaxPriceminChangemaxChangeminVolumemaxVolumeminMarketCapmaxMarketCap
cURL request
curl \
  "https://mkts.io/api/v1/screen?type=stock&minMarketCap=10000000000"
GET
/compareCompare assets

Compare normalized market data for multiple symbols.

Key optional

Parameters

symbols
cURL request
curl \
  "https://mkts.io/api/v1/compare?symbols=AAPL,MSFT,NVDA"
GET
/briefGet a market brief

Compact market brief suitable for dashboards, agents, and morning updates.

Key optional
cURL request
curl \
  "https://mkts.io/api/v1/brief"
GET
/earningsGet the earnings calendar

Upcoming and recent earnings with estimates, actuals, and surprise history.

Key optional

Parameters

symbolsweek
cURL request
curl \
  "https://mkts.io/api/v1/earnings?symbols=AAPL,MSFT"
GET
/newsGet financial news

Aggregated financial news filtered by category or asset symbol.

Key optional

Parameters

categorysymbollimit
cURL request
curl \
  "https://mkts.io/api/v1/news?symbol=AAPL&limit=10"
GET
/asset/{symbol}/detailsGet deep asset details

Company profile, analyst data, holders, insider activity, SEC filings, and ETF holdings.

Live dataKey optional

Parameters

symbol (path)
cURL request
curl \
  "https://mkts.io/api/v1/asset/MSFT/details"
GET
/asset/{symbol}/filingsGet company filings

Recent SEC filings for one stock or ETF.

Live dataKey optional

Parameters

symbol (path)typelimit
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/filings?type=10-K&limit=10"
GET
/filings/searchSearch filings

Search filings across a bounded stock or ETF universe.

Live dataKey optional

Parameters

typesymbolssectorsearchfilingTypetitledateFromdateTolimituniverse
cURL request
curl \
  "https://mkts.io/api/v1/filings/search?filingType=10-K&limit=10"
GET
/asset/{symbol}/fundamentalsGet financial statements

Historical income statement, balance sheet, and cash-flow time series.

Live dataKey optional

Parameters

symbol (path)typemodule
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/fundamentals?type=annual&module=all"
GET
/asset/{symbol}/optionsGet an options chain

Options chain with expirations, implied volatility, volume, and open interest.

Live dataKey optional

Parameters

symbol (path)expiration
cURL request
curl \
  "https://mkts.io/api/v1/asset/AAPL/options"
GET
/fundamentals/screenScreen fundamentals

Screen valuation, growth, margins, leverage, cash flow, and analyst targets.

Live dataKey optional

Parameters

typesectorsearchsymbolssortdirlimituniversemin/max metric filters
cURL request
curl \
  "https://mkts.io/api/v1/fundamentals/screen?sector=Technology&minGrossMargin=0.5&limit=10"

Portfolio & workflows

15
GET
/portfolioGet portfolio holdings

Holdings with allocation, cost basis, P&L, and daily change.

Key required
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/portfolio"
POST
/portfolioAdd a holding

Add a position to the API-key owner’s portfolio.

Key required

JSON body

{
  "symbol": "AAPL",
  "name": "Apple Inc.",
  "assetType": "stock",
  "quantity": 10,
  "avgCostBasis": 180
}
cURL request
curl -X POST \
  -H "X-API-Key: $MKTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{  "symbol": "AAPL",  "name": "Apple Inc.",  "assetType": "stock",  "quantity": 10,  "avgCostBasis": 180}' \
  "https://mkts.io/api/v1/portfolio"
DELETE
/portfolioClear a portfolio

Remove every holding owned by the authenticated API key.

Key required
cURL request
curl -X DELETE \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/portfolio"
DELETE
/portfolio/{holdingId}Delete a holding

Remove one holding by its ID.

Key required

Parameters

holdingId (path)
cURL request
curl -X DELETE \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/portfolio/HOLDING_ID"
GET
/portfolio/performanceGet portfolio performance

Portfolio performance series with optional benchmark overlays.

Key required

Parameters

rangebenchmarks
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/portfolio/performance?range=YTD&benchmarks=SPY,QQQ"
GET
/portfolio/cardGenerate a portfolio card

Generate a shareable 1200×630 PNG with portfolio value, performance, and top holdings.

Key required

Parameters

range
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/portfolio/card?range=YTD"
GET
/watchlistList watchlists

Return every watchlist owned by the authenticated API key.

Key required
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/watchlist"
POST
/watchlistCreate a watchlist

Create a named watchlist with optional starting symbols.

Key required

JSON body

{
  "name": "AI infrastructure",
  "symbols": ["NVDA", "MSFT"]
}
cURL request
curl -X POST \
  -H "X-API-Key: $MKTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{  "name": "AI infrastructure",  "symbols": ["NVDA", "MSFT"]}' \
  "https://mkts.io/api/v1/watchlist"
DELETE
/watchlistClear all watchlists

Delete every watchlist owned by the authenticated API key.

Key required
cURL request
curl -X DELETE \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/watchlist"
GET
/watchlist/{watchlistId}Get a watchlist

Return one watchlist by ID.

Key required

Parameters

watchlistId (path)
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
PATCH
/watchlist/{watchlistId}Update a watchlist

Rename a watchlist or add and remove symbols.

Key required

Parameters

watchlistId (path)

JSON body

{
  "name": "Core tech",
  "addSymbols": ["AAPL"],
  "removeSymbols": ["MSFT"]
}
cURL request
curl -X PATCH \
  -H "X-API-Key: $MKTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{  "name": "Core tech",  "addSymbols": ["AAPL"],  "removeSymbols": ["MSFT"]}' \
  "https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
DELETE
/watchlist/{watchlistId}Delete a watchlist

Delete one watchlist by ID.

Key required

Parameters

watchlistId (path)
cURL request
curl -X DELETE \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
GET
/journalList journal entries

Return the authenticated API key owner’s research journal.

Key required
cURL request
curl \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/journal"
POST
/journalCreate a journal entry

Create a tagged research or trading journal entry.

Key required

JSON body

{
  "title": "AAPL thesis",
  "content": "Watching services growth.",
  "symbol": "AAPL",
  "tags": ["research"]
}
cURL request
curl -X POST \
  -H "X-API-Key: $MKTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{  "title": "AAPL thesis",  "content": "Watching services growth.",  "symbol": "AAPL",  "tags": ["research"]}' \
  "https://mkts.io/api/v1/journal"
DELETE
/journal/{entryId}Delete a journal entry

Delete one journal entry by ID.

Key required

Parameters

entryId (path)
cURL request
curl -X DELETE \
  -H "X-API-Key: $MKTS_API_KEY" \
  "https://mkts.io/api/v1/journal/ENTRY_ID"

AI

1
POST
/askAsk about the market

Parse a natural-language market question and route it to structured market data.

Key required

JSON body

{
  "q": "Which technology stocks are down more than 5%?"
}
cURL request
curl -X POST \
  -H "X-API-Key: $MKTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{  "q": "Which technology stocks are down more than 5%?"}' \
  "https://mkts.io/api/v1/ask"

Agent integrations

One data layer for every agent.

Use the hosted read-only MCP server with Claude, OpenAI, or another Streamable HTTP client. The existing skill and manifests remain available, and OpenClaw users can keep the same key setup.

Remote MCP endpoint

https://mkts.io/api/mcp

Keyless calls work at public limits. Send your existing key as a Bearer token or X-API-Key for authenticated limits.

Response contract

One predictable envelope.

JSON responses use success, data, and meta. The meta object carries freshness and rate-limit state.

200Request succeeded
400Invalid request or parameter
401Missing or invalid required key
404Resource was not found
429Rate limit reached
500Unexpected server error
200 response
{
  "success": true,
  "data": {
    "symbol": "AAPL",
    "price": 219.58,
    "change24h": 0.91
  },
  "meta": {
    "lastUpdated": 1773077284000,
    "asOf": "2026-03-09T19:48:04.000Z",
    "dataAgeMs": 4210,
    "freshness": "near-real-time",
    "cacheStatus": "hit",
    "sources": ["yahoo-finance"],
    "requestId": "2fb89be8-1e19-4ab7-a481-9cf67b839935",
    "requestsRemaining": 94,
    "resetTime": 1773080400000
  }
}
X-RateLimit-LimitHourly limit for the current access tier.
X-RateLimit-RemainingRequests left in the active window.
X-RateLimit-ResetWindow reset time as a Unix timestamp in milliseconds.
X-Request-IdUnique identifier for tracing a response through support and telemetry.
X-Data-As-OfISO timestamp for the underlying market-data observation.
X-Data-Age-MsAge of the observation when the response was created.
X-Data-FreshnessLive, near-real-time, delayed, cached, historical, or unknown.
X-Data-SourcesComma-separated upstream providers when known.
X-Cache-StatusNormalized hit, miss, stored, bypass, or unknown state.
Retry-AfterSeconds until retry, returned with a 429 response.
X-Query-CacheCache hit or miss on heavier research routes.
X-Query-UniverseEffective bounded universe on fan-out searches.

Rate limits

Start small. Add capacity when you need it.

AccessSnapshotLiveBest for
No API key20 / hour20 / hourTesting and lightweight public data
Free API key100 / hour10 / hourAgents, prototypes, and personal tools
Paid API key1,000 / hour100 / hourProduction applications

Ready to move beyond keyless?

Create or manage keys without changing your integration.

Manage API keys