curl --request GET \
--url https://api.gm.ondo.finance/v1/assets/{symbol}/market \
--header 'x-api-key: <api-key>'import requests
url = "https://api.gm.ondo.finance/v1/assets/{symbol}/market"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.gm.ondo.finance/v1/assets/{symbol}/market', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gm.ondo.finance/v1/assets/{symbol}/market",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gm.ondo.finance/v1/assets/{symbol}/market"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gm.ondo.finance/v1/assets/{symbol}/market")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gm.ondo.finance/v1/assets/{symbol}/market")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"primaryMarket": {
"symbol": "ADBEon",
"price": "361.986667",
"priceChange24h": "8.76",
"priceChangePct24h": "2.479993958100564361",
"priceHistory24h": [
{
"timestamp": 1755802800000,
"price": "353.226667"
},
{
"timestamp": 1755803700000,
"price": "353.216667"
},
"..."
],
"totalHolders": 7,
"sharesMultiplier": "1",
"tradableSessions": [
"premarket",
"regular",
"postmarket",
"overnight"
]
},
"underlyingMarket": {
"ticker": "ADBE",
"name": "Adobe Inc.",
"price": "361.986667",
"priceHigh52w": "587.75",
"priceLow52w": "330.04",
"volume": "1851321",
"averageVolume": "3610882",
"sharesOutstanding": "424200000",
"marketCap": "149925006000"
},
"constituentTokens": [],
"timestamp": 1755890061815
}{
"code": "INVALID_SYMBOL",
"message": "invalid symbol; must be at least 3 characters long and end with 'on'",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#invalid_symbol"
}{
"code": "MISSING_API_KEY",
"message": "missing API key",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#missing_api_key"
}{
"code": "ASSET_NOT_FOUND",
"message": "The provided asset symbol does not exist and cannot be found.",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#asset_not_found"
}{
"code": "RATE_LIMITED",
"message": "rate limit exceeded",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#rate_limited"
}{
"code": "INTERNAL_ERROR",
"message": "An internal server error occurred. Please see the returned message and documentation for details.",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#internal_error"
}Get Market Data for an Asset
This endpoint retrieves comprehensive market data for a specific asset, containing both primary market (on-chain token) and underlying market (off-chain stock) information.
Primary market data includes current price, 24-hour price changes, 24-hour historical chart data, and total token holders. Underlying market data provides stock fundamentals like company name, 52-week highs/lows, trading volume, shares outstanding, and market capitalization.
This endpoint is useful for dashboard overviews and market analysis across the entire asset portfolio.
The “Tradable Sessions” parameter indicates the tradability for the asset; for example, some assets are available in the regular and extended stock sessions, but not overnight. Learn more about sessions at Get Current Market Status.
Prices are intended for display only. For real-time trading prices, use the Soft Attestation Quote API. We do not recommend using the price feeds as an oracle for these assets. An official oracle is in development and will be documented when available. For questions, contact support@ondo.finance.
For caching details on this endpoint, please see: Endpoint Caching.
curl --request GET \
--url https://api.gm.ondo.finance/v1/assets/{symbol}/market \
--header 'x-api-key: <api-key>'import requests
url = "https://api.gm.ondo.finance/v1/assets/{symbol}/market"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.gm.ondo.finance/v1/assets/{symbol}/market', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gm.ondo.finance/v1/assets/{symbol}/market",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gm.ondo.finance/v1/assets/{symbol}/market"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gm.ondo.finance/v1/assets/{symbol}/market")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gm.ondo.finance/v1/assets/{symbol}/market")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"primaryMarket": {
"symbol": "ADBEon",
"price": "361.986667",
"priceChange24h": "8.76",
"priceChangePct24h": "2.479993958100564361",
"priceHistory24h": [
{
"timestamp": 1755802800000,
"price": "353.226667"
},
{
"timestamp": 1755803700000,
"price": "353.216667"
},
"..."
],
"totalHolders": 7,
"sharesMultiplier": "1",
"tradableSessions": [
"premarket",
"regular",
"postmarket",
"overnight"
]
},
"underlyingMarket": {
"ticker": "ADBE",
"name": "Adobe Inc.",
"price": "361.986667",
"priceHigh52w": "587.75",
"priceLow52w": "330.04",
"volume": "1851321",
"averageVolume": "3610882",
"sharesOutstanding": "424200000",
"marketCap": "149925006000"
},
"constituentTokens": [],
"timestamp": 1755890061815
}{
"code": "INVALID_SYMBOL",
"message": "invalid symbol; must be at least 3 characters long and end with 'on'",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#invalid_symbol"
}{
"code": "MISSING_API_KEY",
"message": "missing API key",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#missing_api_key"
}{
"code": "ASSET_NOT_FOUND",
"message": "The provided asset symbol does not exist and cannot be found.",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#asset_not_found"
}{
"code": "RATE_LIMITED",
"message": "rate limit exceeded",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#rate_limited"
}{
"code": "INTERNAL_ERROR",
"message": "An internal server error occurred. Please see the returned message and documentation for details.",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#internal_error"
}Authorizations
Path Parameters
The GM token symbol
Response
OK
Show child attributes
Show child attributes
The off-chain stock that backs the token. This is null for tokens that represent several underlying assets rather than a single stock; for those, see constituentTokens. For a token backed by a single stock, this object is populated as shown.
Show child attributes
Show child attributes
GM token symbols of the underlying assets that make up this token, for tokens that represent several underlying assets rather than a single stock. Each symbol can be looked up individually via the market endpoints. For a token backed by a single stock this is an empty array ([]), and underlyingMarket is populated instead.
["AAPLon", "MSFTon", "NVDAon"]
The Unix timestamp in milliseconds when the data was last updated.
1746655938000

