API reference

TickBase Market Data API

A read-only REST API for FX and precious-metals data. All prices are stored in USD; non-USD bases are derived on read via the USD pivot.

Introduction

The base URL is https://api.thetickbase.com. Every endpoint returns JSON and is versioned under /v1. /v1/status and /v1/symbols are public; all other routes require an API key.

Get started: create a free account, mint an API key in the dashboard, then make your first request below. The free plan includes 5,000 requests/month.

Create an API key

Authentication

Authenticate every request with your API key, either as a bearer token or via the X-API-Key header. Keys are prefixed tb_live_ (production) or tb_test_. Keep secret keys server-side — never ship them in client code.

authentication
# Bearer token (recommended)
curl -s "https://api.thetickbase.com/v1/fx/latest?symbols=EUR" \
  -H "Authorization: Bearer tb_live_•••"

# Or the X-API-Key header
curl -s "https://api.thetickbase.com/v1/fx/latest?symbols=EUR" \
  -H "X-API-Key: tb_live_•••"

Rate limits & quotas

Three limits apply, smallest first: a fixed per-IP safeguard (120 req/min), your plan's per-key rate limit, and your monthly request quota. Exceeding any returns 429.

Plan Per minute Monthly quota History Active keys
Free105,00030 days1
Developer60100,000Full3
Business3001,000,000Full5

Errors

Errors use a consistent envelope with a stable code, a human-readable message, and the HTTP status.

error envelope
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Per-minute rate limit exceeded for your plan.",
    "status": 429
  }
}
CodeStatusMeaning
invalid_api_key 401 Missing, malformed, or revoked API key.
forbidden_plan 403 Endpoint or parameter not allowed on your plan.
ip_rate_limit_exceeded 429 Per-IP safeguard tripped (120 req/min).
rate_limit_exceeded 429 Per-key rate limit for your plan exceeded.
quota_exceeded 429 Monthly request quota used up.
not_found 404 Unknown symbol, date, or route.
invalid_request 400 Bad or missing query parameters.
upstream_unavailable 503 A data source is temporarily unreachable.

FX

Latest FX rates

Free
GET /v1/fx/latest

Latest exchange rates against USD. Pass a non-USD base (paid plans) to derive rates via the USD pivot.

Parameter Type Default Description
base string USD Quote base. Non-USD requires a paid plan.
symbols string Comma-separated quote codes, e.g. EUR,GBP.

* required

request
curl -s "https://api.thetickbase.com/v1/fx/latest?symbols=EUR,GBP" \
  -H "Authorization: Bearer tb_live_•••"
200 OK · application/json
{
  "base": "USD",
  "rates": { "EUR": 0.82791, "GBP": 0.73605 },
  "as_of": "2026-05-21T09:30:00Z",
  "derived": false,
  "pivot": "USD"
}

Convert currencies

Free
GET /v1/fx/convert

Convert an amount between two currencies. Cross conversions resolve through the USD pivot.

Parameter Type Default Description
from * string Source currency code.
to * string Target currency code.
amount * number Amount to convert.
date date Use a historical date instead of latest.

* required

request
curl -s "https://api.thetickbase.com/v1/fx/convert?from=USD&to=EUR&amount=100" \
  -H "Authorization: Bearer tb_live_•••"
200 OK · application/json
{
  "from": "USD",
  "to": "EUR",
  "amount": 100,
  "rate": 0.82791,
  "result": 82.791,
  "as_of": "2026-05-21T09:30:00Z"
}

Historical FX rates

Free
GET /v1/fx/historical

Exchange rates for a specific date. History depth depends on your plan.

Parameter Type Default Description
date * date Date to query (YYYY-MM-DD).
base string USD Quote base. Non-USD requires a paid plan.
symbols string Comma-separated quote codes.

* required

request
curl -s "https://api.thetickbase.com/v1/fx/historical?date=2026-05-01&symbols=EUR" \
  -H "Authorization: Bearer tb_live_•••"
200 OK · application/json
{
  "base": "USD",
  "rates": { "EUR": 0.83012 },
  "as_of": "2026-05-01T00:00:00Z",
  "derived": false,
  "pivot": "USD"
}

FX time series

Paid Planned
GET /v1/fx/timeseries

Daily series for one symbol over a date range. Paid plans only.

Parameter Type Default Description
symbol * string Quote code, e.g. EUR.
start * date Range start (inclusive).
end * date Range end (inclusive).
base string USD Quote base.
interval string 1d Sampling interval.

* required

request
curl -s "https://api.thetickbase.com/v1/fx/timeseries?symbol=EUR&start=2026-05-01&end=2026-05-07" \
  -H "Authorization: Bearer tb_live_•••"
response (planned shape)
{
  "symbol": "EUR",
  "base": "USD",
  "interval": "1d",
  "points": [
    { "date": "2026-05-01", "rate": 0.83012 },
    { "date": "2026-05-02", "rate": 0.82940 }
  ]
}

