Product · 14 pages, one API key

The market-data plumbing, already built.

Every data product TickAtlas publishes, with the endpoint behind it, what a call weighs in pay-as-you-go credit, which permission scope the key needs and which plan can reach it — so you can pick a surface from this page instead of discovering its limits later.

14 product pages 22 documented endpoints 7 timeframes
tickatlas.com / v1 one key
GET /v1/{quote · indicator · ohlc · screener · heatmap · calendar · summary · ticks}
request weights
1× → 5×
plus 0×
quotes · indicators · spreads1×
candles · batch · screen · heatmap2×
raw ticks3×
summary · indicator history5×
cached market view0×
WebSocket push0×
envelopesuccess · data
authX-API-Key
// Every /v1 response, whichever product you called.
{
  "success": true,
  "data": { … }
}

// Every /v1 error, same shape, machine-readable.
{
  "success": false,
  "error": {
    "code": "INVALID_TIMEFRAME",
    "message": "Invalid timeframe: M2",
    "valid_timeframes": ["M1", "M5", "M15", "M30",
                          "H1", "H4", "D1"]
  }
}

// The three gated endpoints answer the same way.
{
  "success": false,
  "error": { "code": "PLAN_UPGRADE_REQUIRED",
             "current_plan": "starter",
             "required_plan": "pro" }
}
14Product pages
22Documented endpoints
42Indicator series
7Timeframes
The TickAtlas Market Monitor dashboard — live price, OHLC chart, signal board, AI summary, economic calendar, and cross-symbol screeners arranged on a dark grid layout.
If you would rather not write the client

Market Monitor — the same data, already assembled.

A configurable grid of 34 widgets over the endpoints catalogued below: live price, OHLC chart, signal board, AI summary, economic calendar and cross-symbol screeners, in one saved layout. It authenticates with a monitor-session token rather than a raw API key, and monitor sessions are exempt from the per-endpoint plan gate that applies to the raw /v1 surface.

Run it during a session

Live tools

Surfaces built to be watched or scanned right now. Two of them are ordinary /v1 endpoints; the monitor is a browser product with its own plan.

not metered per widget Monitor plan

Market Monitor

Browser dashboard

A configurable grid of 34 widgets over the same data the API serves, including the AI summary and signal board. It authenticates with a monitor-session token rather than a raw API key, and monitor sessions are exempt from the per-endpoint plan gate.

  • weight not metered per widget
  • scope monitor session

Read the Market Monitor page

2× Every plan

Market Screener

GET /v1/screener

Reads ONE indicator series across every symbol in the live cache, keeps the ones inside an optional min/max band, sorts by value and pages up to 200 rows. Not a ten-pair scan — the whole cached universe, for one call (two weighted units).

  • weight 2×
  • scope premium

Read the Market Screener page

2× Every plan

Currency Heatmap

GET /v1/heatmap

Currency-level strength and a correlation matrix across the eight majors. The only endpoint that accepts W1 — and the only one that rejects M1, M5, M15 and M30. Default timeframe H4.

  • weight 2×
  • scope premium

Read the Currency Heatmap page

The feed under everything

Market data

Prices as they arrive and prices as they were. Everything else on this page is computed from these rows.

1× · 1× · unmetered Every plan · WebSocket from Starter

Real-Time Data

GET /v1/quote · POST /v1/quotes · WS /ws/v1/quotes

Live bid, ask and spread for one symbol or up to a hundred in a batch, plus a push stream that costs nothing per message. Freshness is bounded by the ~60-second ingest cadence, not by a cache TTL.

  • weight 1× · 1× · unmetered
  • scope quotes

Read the Real-Time Data page

3× Pro and Enterprise only

Tick Data

GET /v1/ticks

Raw bid/ask ticks. Both from and to are required, the range is capped at one hour per request, the result is hard-limited to 50,000 rows and retention is 24 hours.

  • weight 3×
  • scope historical

Read the Tick Data page

2× · 5× PAYG and up

Backtesting

GET /v1/ohlc · GET /v1/indicator/history

Up to 1,000 candles a call across the full retention window, and any of the 42 series as a time series beside them — though the series endpoints cap the query window at half the retention.

  • weight 2× · 5×
  • scope historical

