Feed updates
Commodities.GON6/USDremovedCrypto.NAV.XHYPE/USDCwent liveEquity.US.SKHYV/USDwent liveCrypto.MUX/USDwent liveCrypto.AMZNX/USDwent liveCrypto.MSFTX/USDwent liveCommodities.GOV6/USDwent liveCrypto.SEDA/USDwent liveCrypto.MMT/USDwent liveCrypto.LMTS/USDwent liveCrypto.USELESS/USDwent liveCrypto.USOL/USDwent liveCrypto.SPK/USDwent liveCrypto.UETH/USDwent live
View all
Developer Hub

History API

Historical price data, OHLC candlesticks, and TradingView integration

Base URL

https://pyth.dourolabs.app/v1

All {channel} path segments refer to a price channel (e.g. real_time, fixed_rate@200ms).

The /{channel}/... endpoints conform to the TradingView UDF specification, allowing you to connect TradingView charting UIs directly to this API.

API key required starting July 24, 2026

Starting July 24, 2026, GET /{channel}/price and GET /{channel}/history require API-key authentication, and unauthenticated access to them will be disabled. API-key auth is supported today, so add the Authorization: Bearer <PRO_API_KEY> header now to stay forward-compatible. See Authentication for the header format and frontend-safe guidance. See the announcement for details.

Endpoints

MethodPathAuthDescription
GET/liveNoHealth check
GET/symbolsNoList available symbols
GET/{channel}/priceYes (from July 24, 2026)Price at a specific timestamp
GET/{channel}/historyYes (from July 24, 2026)OHLC candlestick data
GET/{channel}/searchNoSearch symbols
GET/{channel}/symbolsNoResolve a single symbol
GET/{channel}/streamingNoSSE price stream
GET/{channel}/configNoTradingView configuration
GET/publisher_updatesYesRaw publisher updates

GET /symbols

List all available price feed symbols, optionally filtered.

Query Parameters

ParameterTypeRequiredDescription
querystringNoText filter for symbol names
asset_typestringNoFilter by asset type: crypto, fx, equity, metal, rates, nav, commodity, funding-rate

GET /{channel}/price

Returns price data at a specific historical timestamp.

Query Parameters

ParameterTypeRequiredDescriptionExample
idsnumber[]YesPrice feed IDs1,2
timestampnumberYesUnix timestamp in microseconds1704067200000000

GET /{channel}/history

Returns OHLC candlestick data in TradingView format.

Query Parameters

ParameterTypeRequiredDescriptionExample
symbolstringYesTrading pair symbol (case-insensitive)BTC/USD
fromnumberYesStart timestamp (Unix seconds)1704067200
tonumberYesEnd timestamp (Unix seconds)1704153600
resolutionstringYesCandle resolution (see below)60

Available Resolutions

ResolutionDescription
11 minute
22 minutes
55 minutes
1515 minutes
3030 minutes
601 hour
1202 hours
2404 hours
3606 hours
72012 hours
D1 day
W1 week
M1 month

Response Schema

FieldTypeDescription
sstringStatus: ok or error
tnumber[]Unix timestamps (seconds)
onumber[]Open prices
hnumber[]High prices
lnumber[]Low prices
cnumber[]Close prices
vnumber[]Volumes (if available)

Arrays are aligned by index — t[0], o[0], h[0], l[0], c[0] represent the same candle.


GET /{channel}/search

Search for symbols by name and type.

Query Parameters

ParameterTypeRequiredDescription
querystringYesSearch text
typestringYesAsset type filter
exchangestringYesExchange name (default: "PYTH")
limitnumberYesMax results (default: 15)

GET /{channel}/symbols

Resolve a single symbol to its full configuration.

Query Parameters

ParameterTypeRequiredDescription
symbolstringYesSymbol name (case-insensitive)

GET /{channel}/streaming

Server-sent events (SSE) stream of live price updates.


GET /{channel}/config

Returns TradingView-compatible configuration including supported resolutions and data capabilities.


GET /publisher_updates

Returns raw publisher price updates. Requires authentication.

Query Parameters

ParameterTypeRequiredDescription
price_feed_idnumber[]NoFilter by price feed IDs
min_timestampstringNoISO 8601 start time (default: 7 days ago)
max_timestampstringNoISO 8601 end time
sortstringYes"Ascending" or "Descending"
limitnumberNoMax results, 1–10000 (default: 15)

Authentication

Starting July 24, 2026, GET /{channel}/price and GET /{channel}/history require API-key authentication, and unauthenticated access to them will be disabled. Pass your Pro API key as a bearer token:

curl -H "Authorization: Bearer $PRO_API_KEY" \
  "https://pyth.dourolabs.app/v1/fixed_rate@200ms/price?ids=1&timestamp=1704067200000000"

Do not embed your Pro API key in frontend or browser applications. The key must stay server-side. Route requests through your own backend, which injects the Authorization header before forwarding to this API. A client-safe JWT authentication option is available for teams that do not want to run their own proxy.

See Acquire an API Key to obtain a key.

JWT Authentication

While routing requests through your own backend is the preferred approach, a JWT-based solution is also available. To use this option:

  1. A browser client needs to ask its backend for a JWT.
  2. If the client backend doesn't already have a valid JWT cached, it calls POST /auth/token, using its actual (secret) API key.
  3. The backend returns this JWT to the frontend.
  4. The frontend uses this JWT as a bearer token (i.e., as an Authorization: Bearer ... header, just like backend clients do with API keys) to perform authenticated calls to the Pyth API service.

Note that JWT tokens are short-lived. Clients should inspect the token's expiration time and periodically refresh their tokens.

Backends should protect their own token-providing endpoint against abuse, e.g. by requiring their own authentication or with rate limits. API usage via JWTs counts against the usage limit of the API key used to mint the JWT.

See /auth/token for details on how to call the mint token endpoint.

OpenAPI Schema

The full OpenAPI specification is available at:

On this page