Developer API

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.

20+
public endpoints
5
asset classes
1
versioned base URL
Production Notes

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.

Get Started

Three steps to a working integration

Base URL

Every endpoint is rooted under the same versioned REST surface.

https://mkts.io/api/v1

Start 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/market

Upgrade later

Register a free key when you need higher snapshot limits or authenticated workflow endpoints.

curl -X POST https://mkts.io/api/v1/register
Authentication

Keyless, header auth, or bearer auth

Keyless

Good for trying snapshot endpoints and validating response structure.

curl https://mkts.io/api/v1/assets?limit=5
Header auth

Preferred for applications and server-side jobs.

curl -H "X-API-Key: $MKTS_API_KEY" https://mkts.io/api/v1/brief
Bearer auth

Supported anywhere an Authorization header is easier to manage.

curl -H "Authorization: Bearer $MKTS_API_KEY" https://mkts.io/api/v1/macro
Response Contract

Headers and response shape you can rely on

{
  "success": true,
  "data": { ... },
  "meta": {
    "lastUpdated": 1773077284000,
    "requestsRemaining": 94,
    "resetTime": 1773080400000
  }
}
X-RateLimit-Limit

Current hourly limit for the authenticated tier or keyless path.

X-RateLimit-Remaining

Requests left in the active window.

X-RateLimit-Reset

Unix timestamp in milliseconds for window reset.

Retry-After

Returned on 429 responses with the number of seconds until retry.

X-Query-Cache

Returned on heavier screening/search endpoints to show `hit` or `miss`.

X-Query-Universe

Returned on fan-out screening/search endpoints to show the effective capped universe.

Examples

Requests and responses that mirror real production usage

Get a normalized asset snapshot

Request
curl -H "X-API-Key: $MKTS_API_KEY" \
  https://mkts.io/api/v1/asset/AAPL
Response
{
  "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

Request
curl -H "X-API-Key: $MKTS_API_KEY" \
  https://mkts.io/api/v1/asset/MSFT/details
Response
{
  "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

Request
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"
Response
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
  }
}
Endpoint Coverage

Reference surface by workflow

Start here

Core Market Data

GET/api/v1/market

Global market overview and macro context.

GET/api/v1/assets

Filtered multi-asset universe with pagination and sorting.

GET/api/v1/asset/{symbol}

Normalized snapshot for a single ticker or token.

GET/api/v1/asset/{symbol}/live

Fresh quote with market-state and extended-hours fields.

GET/api/v1/asset/{symbol}/history

Historical OHLCV for charts and backtests.

GET/api/v1/macro

BTC, ETH, SPY, QQQ, gold, oil, VIX, DXY, and 10Y in one call.

Equity workflows

Research And Screening

GET/api/v1/asset/{symbol}/details

Profile, analysts, holders, insider activity, SEC filings, and ETF holdings.

GET/api/v1/asset/{symbol}/filings

Direct SEC filing feed with optional form-type filtering.

GET/api/v1/filings/search

Cross-company filings search bounded by your stock or ETF universe.

GET/api/v1/asset/{symbol}/fundamentals

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

GET/api/v1/asset/{symbol}/options

Options chain with IV, open interest, volume, and expirations.

GET/api/v1/fundamentals/screen

Fundamental screener over valuation, margins, growth, leverage, and cash flow.

GET/api/v1/earnings

Earnings calendar with estimates, surprises, and quarter history.

GET/api/v1/news

Financial news feed with category and symbol filtering.

What usually gets bolted on later

Workflow Endpoints

GET/api/v1/portfolio

Authenticated holdings with allocation, P&L, and daily change.

GET/api/v1/portfolio/performance

Portfolio time series with benchmark overlays.

GET/api/v1/portfolio/card

Generate a shareable PNG portfolio card.

GET/api/v1/watchlist

Create and manage saved symbol collections.

GET/api/v1/journal

Store trade rationale and notes beside positions.

POST/api/v1/ask

Natural-language routing into screen, lookup, compare, movers, macro, or brief.

POST/api/v1/register

Programmatic API key issuance for apps and agents.

Error Handling

Common failure modes

400 Invalid query params

Returned when dates, symbols, sort fields, or endpoint-specific params are malformed.

401 Auth required

Returned for authenticated workflow endpoints when no valid session or API key is present.

404 Symbol or data not found

Returned when the symbol is unsupported or the upstream source does not have the requested data.

429 Rate limit exceeded

Use `Retry-After` and the `X-RateLimit-*` headers to back off cleanly.

502 Upstream failure

Used when upstream providers fail or a live enrichment path cannot be completed reliably.

Rate Limits

Friction-free testing path, clearer production upgrade path

TierSnapshotLiveNotes
Keyless20 req/hr20 req/hrNo signup required. Best for testing snapshots and response shape.
Free key100 req/hr10 req/hrRegister programmatically via POST /register.
Paid plan1,000 req/hr100 req/hrHigher limits, heavier workflows, and stronger production path.
Paid Plan

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.

$20 / month

Best for active testing, small projects, and steady integration work.

$200 / year

Two months free if you already know the API will stay in the stack.