Read the Backtesting page

2× Every plan

Timeframes

GET /v1/multi

M1, M5, M15, M30, H1, H4, D1 — one per call, everywhere. /v1/multi batches symbols and series inside a single timeframe, up to 50 symbols; the parameter is timeframe, singular, and there is no multi-timeframe response anywhere.

  • weight 2×
  • scope premium

Read the Timeframes page

Computed on top of the feed

Intelligence

Classifications and aggregates derived from the cached indicator values by fixed rules. No model is involved in producing any of them.

5× Every plan

Market Summary

GET /v1/summary

One symbol, one timeframe, 19 keys: a bias with a separate strength and confidence, four per-category directions, three arrays of the conditions that fired, and the 13 raw readings behind them.

  • weight 5×
  • scope indicators

Read the Market Summary page

5× Every plan

Trading Signals

GET /v1/summary → signal arrays

The condition catalogue itself: every branch the four analysers test, the constant each is worth, and the ladder that turns two signed scores into a verdict. There is no separate signals route — signals are fields on the summary payload.

  • weight 5×
  • scope indicators

Read the Trading Signals page

varies per tool Every plan

Market Analysis

Agent integration guide

How to wire these surfaces into a tool-calling agent: which record maps to which tool, what a turn costs, which field to strip before a user sees it, and why a templated payload is the right thing to hand a model.

  • weight varies per tool
  • scope indicators

Read the Market Analysis page

no quota cost · unlock $0.01 + 1 request No plan gate on the teasers

Market Insights

GET /api/market-insights/…

A background job runs the same scoring over every cached symbol on M30, H1, H4 and D1 four times a day and caches the result. The whole-market card set and the market-wide overview cost nothing, because usage accounting only applies to paths under /v1/.

  • weight no quota cost · unlock $0.01 + 1 request
  • scope API key or session cookie

Read the Market Insights page

Facts the API exposes

Reference data

The catalogues and measurements everything else is expressed in — indicator values, scheduled events and execution costs.

1× Every plan

42 Technical Indicators

GET /v1/indicator · /v1/indicators · /v1/indicators/list

23 trend, 8 oscillator, 7 volatility and 4 volume series, computed per symbol and per timeframe. One series with price context, all 42 at once, or the catalogue with descriptions.

  • weight 1×
  • scope indicators

Read the 42 Technical Indicators page

2× Any paid plan

Economic Calendar

GET /v1/calendar

Scheduled macro events with country, importance, and the actual, forecast and previous figures — the context price series alone cannot supply.

  • weight 2×
  • scope premium

Read the Economic Calendar page

1× Every plan

Spread Analysis

GET /v1/spread · /v1/spread/compare

Current, average, minimum, maximum and standard deviation of the spread over 1h, 24h, 7d or 30d, plus a cross-symbol comparison. The only data family that needs no special key scope.

  • weight 1×
  • scope none required

Read the Spread Analysis page

Complete API surface

Every endpoint, its weight, its scope, its gate.

The whole published surface in one place. Weights are matched on the exact path, so an endpoint absent from the tier map takes the 1× fallback rather than inheriting from its prefix — marked below where it applies. Scopes are matched longest-prefix-first, which is why /v1/indicator/history needs historical rather than indicators.

"paid" means any plan except free and trial — pay-as-you-go included. The three named gates are enforced inside the route itself and return 403 PLAN_UPGRADE_REQUIRED.
Endpoint Request weight Key scope Plan gate
GET /v1/quote 1× quotes every plan
POST /v1/quotes 1× quotes every plan
GET /v1/symbols 1× — every plan
GET /v1/symbols/{symbol} 1× (fallback) — every plan
GET /v1/sessions 1× — every plan
GET /v1/spread 1× — every plan
GET /v1/spread/compare 1× (fallback) — every plan
GET /v1/indicator 1× indicators every plan
GET /v1/indicators 1× indicators every plan
GET /v1/indicators/list 1× (fallback) indicators every plan
GET /v1/ohlc 2× historical paid
GET /v1/multi 2× premium every plan · history PAYG and up
GET /v1/screener 2× premium every plan
GET /v1/heatmap 2× premium every plan
GET /v1/calendar 2× premium paid
GET /v1/ticks 3× historical Pro · Enterprise
GET /v1/summary 5× indicators every plan
GET /v1/indicator/history 5× historical PAYG and up
WS /ws/v1/quotes unmetered key or monitor token Starter and above
GET /api/market-insights/overview no quota cost key or session —
GET /api/market-insights/cards/{timeframe} no quota cost key or session —
POST /api/market-insights/unlock $0.01 + 1 request key or session —

