Skip to main content

Oracle Prices

REST endpoints for oracle information.

Use this page for public price and token reads. For workflow guidance across REST, GraphQL, and SDK surfaces, start with the API integration guide.

Ping

Use the ping endpoint to check whether the oracle API is healthy. The endpoint verifies database connectivity and returns a JSON response.

NetworkURL
Arbitrumhttps://arbitrum-api.gmxinfra.io/ping
Avalanchehttps://avalanche-api.gmxinfra.io/ping
Botanixhttps://botanix-api.gmxinfra.io/ping

Success response (200 OK):

{ "ok": true }

Error response (500 Internal Server Error):

{ "errors": ["db is unavailable"] }

Tickers

The tickers endpoint returns the latest price data for all supported tokens. Use this endpoint for real-time price display in your application.

NetworkURL
Arbitrumhttps://arbitrum-api.gmxinfra.io/prices/tickers
Avalanchehttps://avalanche-api.gmxinfra.io/prices/tickers
Botanixhttps://botanix-api.gmxinfra.io/prices/tickers

Response — an array of ticker objects:

[
{
"tokenSymbol": "ETH",
"tokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
"minPrice": "1799910000000000000000000000000000",
"maxPrice": "1800090000000000000000000000000000",
"medianPrice": "1800000000000000000000000000000000",
"oracleDecimals": 8,
"updatedAt": 1708956120
}
]

Prices are represented as strings scaled to 30 decimal places. Divide by 10^(30 - tokenDecimals - oracleDecimals) to get the USD price.

Signed prices

The signed prices endpoint returns the latest oracle-signed price data for each supported token. Include these signed prices in your transaction payloads when interacting with GMX contracts on-chain.

NetworkURL
Arbitrumhttps://arbitrum-api.gmxinfra.io/signed_prices/latest
Avalanchehttps://avalanche-api.gmxinfra.io/signed_prices/latest
Botanixhttps://botanix-api.gmxinfra.io/signed_prices/latest

Response:

{
"signedPrices": [
{
"tokenSymbol": "ETH",
"tokenAddress": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
"minPrice": "1799910000000000000000000000000000",
"maxPrice": "1800090000000000000000000000000000",
"medianPrice": "1800000000000000000000000000000000",
"oracleDecimals": 8,
"signer": "0xabc...def",
"signature": "0x...",
"signatureWithoutBlockHash": "0x...",
"tokenOracleType": 0,
"salt": "0x...",
"minBlockNumber": 123456789,
"minBlockTimestamp": 1708956000,
"minBlockHash": "0x...",
"maxBlockNumber": 123456799,
"maxBlockTimestamp": 1708956120,
"maxBlockHash": "0x...",
"createdAt": 1708956120.5
}
]
}

Candlesticks

The candlesticks endpoint returns OHLC price data for a given token and time period. Candles are returned in descending order (most recent first).

NetworkBase URL
Arbitrumhttps://arbitrum-api.gmxinfra.io/prices/candles
Avalanchehttps://avalanche-api.gmxinfra.io/prices/candles
Botanixhttps://botanix-api.gmxinfra.io/prices/candles

Required query parameters:

  • tokenSymbol — the token symbol, for example ETH or BTC
  • period — one of 1m, 5m, 15m, 1h, 4h, or 1d

Optional query parameters:

  • limit — maximum number of candles to return. Defaults to 1000. Minimum: 1. Maximum: 10000.

Example request:

GET https://arbitrum-api.gmxinfra.io/prices/candles?tokenSymbol=ETH&period=1d&limit=2

Response:

{
"period": "1d",
"candles": [
[1701388800, 2150.25, 2180.5, 2145.0, 2175.3],
[1701302400, 2120.1, 2155.0, 2110.0, 2150.25]
]
}

Each candle is an array of five values in this order:

  1. timestamp — Unix timestamp (seconds) of the candle period start
  2. open — opening price
  3. high — highest price during the period
  4. low — lowest price during the period
  5. close — closing price

Tokens

The tokens endpoint returns a list of all tokens supported by the oracle on a given network.

NetworkURL
Arbitrumhttps://arbitrum-api.gmxinfra.io/tokens
Avalanchehttps://avalanche-api.gmxinfra.io/tokens
Botanixhttps://botanix-api.gmxinfra.io/tokens

Operational notes

  • /prices/tickers, /signed_prices/latest, and /prices/candles use a 10 second route timeout in the current oracle-keeper implementation.
  • /prices/tickers uses a short in-process cache of 0.3 seconds in the current implementation.
  • /signed_prices/latest is cached for 1 second in the current implementation.
  • /prices/candles is cached for 15 seconds for 1m and 5m periods, and 60 seconds for larger periods.
  • /tokens returns the configured token list for the network. If you need richer token data with current prices, use API v2 or SDK v2, which read from /tokens/info.
  • If you need retries or fallback behavior, implement that in your app. These docs do not publish a public SLA.