Skip to main content
GET
/
metrics
/
v2
/
assets
/
roi
Get asset ROI
curl --request GET \
  --url https://api.messari.io/metrics/v2/assets/roi \
  --header 'X-Messari-API-Key: <api-key>'
import requests

url = "https://api.messari.io/metrics/v2/assets/roi"

headers = {"X-Messari-API-Key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-Messari-API-Key': '<api-key>'}};

fetch('https://api.messari.io/metrics/v2/assets/roi', 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.messari.io/metrics/v2/assets/roi",
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-Messari-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.messari.io/metrics/v2/assets/roi"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-Messari-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.messari.io/metrics/v2/assets/roi")
.header("X-Messari-API-Key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.messari.io/metrics/v2/assets/roi")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-Messari-API-Key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "error": null,
  "data": [
    {
      "id": "1e31218a-e44e-4285-820c-8282ee222035",
      "name": "Bitcoin",
      "slug": "bitcoin",
      "symbol": "BTC",
      "category": "Cryptocurrency",
      "sector": "Cryptocurrency",
      "tags": [
        "Proof-of-Work"
      ],
      "returnOnInvestment": {
        "priceChange24h": 1.537031626038965,
        "priceChange7d": -1.3831074354356603,
        "priceChange30d": -6.80398769323561,
        "priceChange1y": 55.79069548749654,
        "priceChange3y": 434.7113533742335,
        "priceChange5y": 695.8437840952291,
        "priceChangeMTD": -3.9439734983016552,
        "priceChangeQTD": -3.9439734983016552,
        "priceChangeYTD": 17.281626402277535
      }
    },
    {
      "id": "21c795f5-1bfd-40c3-858e-e9d7e820c6d0",
      "name": "Ethereum",
      "slug": "ethereum",
      "symbol": "ETH",
      "category": "Networks",
      "sector": "Smart Contract Platform",
      "tags": [
        "EVM",
        "Proof-of-Stake",
        "Stakeable"
      ],
      "returnOnInvestment": {
        "priceChange24h": 2.252255092690719,
        "priceChange7d": -2.255033059081572,
        "priceChange30d": -10.48746606148617,
        "priceChange1y": 52.853257934702356,
        "priceChange3y": 143.95766358327145,
        "priceChange5y": 871.6158122354636,
        "priceChangeMTD": -7.019368457253019,
        "priceChangeQTD": -7.019368457253019,
        "priceChangeYTD": 15.821645335568938
      }
    },
    {
      "id": "51f8ea5e-f426-4f40-939a-db7e05495374",
      "name": "Tether",
      "slug": "tether",
      "symbol": "USDT",
      "category": "Cryptocurrency",
      "sector": "Stablecoins",
      "tags": [
        "Centralized Issuer",
        "U.S. Dollar Stablecoin"
      ],
      "returnOnInvestment": {
        "priceChange24h": -0.027687408778266257,
        "priceChange7d": -0.0536431135196321,
        "priceChange30d": -0.048745418763862354,
        "priceChange1y": 0.09077273967697991,
        "priceChange3y": -0.027352763781944876,
        "priceChange5y": -0.08315774803302182,
        "priceChangeMTD": -0.04543658633011934,
        "priceChangeQTD": -0.04543658633011934,
        "priceChangeYTD": 0.1666539488012367
      }
    },
    {
      "id": "97775be0-2608-4720-b7af-f85b24c7eb2d",
      "name": "XRP",
      "slug": "xrp",
      "symbol": "XRP",
      "category": "Financial Services",
      "sector": "Payments",
      "tags": [
        "SEC Alleged Securities"
      ],
      "returnOnInvestment": {
        "priceChange24h": 3.7347032168497254,
        "priceChange7d": 0.3648094328253515,
        "priceChange30d": -14.068210577680478,
        "priceChange1y": 394.06682120746063,
        "priceChange3y": 442.21723139526483,
        "priceChange5y": 948.2245831219691,
        "priceChangeMTD": -11.605099307029146,
        "priceChangeQTD": -11.605099307029146,
        "priceChangeYTD": 21.002401220819863
      }
    },
    {
      "id": "7dc551ba-cfed-4437-a027-386044415e3e",
      "name": "BNB",
      "slug": "binance-coin",
      "symbol": "BNB",
      "category": "Networks",
      "sector": "Smart Contract Platform",
      "tags": [
        "CeFi",
        "Centralized Exchange",
        "Cosmos SDK",
        "EVM",
        "SEC Alleged Securities"
      ],
      "returnOnInvestment": {
        "priceChange24h": 1.5484646718786441,
        "priceChange7d": -2.2243334855019703,
        "priceChange30d": 6.452880922180116,
        "priceChange1y": 88.74843123060649,
        "priceChange3y": 235.09478240327354,
        "priceChange5y": 3710.088490006521,
        "priceChangeMTD": 7.701174310514627,
        "priceChangeQTD": 7.701174310514627,
        "priceChangeYTD": 55.055007541224064
      }
    }
  ]
}
{
"data": "<unknown>",
"error": "<string>"
}
{
"data": "<unknown>",
"error": "<string>"
}
{
"data": "<unknown>",
"error": "<string>"
}
x402 Support: Supported. See the x402 guide.

Authorizations

X-Messari-API-Key
string
header
required

Query Parameters

assetIDs
string

Comma separated list of asset identifiers - accepts slugs (e.g. 'bitcoin') or UUIDs

Example:

"bitcoin,ethereum"

category
string

Filter By Category

sector
string

Filter By Sector

Search by name, symbol, slug, or contract address

limit
integer<int64>

Limit

page
integer<int64>
default:1

Page number (1-indexed)

Example:

1

sort
enum<string>
default:price-change-24h

Column to sort by (default: price-change-24h)

Available options:
name,
slug,
price-change-24h,
price-change-7d,
price-change-30d,
price-change-1y,
price-change-year-to-date,
all-time-high,
all-time-high-percent-down,
breakeven-multiple,
cycle-low-percent-up
order
enum<string>
default:desc

Sort direction: asc or desc (default: desc)

Available options:
asc,
desc

Response

Default response

data
object[]
required
error
string
metadata
object

Pagination metadata