curl --request POST \
--url https://api.messari.io/ai/openai/chat/completions \
--header 'Content-Type: application/json' \
--header 'X-Messari-API-Key: <api-key>' \
--data '
{
"model": "messari",
"messages": [
{
"role": "user",
"content": "What is Solana?"
}
]
}
'import requests
url = "https://api.messari.io/ai/openai/chat/completions"
payload = {
"model": "messari",
"messages": [
{
"role": "user",
"content": "What is Solana?"
}
]
}
headers = {
"X-Messari-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Messari-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'messari', messages: [{role: 'user', content: 'What is Solana?'}]})
};
fetch('https://api.messari.io/ai/openai/chat/completions', 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/ai/openai/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'messari',
'messages' => [
[
'role' => 'user',
'content' => 'What is Solana?'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.messari.io/ai/openai/chat/completions"
payload := strings.NewReader("{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Messari-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.messari.io/ai/openai/chat/completions")
.header("X-Messari-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/ai/openai/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Messari-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "b72679d2-2144-41f1-9a15-252df2f264b3",
"object": "chat.completion",
"created": 1762276239,
"model": "messari-ai",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "# Solana Overview\n\nSolana is a Layer-1 blockchain network designed to provide a highly scalable infrastructure for decentralized applications (dapps). Its primary goal is to minimize performance constraints, such as transaction throughput limitations and high costs, typically faced by developers on other networks.\n\n## Core Features and Technology\n\nSolana is optimized for speed and efficiency, aiming to achieve high throughput without relying on second-layer or off-chain technologies.\n\n* **Scalability and Throughput:** Solana uses a Proof of Stake (PoS) consensus mechanism combined with a unique innovation called Tower Consensus. This design allows the network to handle a high volume of transactions, with the capacity to process up to 710,000 transactions per second (TPS) at peak load.\n* **Developer Support:** The network supports all LLVM-compatible smart contract languages, offering flexibility for developers.\n* **Transaction Efficiency:** Solana is designed for sub-second settlement times and low transaction costs.\n* **Token Extensions:** Developers launching SPL tokens on Solana can utilize various token extensions, such as Confidential Transfers, which hides transaction amounts to protect user balance confidentiality during transfers.\n\n## The SOL Token\n\nThe native token of the Solana network is **SOL**, which was launched alongside the Mainnet Beta in March 2020.\n\n* **Transaction Fees:** Users pay fees in SOL for sending transactions and executing smart contracts. These fees include a static base fee plus a variable fee based on the computational resources used. Users can also include an optional \"prioritization fee\" to expedite transaction processing.\n* **Staking and Governance:** SOL is also used for staking to secure the network and for on-chain governance.\n\n## Ecosystem and Use Cases\n\nSolana's infrastructure supports various applications and services, including:\n\n* **Decentralized Finance (DeFi):** Projects like Ellipsis Labs' Phoenix, a spot limit order book implementation, are built on Solana to create efficient and scalable DeFi liquidity primitives.\n* **Payments (Solana Pay):** Solana Pay is a protocol for payments that uses the blockchain to create new commerce rails for merchants, enabling secure payments without intermediaries.\n* **Gaming and Customer Engagement:** Services like GameShift streamline the integration of Web3 features into games, handling interactions with Solana for self-custodied game assets and abstracted transaction fees. Bond is another platform powered by Solana designed to boost customer engagement for brands through digital collectibles, authentication, and loyalty programs.\n\n## Recent Market Sentiment\n\nRecent market activity suggests a strong institutional interest in Solana, contrasting with other major cryptocurrencies:\n\n* **ETF Inflows:** In early November 2025, Solana ETFs attracted significant investment, totaling **$421 million in inflows** for the week. This was driven by the successful launch of new U.S.-based funds, such as Bitwise's Solana ETF, which reached $105 million in assets under management in its first week.\n* **Market Divergence:** This surge in Solana investment occurred while Bitcoin and Ethereum products experienced significant outflows, indicating a divergence in institutional capital allocation. Solana's year-to-date inflows reached $3.3 billion.\n\n## Company Background\n\nSolana was founded in **2017** and is headquartered in San Francisco, CA. The company has raised a total of **$335 million** in funding."
},
"finish_reason": "stop"
}
],
"metadata": {
"status": "Completed",
"trace_id": "b72679d2-2144-41f1-9a15-252df2f264b3",
"sources": [
{
"domain": "asset_profile",
"url": "https://messari.io/asset/solana"
},
{
"domain": "diligence",
"title": "Diligence Report: General Information",
"url": "https://messari.io/asset/solana/diligence-report#general_information"
},
{
"domain": "diligence",
"title": "Diligence Report: Token Economics",
"url": "https://messari.io/asset/solana/diligence-report#token_usage_and_economics"
},
{
"domain": "research_image",
"title": "Solana Ecosystem Overview",
"url": "https://cdn.sanity.io/images/2bt0j8lu/production/10299763330e60bae0a812764da7cbd1c3e3d153-1940x976.png?w=800"
},
{
"domain": "research_image",
"title": "Solana Deep Dive: Reframing The Narrative",
"url": "https://cdn.sanity.io/images/2bt0j8lu/production/7a725362c19ddb5f7b089a68dcc13d416fa6726d-2782x1508.png?w=800"
},
{
"domain": "news",
"title": "What Is Solana? A Scalable, Decentralized Network for Dapps",
"url": "https://decrypt.co/resources/what-is-solana-a-scalable-decentralized-network-for-dapps"
},
{
"domain": "trending_topic",
"title": "Warden Protocol's $900K Mindshare Leaderboard Launch",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Wintermute Denies Binance Lawsuit Rumors Amid CZ's ASTER Investment",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Wallchain's Quack Reward System and Project Campaigns",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Billion-Dollar Liquidation Cascade",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "ETF Flow Divergence: Bitcoin Outflows vs Solana Surge",
"url": "https://messari.io/topics"
},
{
"domain": "webcrawl",
"url": "https://www.kraken.com/prices/solana"
},
{
"domain": "webcrawl",
"title": "Solana Company Profile 2025: Valuation, Funding & Investors | PitchBook",
"url": "https://pitchbook.com/profiles/company/227820-52"
},
{
"domain": "webcrawl",
"title": "Solana - Products, Competitors, Financials, Employees, Headquarters Locations",
"url": "https://www.cbinsights.com/company/solana-labs"
},
{
"domain": "webcrawl",
"title": "There are no bad questions about... blockchain payments | Solana",
"url": "https://solana.com/learn/payments"
}
]
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}Chat Completion - OpenAI Format
The MessariAI API’s Chat Completion endpoint is used for generating contextual crypto responses using Messari’s knowledge graph and specialized tools.
curl --request POST \
--url https://api.messari.io/ai/openai/chat/completions \
--header 'Content-Type: application/json' \
--header 'X-Messari-API-Key: <api-key>' \
--data '
{
"model": "messari",
"messages": [
{
"role": "user",
"content": "What is Solana?"
}
]
}
'import requests
url = "https://api.messari.io/ai/openai/chat/completions"
payload = {
"model": "messari",
"messages": [
{
"role": "user",
"content": "What is Solana?"
}
]
}
headers = {
"X-Messari-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Messari-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({model: 'messari', messages: [{role: 'user', content: 'What is Solana?'}]})
};
fetch('https://api.messari.io/ai/openai/chat/completions', 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/ai/openai/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'messari',
'messages' => [
[
'role' => 'user',
'content' => 'What is Solana?'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.messari.io/ai/openai/chat/completions"
payload := strings.NewReader("{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Messari-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.messari.io/ai/openai/chat/completions")
.header("X-Messari-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.messari.io/ai/openai/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Messari-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"messari\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What is Solana?\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "b72679d2-2144-41f1-9a15-252df2f264b3",
"object": "chat.completion",
"created": 1762276239,
"model": "messari-ai",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "# Solana Overview\n\nSolana is a Layer-1 blockchain network designed to provide a highly scalable infrastructure for decentralized applications (dapps). Its primary goal is to minimize performance constraints, such as transaction throughput limitations and high costs, typically faced by developers on other networks.\n\n## Core Features and Technology\n\nSolana is optimized for speed and efficiency, aiming to achieve high throughput without relying on second-layer or off-chain technologies.\n\n* **Scalability and Throughput:** Solana uses a Proof of Stake (PoS) consensus mechanism combined with a unique innovation called Tower Consensus. This design allows the network to handle a high volume of transactions, with the capacity to process up to 710,000 transactions per second (TPS) at peak load.\n* **Developer Support:** The network supports all LLVM-compatible smart contract languages, offering flexibility for developers.\n* **Transaction Efficiency:** Solana is designed for sub-second settlement times and low transaction costs.\n* **Token Extensions:** Developers launching SPL tokens on Solana can utilize various token extensions, such as Confidential Transfers, which hides transaction amounts to protect user balance confidentiality during transfers.\n\n## The SOL Token\n\nThe native token of the Solana network is **SOL**, which was launched alongside the Mainnet Beta in March 2020.\n\n* **Transaction Fees:** Users pay fees in SOL for sending transactions and executing smart contracts. These fees include a static base fee plus a variable fee based on the computational resources used. Users can also include an optional \"prioritization fee\" to expedite transaction processing.\n* **Staking and Governance:** SOL is also used for staking to secure the network and for on-chain governance.\n\n## Ecosystem and Use Cases\n\nSolana's infrastructure supports various applications and services, including:\n\n* **Decentralized Finance (DeFi):** Projects like Ellipsis Labs' Phoenix, a spot limit order book implementation, are built on Solana to create efficient and scalable DeFi liquidity primitives.\n* **Payments (Solana Pay):** Solana Pay is a protocol for payments that uses the blockchain to create new commerce rails for merchants, enabling secure payments without intermediaries.\n* **Gaming and Customer Engagement:** Services like GameShift streamline the integration of Web3 features into games, handling interactions with Solana for self-custodied game assets and abstracted transaction fees. Bond is another platform powered by Solana designed to boost customer engagement for brands through digital collectibles, authentication, and loyalty programs.\n\n## Recent Market Sentiment\n\nRecent market activity suggests a strong institutional interest in Solana, contrasting with other major cryptocurrencies:\n\n* **ETF Inflows:** In early November 2025, Solana ETFs attracted significant investment, totaling **$421 million in inflows** for the week. This was driven by the successful launch of new U.S.-based funds, such as Bitwise's Solana ETF, which reached $105 million in assets under management in its first week.\n* **Market Divergence:** This surge in Solana investment occurred while Bitcoin and Ethereum products experienced significant outflows, indicating a divergence in institutional capital allocation. Solana's year-to-date inflows reached $3.3 billion.\n\n## Company Background\n\nSolana was founded in **2017** and is headquartered in San Francisco, CA. The company has raised a total of **$335 million** in funding."
},
"finish_reason": "stop"
}
],
"metadata": {
"status": "Completed",
"trace_id": "b72679d2-2144-41f1-9a15-252df2f264b3",
"sources": [
{
"domain": "asset_profile",
"url": "https://messari.io/asset/solana"
},
{
"domain": "diligence",
"title": "Diligence Report: General Information",
"url": "https://messari.io/asset/solana/diligence-report#general_information"
},
{
"domain": "diligence",
"title": "Diligence Report: Token Economics",
"url": "https://messari.io/asset/solana/diligence-report#token_usage_and_economics"
},
{
"domain": "research_image",
"title": "Solana Ecosystem Overview",
"url": "https://cdn.sanity.io/images/2bt0j8lu/production/10299763330e60bae0a812764da7cbd1c3e3d153-1940x976.png?w=800"
},
{
"domain": "research_image",
"title": "Solana Deep Dive: Reframing The Narrative",
"url": "https://cdn.sanity.io/images/2bt0j8lu/production/7a725362c19ddb5f7b089a68dcc13d416fa6726d-2782x1508.png?w=800"
},
{
"domain": "news",
"title": "What Is Solana? A Scalable, Decentralized Network for Dapps",
"url": "https://decrypt.co/resources/what-is-solana-a-scalable-decentralized-network-for-dapps"
},
{
"domain": "trending_topic",
"title": "Warden Protocol's $900K Mindshare Leaderboard Launch",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Wintermute Denies Binance Lawsuit Rumors Amid CZ's ASTER Investment",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Wallchain's Quack Reward System and Project Campaigns",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "Billion-Dollar Liquidation Cascade",
"url": "https://messari.io/topics"
},
{
"domain": "trending_topic",
"title": "ETF Flow Divergence: Bitcoin Outflows vs Solana Surge",
"url": "https://messari.io/topics"
},
{
"domain": "webcrawl",
"url": "https://www.kraken.com/prices/solana"
},
{
"domain": "webcrawl",
"title": "Solana Company Profile 2025: Valuation, Funding & Investors | PitchBook",
"url": "https://pitchbook.com/profiles/company/227820-52"
},
{
"domain": "webcrawl",
"title": "Solana - Products, Competitors, Financials, Employees, Headquarters Locations",
"url": "https://www.cbinsights.com/company/solana-labs"
},
{
"domain": "webcrawl",
"title": "There are no bad questions about... blockchain payments | Solana",
"url": "https://solana.com/learn/payments"
}
]
}
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}{
"data": "<unknown>",
"error": "<string>"
}- Access Messari’s real-time quantitative (compute) dataset which includes but is not limited to: Market data, Asset metrics, Fundraising, Token unlocks
- Access Messari’s qualitative (search) dataset which includes but is not limited to: News, Blogs, Youtube transcriptions, RSS-feeds, Twitter, Webcrawl documents, Proprietary datasets of: Research, Quarterlies, Diligence Reports
- Generate market insights and analysis
- Process natural language queries about crypto assets, protocols and projects
API_KEY field with your Enterprise API key generated in the Messari Account > API page of our webapp and you’re off!
Request Params
verbosity
Theverbosity parameter controls the level of detail in the model’s response. When set to "verbose", the model provides more comprehensive and detailed explanations, including additional context, examples, and supporting information. Other possible values might include "balanced" or "succinct" for shorter responses.
Example usage:
{
"verbosity": "verbose"
}
response_format
Theresponse_format parameter specifies the desired formatting style for the model’s response. When set to "markdown", the output will be formatted using Markdown syntax, allowing for structured text with headings, lists, code blocks, and other formatting elements. Other common option might include "text".
Example usage:
{
"response_format": "markdown"
}
inline_citations
Theinline_citations parameter determines whether the response metadata should include citations within its response text. When set to true, the model will reference sources directly in the text where information is being drawn from. This is particularly useful for academic, research, or factual content where attribution is important.
Example usage:
{
"inline_citations": true
}
stream
Thestream parameter controls whether the API response is delivered as a complete response or as a stream of partial responses. When set to false, the API will wait until the entire response is generated and then deliver it in one piece. When set to true, the API would begin sending partial responses as they are generated, useful for implementing real-time typing effects or processing responses incrementally.
Example usage:
{
"stream": false
}
generate_related_questions
Thegenerate_related_questions parameter determines whether the response metadata should include AI-generated related questions to the user query. This feature is useful for receiving follow up questions as part of the API response payload to prompt the user with potential next questions.
Note: A maximum of 5 is allowed.
Example usage:
{
"generate_related_questions": 2
}
Authorizations
Body
Array of messages in the conversation history
Show child attributes
Show child attributes
Whether the AI can ask for clarification when the query is ambiguous
Adds AI generated related questions to use as follow up questions
Adds inline citation document references in the payload metadata
Text format for the response. Values accepted are 'markdown' and 'plaintext'.
Stream the response through the API
Controls the length and detail level of the AI-generated response. Values accepted are 'succinct', 'balanced', and 'verbose'.
Response
Default response
Array of completion choices
Show child attributes
Show child attributes
Unix timestamp when the completion was created
Unique identifier for the completion request
Model used for the completion
Type of object returned, always 'chat.completion'
Additional metadata about the completion
Show child attributes
Show child attributes

