curl --request GET \
--url https://api.gm.ondo.finance/v1/portfolios/{symbol} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.gm.ondo.finance/v1/portfolios/{symbol}"
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/portfolios/{symbol}', 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/portfolios/{symbol}",
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/portfolios/{symbol}"
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/portfolios/{symbol}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gm.ondo.finance/v1/portfolios/{symbol}")
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{
"symbol": "MAG7Xon",
"name": "Ondo Magnificent 7 and Crypto Portfolio",
"description": "The Ondo Magnificent 7 and Crypto Portfolio implements an aggressive growth strategy by pairing the mega-cap technology stocks known as the \"Magnificent Seven\" with leading crypto assets. The portfolio holds an 80% equal-weight allocation to Apple, Microsoft, Alphabet, Amazon, NVIDIA, Meta, and Tesla, with the remaining 20% split between Bitcoin (15%) and Ethereum (5%).",
"category": "thematic",
"modelProvider": "ondo",
"inceptionDate": "2026-08-12T16:35:00Z",
"netAssetsUsd": "1885406.537181",
"dividendYield": "0.00198929",
"afterWithholdingDividendYield": "0.0013925",
"fees": {
"serviceFeeRateBeforeWaiver": "0.0009",
"waiverFraction": "1",
"serviceFeeRateAfterWaiver": "0"
},
"rebalance": {
"frequency": "Quarterly",
"reconstitutionType": "Fixed",
"lastRebalanceDate": "2026-08-12T16:36:00Z"
},
"constituentCount": 9,
"constituents": [
{
"symbol": "AAPLon",
"name": "Apple",
"quantity": "917.20457",
"targetWeight": "0.1143",
"currentWeight": "0.12556912",
"assetClass": "Equities",
"instrumentType": "Stock",
"sectorIndustry": [
"Technology"
],
"addresses": [
{
"networkChainId": "bsc-56",
"address": "0x390a684ef9cade28a7ad0dfa61ab1eb3842618c4",
"decimals": 18
},
{
"networkChainId": "ethereum-1",
"address": "0x14c3abf95cb9c93a8b82c1cdcb76d72cb87b2d4c",
"decimals": 18
},
{
"networkChainId": "solana-900",
"address": "123mYEnRLM2LLYsJW3K6oyYh8uP1fngj732iG638ondo",
"decimals": 9
}
]
},
{
"symbol": "AMZNon",
"name": "Amazon",
"quantity": "905.66388",
"targetWeight": "0.1143",
"currentWeight": "0.10877632",
"assetClass": "Equities",
"instrumentType": "Stock",
"sectorIndustry": [
"Consumer Discretionary"
],
"addresses": [
{
"networkChainId": "bsc-56",
"address": "0x4553cfe1c09f37f38b12dc509f676964e392f8fc",
"decimals": 18
},
{
"networkChainId": "ethereum-1",
"address": "0xbb8774fb97436d23d74c1b882e8e9a69322cfd31",
"decimals": 18
},
{
"networkChainId": "solana-900",
"address": "14Tqdo8V1FhzKsE3W2pFsZCzYPQxxupXRcqw9jv6ondo",
"decimals": 9
}
]
},
"..."
],
"timestamp": 1791469800123
}{
"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": "RESOURCE_NOT_FOUND",
"message": "portfolio not found",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#resource_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"
}{
"code": "INTERNAL_ERROR",
"message": "portfolio data unavailable",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#internal_error"
}Get a Portfolio
This endpoint returns one Ondo Intelligent Portfolio. The response contains the product metadata, net assets, dividend yields, service fee, rebalance data, and constituents of the portfolio.
The response has the same fields as each entry of Get All Portfolios. The response sorts the constituents by symbol.
If the symbol is not an active portfolio, the endpoint returns the RESOURCE_NOT_FOUND error code with status 404. Ondo Stocks symbols, such as AAPLon, also return this error.
Rates, weights, and yields are decimal fractions. For example, "0.0009" is 0.09% and "0.1143" is 11.43%. Dates are RFC 3339 timestamps in UTC.
This endpoint does not return prices. To get the price of a portfolio token, use Get Current Price for an Asset, Get OHLC Data for an Asset, or Get Market Data for an Asset with the portfolio symbol.
For caching details on this endpoint, please see: Endpoint Caching.
curl --request GET \
--url https://api.gm.ondo.finance/v1/portfolios/{symbol} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.gm.ondo.finance/v1/portfolios/{symbol}"
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/portfolios/{symbol}', 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/portfolios/{symbol}",
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/portfolios/{symbol}"
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/portfolios/{symbol}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gm.ondo.finance/v1/portfolios/{symbol}")
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{
"symbol": "MAG7Xon",
"name": "Ondo Magnificent 7 and Crypto Portfolio",
"description": "The Ondo Magnificent 7 and Crypto Portfolio implements an aggressive growth strategy by pairing the mega-cap technology stocks known as the \"Magnificent Seven\" with leading crypto assets. The portfolio holds an 80% equal-weight allocation to Apple, Microsoft, Alphabet, Amazon, NVIDIA, Meta, and Tesla, with the remaining 20% split between Bitcoin (15%) and Ethereum (5%).",
"category": "thematic",
"modelProvider": "ondo",
"inceptionDate": "2026-08-12T16:35:00Z",
"netAssetsUsd": "1885406.537181",
"dividendYield": "0.00198929",
"afterWithholdingDividendYield": "0.0013925",
"fees": {
"serviceFeeRateBeforeWaiver": "0.0009",
"waiverFraction": "1",
"serviceFeeRateAfterWaiver": "0"
},
"rebalance": {
"frequency": "Quarterly",
"reconstitutionType": "Fixed",
"lastRebalanceDate": "2026-08-12T16:36:00Z"
},
"constituentCount": 9,
"constituents": [
{
"symbol": "AAPLon",
"name": "Apple",
"quantity": "917.20457",
"targetWeight": "0.1143",
"currentWeight": "0.12556912",
"assetClass": "Equities",
"instrumentType": "Stock",
"sectorIndustry": [
"Technology"
],
"addresses": [
{
"networkChainId": "bsc-56",
"address": "0x390a684ef9cade28a7ad0dfa61ab1eb3842618c4",
"decimals": 18
},
{
"networkChainId": "ethereum-1",
"address": "0x14c3abf95cb9c93a8b82c1cdcb76d72cb87b2d4c",
"decimals": 18
},
{
"networkChainId": "solana-900",
"address": "123mYEnRLM2LLYsJW3K6oyYh8uP1fngj732iG638ondo",
"decimals": 9
}
]
},
{
"symbol": "AMZNon",
"name": "Amazon",
"quantity": "905.66388",
"targetWeight": "0.1143",
"currentWeight": "0.10877632",
"assetClass": "Equities",
"instrumentType": "Stock",
"sectorIndustry": [
"Consumer Discretionary"
],
"addresses": [
{
"networkChainId": "bsc-56",
"address": "0x4553cfe1c09f37f38b12dc509f676964e392f8fc",
"decimals": 18
},
{
"networkChainId": "ethereum-1",
"address": "0xbb8774fb97436d23d74c1b882e8e9a69322cfd31",
"decimals": 18
},
{
"networkChainId": "solana-900",
"address": "14Tqdo8V1FhzKsE3W2pFsZCzYPQxxupXRcqw9jv6ondo",
"decimals": 9
}
]
},
"..."
],
"timestamp": 1791469800123
}{
"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": "RESOURCE_NOT_FOUND",
"message": "portfolio not found",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#resource_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"
}{
"code": "INTERNAL_ERROR",
"message": "portfolio data unavailable",
"documentation": "https://docs.ondo.finance/api-reference/error-codes#internal_error"
}Authorizations
Path Parameters
The portfolio token symbol
Response
OK
The portfolio token symbol.
"MAG7Xon"
The name of the portfolio.
"Ondo Magnificent 7 and Crypto Portfolio"
The USD value of the constituents that the portfolio holds, represented as a string-encoded decimal with up to 6 digits after the decimal point. The value is the sum of each constituent quantity multiplied by its token price. It does not include cash from mints and redemptions that are not yet settled. For this reason, it can be slightly different from the token price multiplied by the total supply. If the portfolio has no supply, the value is "0".
"1885406.537181"
The dividend yield of the portfolio, represented as a string-encoded decimal with up to 8 digits after the decimal point. ("0.05" is the equivalent of 5%) The value is the average of the constituent dividend yields, weighted by currentWeight. The dividend yield of a constituent is the sum of its cash dividends paid in the last 365 days, divided by the current stock price. A constituent without dividends adds zero.
"0.00198929"
The dividend yield of the portfolio after estimated withholding tax, represented as a string-encoded decimal with up to 8 digits after the decimal point. This value uses the same calculation as dividendYield, but it first subtracts the withholding tax from each dividend. For more information, see Fees & Taxes.
"0.0013925"
The annual service fee of the portfolio. The value is null if no fee data is available. For more information, see Fees & Taxes.
Show child attributes
Show child attributes
The rebalance data of the portfolio. The value is null if no rebalance data is available. For more information, see Rebalancing & Reconstitution.
Show child attributes
Show child attributes
The number of constituents in constituents.
9
The constituents of the portfolio, sorted by symbol.
Show child attributes
Show child attributes
The Unix timestamp in milliseconds when the API last refreshed the data of this portfolio. Each portfolio has its own timestamp.
1791469800123
A description of the portfolio strategy. The response omits this field if no description is available.
"The Ondo Magnificent 7 and Crypto Portfolio implements an aggressive growth strategy ..."
The category of the portfolio, for example thematic, income, or allocation. The value is free text, not a fixed list. The response omits this field if no category is available.
"thematic"
The model provider that develops the portfolio strategy, for example ondo or blackrock. The value is free text, not a fixed list. The response omits this field if no model provider is available.
"ondo"
The inception date of the portfolio, as an RFC 3339 timestamp in UTC. The response omits this field if no inception date is available.
"2026-08-12T16:35:00Z"

