Indices REST endpoints
Indicative index levels under /indices: discovery, quotes, last trade, snapshots, and aggregates for analytics, display, and operational tooling.
Symbol coverage
Symbols are generic public codes such as US500, US30, US100, DE40, EU50, and JP225. Unlike stocks and ETFs, index codes carry no market prefix: an index is written HK33, never HK:HK33, and the prefixed form is rejected. Use GET /indices/symbols for the curated list enabled for your key (see Symbols → Indices).
/indices/symbolsIndices symbol list
Curated index symbols available on the REST API.
Request
curl -sS "https://api.tickerlayer.com/indices/symbols" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbols": [
{ "symbol": "DE40", "name": "Germany 40" },
{ "symbol": "EU50", "name": "Europe 50" },
{ "symbol": "JP225", "name": "Japan 225" }
]
}/indices/quote/:symbolLatest quote
Indicative bid/ask and timestamp from the consolidated REST quote path.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols. |
Request
curl -sS "https://api.tickerlayer.com/indices/quote/US500" \
-H "x-api-key: <YOUR_API_KEY>"Send runs against the live API with your account key (never exposed in the browser).
Response 200 OK
{
"symbol": "US500",
"bid": 4788.12,
"ask": 4788.12,
"bid_size": 62,
"ask_size": 58,
"timestamp": 1743512400000
}404 unknown symbol if the code is not enabled. 404 no quote available when no consolidated quote can be resolved./indices/trade/last/:symbolLast trade
Latest indicative trade-style print for the index. size may be null when the feed has no lot size.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols. |
Request
curl -sS "https://api.tickerlayer.com/indices/trade/last/US500" \
-H "x-api-key: <YOUR_API_KEY>"Send runs against the live API with your account key (never exposed in the browser).
Response 200 OK
{
"symbol": "US500",
"price": 4788.12,
"size": 62,
"timestamp": 1743512400000
}404 when the symbol is unknown or no trade-style value can be resolved (message text may be unknown symbol or symbol not available)./indices/snapshot/:symbolMarket snapshot
Combined bid/ask, last reference level, previous daily close, and change metrics.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols. |
Request
curl -sS "https://api.tickerlayer.com/indices/snapshot/US500" \
-H "x-api-key: <YOUR_API_KEY>"Send runs against the live API with your account key (never exposed in the browser).
Response 200 OK
{
"symbol": "US500",
"bid": 4788.12,
"ask": 4788.12,
"bid_size": 62,
"ask_size": 58,
"last_price": 4788.12,
"last_timestamp": 1743512400000,
"prev_close": 4750.00,
"change": 38.12,
"change_percent": 0.8025
}change_percent is null when prev_close is zero or unavailable./indices/agg/:symbol/prevPrevious completed daily bar
Most recent fully completed daily OHLCV bar in UTC (previous session close).
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
| interval | string | Optional. 1m · 5m · 15m · 1h · 4h · 1d. Returns the most recently settled bar at that interval instead of the previous daily bar, and adds interval, bar_start, bar_end and as_of to the response. Omit for the daily bar. |
Request
curl -sS "https://api.tickerlayer.com/indices/agg/US500/prev" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbol": "US500",
"result": {
"o": 5950.0,
"h": 5980.0,
"l": 5930.0,
"c": 5965.0,
"v": null,
"t": 1732924800000
}
}404 no bar available when no completed daily bar can be resolved. With ?interval= the response is the most recently settled bar at that interval. The bar is held for a short settle lag after it closes, so the boundary sits away from the round minute and small clock differences between callers do not change which bar comes back. It is the same bar the historical range endpoint returns for that window, so an audit can re-fetch that exact window and compare against the same source. The response then also carries interval, bar_start, bar_end and as_of, and Cache-Control plus ETag mark exactly when the value can next change. While the market is closed the last real bar is returned, still labelled with its own bar_start./indices/agg/:symbol/:multiplier/:timespan/:from/:toAggregates — OHLCV range
Historical bars between two UTC calendar dates. Same interval rules and pagination as other asset classes.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled public symbol for the asset: crypto pairs like BTCUSD; stocks use CC:SYMBOL (e.g. US:AAPL). Trimmed before lookup. |
| multiplierreq | number | Interval multiplier. Valid pairs: 1, 5, 15 with minute; 1, 4 with hour; 1 with day. |
| timespanreq | string | minute · hour · day — case-insensitive. Other values return 400. |
| fromreq | string | UTC date start, inclusive. Format: YYYY-MM-DD. |
| toreq | string | UTC date end, inclusive. Format: YYYY-MM-DD. Must be ≥ from. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | number | Page size. Default 500, max 5000. |
| offset | number | Zero-based row offset applied after sort. Default 0. |
| sort | string | Sort bars by timestamp t before pagination. asc or desc (default desc). |
Request
curl -sS "https://api.tickerlayer.com/indices/agg/EU50/1/day/2025-11-01/2025-11-30?sort=desc&limit=2" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbol": "EU50",
"results_count": 2,
"results": [
{ "o": 5950.0, "h": 5980.0, "l": 5930.0, "c": 5965.0, "v": null, "t": 1733011200000 },
{ "o": 5920.0, "h": 5945.0, "l": 5905.0, "c": 5935.0, "v": null, "t": 1732924800000 }
],
"next_offset": 2
}vmay be null when no consolidated volume exists for that interval.- Same supported intervals and max calendar windows as stocks aggregates.
WebSocket Streaming
Stream live quotes and trades for this asset class over the public WebSocket.
wss://stream.tickerlayer.com/?apiKey=<YOUR_API_KEY>Available channels
Subscribe example
After the connection is ready, send a JSON text frame:
{
"action": "subscribe",
"channels": [
"indices.quotes",
"indices.trades"
],
"symbols": [
"US500",
"DE40"
]
}Example message
{
"type": "quote",
"channel": "indices.quotes",
"asset": "indices",
"symbol": "US500",
"bid": 4788.12,
"ask": 4788.12,
"bid_size": 62,
"ask_size": 58,
"ts": 1743512400000,
"timestamp": 1743512400000
}General WebSocket documentation
For authentication, subscribe/unsubscribe lifecycle, errors, limits, and heartbeats, see the WebSocket overview and Subscriptions.