Unknown query parameters are ignored, not rejected. That is FastAPI's default across this whole surface, and it is the single most expensive thing to know: a request carrying a parameter that does not exist returns HTTP 200 with that parameter having had no effect. Every product page below lists its real parameter set for exactly this reason.

Request pattern

The same four lines, whichever product you picked.

One header, one path, one envelope. Swapping products means changing the path and the query parameters — never the auth, the parsing or the error handling.

  • Auth is one header: X-API-Key.
  • Every /v1 response is { success, data }.
  • Weights debit quota; the cached views debit nothing.
  • Key caps per plan: 3 · 10 · 10 · 100.
cURLOne key, every tier
# One key. Every product on this page.
export CLAW_KEY="tk_…"

# 1x  - quotes, single indicators, spreads, symbols, sessions
curl -H "X-API-Key: $CLAW_KEY" "…/v1/quote?symbol=EURUSD"

# 2x  - candles, batching, screening, heatmap, calendar
curl -H "X-API-Key: $CLAW_KEY" "…/v1/screener?indicator=RSI_14&max_val=30"

# 3x  - raw ticks (Pro / Enterprise, 1-hour window)
curl -H "X-API-Key: $CLAW_KEY" "…/v1/ticks?symbol=EURUSD&from=…&to=…"

# 5x  - the aggregate verdict, and indicator time series
curl -H "X-API-Key: $CLAW_KEY" "…/v1/summary?symbol=EURUSD&timeframe=H1"

# 0x  - the cached whole-market view, and the price stream
curl -H "X-API-Key: $CLAW_KEY" "…/api/market-insights/cards/H4"

{ "success": true, "data": { … } }   # same envelope everywhere
Timeframes

7 intervals, shared by almost everything.

M1, M5, M15, M30, H1, H4, D1, defaulting to H1 wherever the parameter is optional. Two endpoints differ: /v1/heatmap takes H1, H4, D1 and W1 — the only place W1 is valid — and the cached insight cards take M30, H1, H4 and D1.

  • M1 — 1 Minute
  • M5 — 5 Minutes
  • M15 — 15 Minutes
  • M30 — 30 Minutes
  • H1 — 1 Hour (default)
  • H4 — 4 Hours
  • D1 — Daily

Retention is per timeframe and never per plan. 45 days on D1 down to 24 hours on M1, identical on pay-as-you-go and Enterprise. See the full schedule.

Developer-first behavior

What is true of all 14 of them.

The conventions that hold across the surface, so learning one endpoint teaches you most of the next.

AUTH

One header, one key

Every /v1 call is a single X-API-Key header. No session flow, no token exchange, no signing. Key caps are per plan: 3 on Starter, 10 on Pro and pay-as-you-go, 100 on Enterprise.

  • X-API-Key: tk_…
ENVELOPE

Same shape every time

{ "success": true, "data": { … } } on the whole /v1 surface. The market-insights routes are the documented exception and use their own envelopes.

  • One parser, every endpoint
SYMBOLS

Canonical in, canonical out

Send EURUSD; responses echo the canonical name.

  • One name per instrument
ERRORS

Named, with the valid set

INVALID_TIMEFRAME, OUTSIDE_RETENTION, RANGE_TOO_LARGE, PLAN_UPGRADE_REQUIRED — each carries the acceptable values or the exact ceiling in its detail.

  • Machine-readable retry hints
Developer API pricing

One key. Every product above.

Plans buy request budget and rate limit, plus access to three gated endpoints. They do not buy extra timeframes, extra symbols or deeper history — those are the same on every tier.