Metals

Latest metal price

Free
GET /v1/metals/latest

Latest spot price per troy ounce for a precious metal.

Parameter Type Default Description
metal string XAU One of XAU, XAG, XPT, XPD.
currency string USD Quote currency. Non-USD requires a paid plan.

* required

request
curl -s "https://api.thetickbase.com/v1/metals/latest?metal=XAU" \
  -H "Authorization: Bearer tb_live_•••"
200 OK · application/json
{
  "metal": "XAU",
  "currency": "USD",
  "price": 2350.75,
  "unit": "troy_ounce",
  "bid": 2350.10,
  "ask": 2351.40,
  "ch": 9.85,
  "chp": 0.42,
  "as_of": "2026-05-21T09:30:00Z",
  "derived": false,
  "pivot": "USD"
}

Historical metal price

Free
GET /v1/metals/historical

Spot price for a metal on a specific date.

Parameter Type Default Description
date * date Date to query (YYYY-MM-DD).
metal string XAU One of XAU, XAG, XPT, XPD.
currency string USD Quote currency.

* required

request
curl -s "https://api.thetickbase.com/v1/metals/historical?date=2026-05-01&metal=XAU" \
  -H "Authorization: Bearer tb_live_•••"
200 OK · application/json
{
  "metal": "XAU",
  "currency": "USD",
  "price": 2333.10,
  "unit": "troy_ounce",
  "as_of": "2026-05-01T00:00:00Z",
  "derived": false,
  "pivot": "USD"
}

Metal time series

Paid Planned
GET /v1/metals/timeseries

Daily metal series built from stored ticks. Paid plans only.

Parameter Type Default Description
metal string XAU One of XAU, XAG, XPT, XPD.
currency string USD Quote currency.
start * date Range start (inclusive).
end * date Range end (inclusive).
interval string 1d Sampling interval.

* required

request
curl -s "https://api.thetickbase.com/v1/metals/timeseries?metal=XAU&start=2026-05-01&end=2026-05-07" \
  -H "Authorization: Bearer tb_live_•••"
response (planned shape)
{
  "metal": "XAU",
  "currency": "USD",
  "interval": "1d",
  "points": [
    { "date": "2026-05-01", "price": 2333.10 },
    { "date": "2026-05-02", "price": 2341.55 }
  ]
}

Convert metal ⇄ currency

Paid Planned
GET /v1/metals/convert

Convert between a metal and a currency (per troy ounce). Paid plans only.

Parameter Type Default Description
from * string Metal code or currency.
to * string Metal code or currency.
amount * number Amount to convert.
date date Use a historical date instead of latest.

* required

request
curl -s "https://api.thetickbase.com/v1/metals/convert?from=XAU&to=USD&amount=2" \
  -H "Authorization: Bearer tb_live_•••"
response (planned shape)
{
  "from": "XAU",
  "to": "USD",
  "amount": 2,
  "rate": 2350.75,
  "result": 4701.50,
  "as_of": "2026-05-21T09:30:00Z"
}

System

OHLC candles

Paid Planned
GET /v1/ohlc

Open/high/low/close candles aggregated from stored ticks. Paid plans only.

Parameter Type Default Description
asset string fx fx or metal.
symbol * string e.g. EURUSD or XAUUSD.
interval string 1d Candle interval.
start * date Range start (inclusive).
end * date Range end (inclusive).

* required

request
curl -s "https://api.thetickbase.com/v1/ohlc?asset=fx&symbol=EURUSD&start=2026-05-01&end=2026-05-07" \
  -H "Authorization: Bearer tb_live_•••"
response (planned shape)
{
  "asset": "fx",
  "symbol": "EURUSD",
  "interval": "1d",
  "candles": [
    { "date": "2026-05-01", "o": 0.8301, "h": 0.8325, "l": 0.8290, "c": 0.8312 }
  ]
}

Source status

Free
GET /v1/status

Per-asset data freshness. Public — no API key required.

request
curl -s "https://api.thetickbase.com/v1/status"
200 OK · application/json
{
  "now": "2026-05-21T09:30:05Z",
  "sources": [
    { "asset": "fx", "as_of": "2026-05-21T09:30:00Z", "age_seconds": 5 },
    { "asset": "metal", "symbol": "XAU", "as_of": "2026-05-21T09:29:30Z", "age_seconds": 35 }
  ]
}

Supported symbols

Free
GET /v1/symbols

Symbols available for FX and metals. Public — no API key required.

Parameter Type Default Description
asset string Filter to fx or metal; omit for both.

* required

request
curl -s "https://api.thetickbase.com/v1/symbols?asset=metal"
200 OK · application/json
{
  "metal": ["XAG", "XAU", "XPD", "XPT"]
}