Production-ready market data, research, and workflow endpoints under one API.
Use snapshots by default, go deeper with live research endpoints when needed, and ship portfolio, watchlist, journal, and agent workflows without stitching together multiple vendors.
Snapshot vs live routes
Use snapshot endpoints for default product flows. Use live endpoints when you need fresh quotes, options, details, or deeper research.
Shared caching
Live detail, fundamentals, filings, options, and heavier screening/search paths use shared cache layers to reduce repeated upstream fetches.
One response shape
Every v1 response returns `success`, `data`, and `meta`, with rate-limit headers on the response itself.
Three steps to a working integration
Base URL
Every endpoint is rooted under the same versioned REST surface.
https://mkts.io/api/v1Start keyless
You can hit the API without an API key to test the response shape and core snapshot endpoints.
curl https://mkts.io/api/v1/marketUpgrade later
Register a free key when you need higher snapshot limits or authenticated workflow endpoints.
curl -X POST https://mkts.io/api/v1/registerKeyless, header auth, or bearer auth
Good for trying snapshot endpoints and validating response structure.
curl https://mkts.io/api/v1/assets?limit=5Preferred for applications and server-side jobs.
curl -H "X-API-Key: $MKTS_API_KEY" https://mkts.io/api/v1/briefSupported anywhere an Authorization header is easier to manage.
curl -H "Authorization: Bearer $MKTS_API_KEY" https://mkts.io/api/v1/macroHeaders and response shape you can rely on
{
"success": true,
"data": { ... },
"meta": {
"lastUpdated": 1773077284000,
"requestsRemaining": 94,
"resetTime": 1773080400000
}
}X-RateLimit-LimitCurrent hourly limit for the authenticated tier or keyless path.
X-RateLimit-RemainingRequests left in the active window.
X-RateLimit-ResetUnix timestamp in milliseconds for window reset.
Retry-AfterReturned on 429 responses with the number of seconds until retry.
X-Query-CacheReturned on heavier screening/search endpoints to show `hit` or `miss`.
X-Query-UniverseReturned on fan-out screening/search endpoints to show the effective capped universe.
Requests and responses that mirror real production usage
Get a normalized asset snapshot
curl -H "X-API-Key: $MKTS_API_KEY" \
https://mkts.io/api/v1/asset/AAPL{
"success": true,
"data": {
"symbol": "AAPL",
"name": "Apple Inc.",
"type": "stock",
"price": 219.58,
"change24h": 0.91,
"marketCap": 3339000000000,
"volume24h": 58321920,
"lastUpdated": 1773077284000,
"logo": "/api/logo/AAPL",
"sector": "Technology"
},
"meta": {
"lastUpdated": 1773077284000,
"requestsRemaining": 94,
"resetTime": 1773080400000
}
}Pull deep equity detail
curl -H "X-API-Key: $MKTS_API_KEY" \
https://mkts.io/api/v1/asset/MSFT/details{
"success": true,
"data": {
"symbol": "MSFT",
"sector": "Technology",
"trailingPE": 33.5,
"revenueGrowth": 0.16,
"grossMargins": 0.69,
"recommendationKey": "buy",
"secFilings": [...]
},
"meta": {
"lastUpdated": 1773077284000,
"requestsRemaining": 88,
"resetTime": 1773080400000
}
}Run a bounded fundamentals screen
curl -i -H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/fundamentals/screen?sector=technology&minGrossMargin=0.50&limit=10&universe=40"HTTP/1.1 200 OK
X-Query-Cache: hit
X-Query-Universe: 40
X-RateLimit-Limit: 100
{
"success": true,
"data": {
"results": [...],
"total": 12,
"limit": 10,
"scanned": 40,
"universe": 40,
"source": "snapshot+live-details"
},
"meta": {
"lastUpdated": 1773077284000,
"requestsRemaining": 81,
"resetTime": 1773080400000
}
}Reference surface by workflow
Core Market Data
/api/v1/marketGlobal market overview and macro context.
/api/v1/assetsFiltered multi-asset universe with pagination and sorting.
/api/v1/asset/{symbol}Normalized snapshot for a single ticker or token.
/api/v1/asset/{symbol}/liveFresh quote with market-state and extended-hours fields.
/api/v1/asset/{symbol}/historyHistorical OHLCV for charts and backtests.
/api/v1/macroBTC, ETH, SPY, QQQ, gold, oil, VIX, DXY, and 10Y in one call.
Research And Screening
/api/v1/asset/{symbol}/detailsProfile, analysts, holders, insider activity, SEC filings, and ETF holdings.
/api/v1/asset/{symbol}/filingsDirect SEC filing feed with optional form-type filtering.
/api/v1/filings/searchCross-company filings search bounded by your stock or ETF universe.
/api/v1/asset/{symbol}/fundamentalsHistorical income statement, balance sheet, and cash-flow time series.
/api/v1/asset/{symbol}/optionsOptions chain with IV, open interest, volume, and expirations.
/api/v1/fundamentals/screenFundamental screener over valuation, margins, growth, leverage, and cash flow.
/api/v1/earningsEarnings calendar with estimates, surprises, and quarter history.
/api/v1/newsFinancial news feed with category and symbol filtering.
Workflow Endpoints
/api/v1/portfolioAuthenticated holdings with allocation, P&L, and daily change.
/api/v1/portfolio/performancePortfolio time series with benchmark overlays.
/api/v1/portfolio/cardGenerate a shareable PNG portfolio card.
/api/v1/watchlistCreate and manage saved symbol collections.
/api/v1/journalStore trade rationale and notes beside positions.
/api/v1/askNatural-language routing into screen, lookup, compare, movers, macro, or brief.
/api/v1/registerProgrammatic API key issuance for apps and agents.
Common failure modes
Returned when dates, symbols, sort fields, or endpoint-specific params are malformed.
Returned for authenticated workflow endpoints when no valid session or API key is present.
Returned when the symbol is unsupported or the upstream source does not have the requested data.
Use `Retry-After` and the `X-RateLimit-*` headers to back off cleanly.
Used when upstream providers fail or a live enrichment path cannot be completed reliably.
Everything an SDK, agent, or registry needs
Machine-readable schema for the public REST surface.
Discovery index for crawlers, assistants, and lightweight agents.
Promptable integration guide with ready-to-run curl examples.
Structured metadata for agent-first clients and registries.
ChatGPT-compatible plugin metadata tied to the OpenAPI spec.
Friction-free testing path, clearer production upgrade path
| Tier | Snapshot | Live | Notes |
|---|---|---|---|
| Keyless | 20 req/hr | 20 req/hr | No signup required. Best for testing snapshots and response shape. |
| Free key | 100 req/hr | 10 req/hr | Register programmatically via POST /register. |
| Paid plan | 1,000 req/hr | 100 req/hr | Higher limits, heavier workflows, and stronger production path. |
Move to a real API subscription when you need it
The paid plan is designed for builders shipping against the API, not just browsing a dashboard. It raises live and snapshot limits, gives heavier workflow headroom, and now supports monthly or annual billing.
Best for active testing, small projects, and steady integration work.
Two months free if you already know the API will stay in the stack.