There is no free tier and no self-serve trial. Every account starts on pay-as-you-go with $2.50 of prepaid credit, no card and no overage — monthly plans lift the starting quota.
Pay as you go
$0 to start 200 requests/day · 30/min until you top up
  • $2.50 of credit included
  • Every REST endpoint except raw ticks
  • No card required, no overage
  • 10 API keys
Start free
Starter
$29/mo 10,000 requests · 120/min
  • Every REST endpoint except raw ticks
  • WebSocket streaming, 5 symbols
  • Released calendar actuals
  • Email support
  • 3 API keys
View plan
Enterprise
$349/mo 1,000,000 requests · 6000/min
  • Everything in Pro
  • Dedicated support
  • 100 API keys
  • Custom indicators
  • SLA guarantee
  • On-premise option
Contact sales
Common software patterns

Three routes through this page.

Most integrations start in one of three places, and each one has an obvious cheapest first call.

I need prices

Start at Real-Time Data. One header and one symbol returns bid, ask and spread for 1× — or a hundred symbols in a batch for the same 1×. Add the stream when polling stops being enough; it costs nothing.

/v1/quote/v1/quotes/ws/v1/quotes

I need to find something

Start at Market Screener for your own condition across every symbol, or at Market Insights for a pre-scored whole-market view that costs no quota at all.

/v1/screenermarket-insights
Frequently asked questions

The platform, clarified.

What a weight is, which surfaces are free, what one key reaches, and where a first integration should start.

Do I need a different plan for each of these?

No — one key reaches everything except two gated surfaces and one gated value. Tick data is Pro and Enterprise only; the WebSocket stream needs Starter or above; and released economic-calendar actuals populate from Starter up. Everything else on this page works on every plan, so a new account reaches it on its $2.50 of starting credit. What the key does need is the right permission scope: quotes, indicators, historical or premium, depending on the endpoint.

What is a request weight?

A multiplier on your daily quota. A 1× call debits one request, a 5× call debits five. The map is matched on the EXACT path, so an endpoint that is not listed in it takes the 1× fallback rather than inheriting a neighbour’s weight — which is why /v1/indicators is 1× but /v1/indicator/history is 5×, and why /v1/spread/compare is 1× even though it sits under a 1× parent by coincidence rather than by rule.

Which of these cost nothing?

The cached market-insights overview and card set, and every WebSocket push. The first two are outside the /v1/ namespace that the usage middleware meters and do no accounting of their own; the stream sets a per-push credit cost of zero on every plan that can reach it. That makes the standard cost-control pattern obvious: look at the whole market for free, then spend a metered call only on what you picked.

Is the response shape the same across products?

Yes for the /v1 surface: every response is { "success": true, "data": { … } }, every error is a 4xx with a machine-readable code and the acceptable values in the detail, and every symbol is echoed back in its canonical form. The market-insights routes are the deliberate exception — they predate that convention and return { success, overview }, { success, cards, timeframe } and { success, analysis, charged, cost, new_balance } instead.

How many symbols and timeframes?

7 timeframes — M1, M5, M15, M30, H1, H4, D1 — accepted by everything except the heatmap, which takes H1, H4, D1 and W1, and the cached insight cards, which take M30, H1, H4 and D1. Symbol coverage follows our data and changes as it grows, so the honest answer is GET /v1/symbols: it returns the live list, filterable by forex, commodities, indices, crypto or stocks and paginated up to 500 rows a page.

How fresh is any of it?

Bounded by the cadence of our data: it updates about every 60 seconds with bid and ask for every configured symbol plus the timeframe blocks that are due — M1 and M5 on essentially every update, M15 through H1 every ten minutes, H4 and D1 every half hour. Every response stamps its own age, as timestamp on a quote, updated_at on an indicator surface or snapshot_time on a cached card, so freshness is something you read rather than assume.

Where do I start?

With /v1/quote or /v1/indicator — both are 1×, both need one header and one query parameter, and both return the standard envelope. Then read the product page for whichever surface matches your problem: each one documents its full parameter list, its response fields by name and type, its real weight and any plan gate, with the behaviours that are easy to get wrong called out rather than left to be discovered.

14 products · 22 endpoints · one key

Pick a surface. Start on the credit.

Every product on this page is reachable with one API key, and every account starts on pay-as-you-go with $2.50 of prepaid credit — no card, no overage, no trial to expire.