curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/dats \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/dats"
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/protocols/dats', 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/protocols/dats",
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/protocols/dats"
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/protocols/dats")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/dats")
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": {
"data": [
{
"id": "MSTR",
"name": "Strategy",
"slug": "micro-strategy",
"projectId": "86eb6499-1feb-46c1-8d28-31a46defbe41",
"asOfTime": 1787270400,
"holdings": {
"assetSymbols": [
"btc"
],
"count": 1
},
"treasury": {
"price": 119.881,
"volumeUsd": 5558195938.4706745,
"outstandingShares": 398417522,
"marketCap": 47762690954.882,
"enterpriseValue": 64087573973.532005,
"fullyDilutedShares": 401295000,
"fullyDilutedValuation": 48107645895,
"fullyDilutedEnterpriseValue": 64432528913.65,
"cash": 2550000000,
"debt": 6770777000,
"preferredMarketCap": 12104106018.65,
"nav": 61434612466.19795,
"outstandingMnav": 0.7774557214170041,
"fullyDilutedMnav": 0.7830707147614774,
"outstandingEvMnav": 1.0431834986961745,
"fullyDilutedEvMnav": 1.048798492040648
}
},
{
"id": "BMNR",
"name": "BitMine",
"slug": "bitmine",
"projectId": "380a2cf4-1237-4ae4-80b2-747423edbb18",
"asOfTime": 1787270400,
"holdings": {
"assetSymbols": [
"btc",
"eth"
],
"count": 2
},
"treasury": {
"price": 22.6922,
"volumeUsd": 1350045438.3081183,
"outstandingShares": 603226394,
"marketCap": 13688533977.9268,
"enterpriseValue": 13134749977.9268,
"fullyDilutedShares": 606333508,
"fullyDilutedValuation": 13759041230.2376,
"fullyDilutedEnterpriseValue": 13205257230.2376,
"cash": 555000000,
"debt": 1216000,
"preferredMarketCap": null,
"nav": 13545556338.759651,
"outstandingMnav": 1.0105553168575312,
"fullyDilutedMnav": 1.0157605111328707,
"outstandingEvMnav": 0.969672241541135,
"fullyDilutedEvMnav": 0.9748774358164745
}
}
],
"metadata": {
"pageSize": 100,
"page": 1,
"totalRows": 43,
"totalPages": 1
}
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}List DATs
Returns one row per digital asset treasury (DAT) company, each with the assets it holds and its latest treasury values. A DAT is a public company holding crypto on its balance sheet, and its id is its stock ticker (for example MSTR). The holdings summary lists which assets the company holds, so you can see the by-asset coverage before calling the holdings endpoints. Latest values are read from the most recent point in the last 30 days; a company that reported nothing in that window returns nulls and a null asOfTime.
curl --request GET \
--url https://api.messari.io/metrics/v2/protocols/dats \
--header 'X-Messari-API-Key: <api-key>'import requests
url = "https://api.messari.io/metrics/v2/protocols/dats"
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/protocols/dats', 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/protocols/dats",
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/protocols/dats"
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/protocols/dats")
.header("X-Messari-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/metrics/v2/protocols/dats")
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": {
"data": [
{
"id": "MSTR",
"name": "Strategy",
"slug": "micro-strategy",
"projectId": "86eb6499-1feb-46c1-8d28-31a46defbe41",
"asOfTime": 1787270400,
"holdings": {
"assetSymbols": [
"btc"
],
"count": 1
},
"treasury": {
"price": 119.881,
"volumeUsd": 5558195938.4706745,
"outstandingShares": 398417522,
"marketCap": 47762690954.882,
"enterpriseValue": 64087573973.532005,
"fullyDilutedShares": 401295000,
"fullyDilutedValuation": 48107645895,
"fullyDilutedEnterpriseValue": 64432528913.65,
"cash": 2550000000,
"debt": 6770777000,
"preferredMarketCap": 12104106018.65,
"nav": 61434612466.19795,
"outstandingMnav": 0.7774557214170041,
"fullyDilutedMnav": 0.7830707147614774,
"outstandingEvMnav": 1.0431834986961745,
"fullyDilutedEvMnav": 1.048798492040648
}
},
{
"id": "BMNR",
"name": "BitMine",
"slug": "bitmine",
"projectId": "380a2cf4-1237-4ae4-80b2-747423edbb18",
"asOfTime": 1787270400,
"holdings": {
"assetSymbols": [
"btc",
"eth"
],
"count": 2
},
"treasury": {
"price": 22.6922,
"volumeUsd": 1350045438.3081183,
"outstandingShares": 603226394,
"marketCap": 13688533977.9268,
"enterpriseValue": 13134749977.9268,
"fullyDilutedShares": 606333508,
"fullyDilutedValuation": 13759041230.2376,
"fullyDilutedEnterpriseValue": 13205257230.2376,
"cash": 555000000,
"debt": 1216000,
"preferredMarketCap": null,
"nav": 13545556338.759651,
"outstandingMnav": 1.0105553168575312,
"fullyDilutedMnav": 1.0157605111328707,
"outstandingEvMnav": 0.969672241541135,
"fullyDilutedEvMnav": 0.9748774358164745
}
}
],
"metadata": {
"pageSize": 100,
"page": 1,
"totalRows": 43,
"totalPages": 1
}
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}Authorizations
Query Parameters
Page number (1-indexed)
1
Page size limit
100
Column to sort by
name, id, market-cap, nav, enterprise-value, fully-diluted-valuation, outstanding-mnav, price, volume-usd "market-cap"
Sort direction
asc, desc "desc"
Match against ticker, name or slug. Case-insensitive.
"strategy"
Only companies holding this asset, by ticker symbol (for example btc). Case-insensitive.
"btc"

