Overview
x402 is an HTTP-native payment protocol that enables pay-per-request API access using USDC on Base Mainnet. With x402, you can access Messari endpoints without a Messari account or API key — simply pay per request with crypto. When to use x402:AI Agents
Autonomous agents that need to query Messari data without managing API keys or subscriptions
Automated Pipelines
Data pipelines that require one-off or sporadic queries billed directly on-chain
One-Off Queries
Quick queries without signing up for an account or committing to a subscription
Supported Endpoints
Endpoint support and pricing can change over time.| Endpoint | Route | Method | Price |
|---|---|---|---|
| MessariAI | |||
| Chat Completion - Messari v2 | /ai/v2/chat/completions | POST | $0.25 per request |
| Assets & Market Data | |||
| List Assets | /metrics/v2/assets | GET | $0.00 per request |
| Get All-Time Highs | /metrics/v2/assets/ath | GET | $0.10 per request |
| Get Asset Details | /metrics/v2/assets/details | GET | $0.10 per request |
| List Metrics | /metrics/v2/assets/metrics | GET | $0.00 per request |
| Get ROIs | /metrics/v2/assets/roi | GET | $0.10 per request |
| Asset Timeseries | /metrics/v2/assets/{assetID}/metrics/{datasetSlug}/time-series/{granularity} | GET | 1h: $0.181d: $0.15 |
| Markets | |||
| Get Markets | /metrics/v1/markets | GET | $0.00 per request |
| Get Market Timeseries Metrics | /metrics/v1/markets/metrics | GET | $0.35 per request |
| Get Market Timeseries | /metrics/v1/markets/{entityIdentifier}/metrics/{datasetSlug}/time-series | GET | $0.75 per request |
| Get Market Timeseries | /metrics/v1/markets/{entityIdentifier}/metrics/{datasetSlug}/time-series/{granularity} | GET | 1h: $1.001d: $0.75 |
| Get Market | /metrics/v1/markets/{marketIdentifier} | GET | $0.35 per request |
| Exchanges | |||
| List Exchanges | /metrics/v1/exchanges | GET | $0.00 per request |
| List Exchanges Metrics | /metrics/v1/exchanges/metrics | GET | $0.35 per request |
| Get Exchange Timeseries | /metrics/v1/exchanges/{entityIdentifier}/metrics/{datasetSlug}/time-series | GET | $0.45 per request |
| Exchange Time Series Metric | /metrics/v1/exchanges/{entityIdentifier}/metrics/{datasetSlug}/time-series/{granularity} | GET | 1h: $0.551d: $0.45 |
| Get Exchange | /metrics/v1/exchanges/{exchangeIdentifier} | GET | $0.35 per request |
| Networks | |||
| Networks | /metrics/v2/networks | GET | $0.00 per request |
| Network Metrics | /metrics/v2/networks/metrics | GET | $0.00 per request |
| Network Time Series | /metrics/v2/networks/{entityIdentifier}/metrics/{datasetSlug}/time-series | GET | $0.15 per request |
| Network Time Series with Granularity | /metrics/v2/networks/{entityIdentifier}/metrics/{datasetSlug}/time-series/{granularity} | GET | 5m: $0.2515m: $0.231h: $0.181d: $0.15 |
| Stablecoins | |||
| List Stablecoins | /metrics/v2/stablecoins | GET | $0.00 per request |
| List Stablecoin Metrics | /metrics/v2/stablecoins/metrics | GET | $0.00 per request |
| Stablecoin Timeseries Metric | /metrics/v2/stablecoins/{entityIdentifier}/metrics/{datasetSlug}/time-series | GET | $0.25 per request |
| Fundraising | |||
| Funds | /funding/v1/funds | GET | $0.35 per request |
| Funds Managers | /funding/v1/funds/managers | GET | $0.25 per request |
| Mergers and Acquisitions | /funding/v1/mergers-and-acquisitions | GET | $0.25 per request |
| Organizations | /funding/v1/organizations | GET | $0.25 per request |
| Projects | /funding/v1/projects | GET | $0.15 per request |
| Rounds | /funding/v1/rounds | GET | $0.15 per request |
| Rounds Investors | /funding/v1/rounds/investors | GET | $0.25 per request |
| News | |||
| News Feed | /news/v1/news/feed | GET | $0.55 per request |
| Get News Sources | /news/v1/news/sources | GET | $0.00 per request |
| Signals | |||
| Assets | /signal/v1/assets | GET | $0.55 per request |
| Mindshare Gainers 24H | /signal/v1/assets/mindshare-gainers-24h | GET | $0.35 per request |
| Mindshare Gainers 7D | /signal/v1/assets/mindshare-gainers-7d | GET | $0.35 per request |
| Mindshare Losers 24H | /signal/v1/assets/mindshare-losers-24h | GET | $0.35 per request |
| Mindshare Losers 7D | /signal/v1/assets/mindshare-losers-7d | GET | $0.35 per request |
| Assets Time Series with Granularity | /signal/v1/assets/time-series/{granularity} | GET | $0.75 per request |
| Asset by ID | /signal/v1/assets/{assetID} | GET | $0.35 per request |
| X Users Listing | /signal/v1/x-users | GET | $0.55 per request |
| X Users Time Series | /signal/v1/x-users/time-series/{granularity} | GET | $0.75 per request |
| X User by Identifier | /signal/v1/x-users/{xUserID} | GET | $0.35 per request |
| Token Unlocks | |||
| Get Allocations | /token-unlocks/v1/allocations | GET | $0.25 per request |
| Get Assets | /token-unlocks/v1/assets | GET | $0.00 per request |
| Get Asset Events | /token-unlocks/v1/assets/{assetId}/events | GET | $0.15 per request |
| Get Asset Unlocks | /token-unlocks/v1/assets/{assetId}/unlocks | GET | $0.75 per request |
| Get Asset Vesting Schedule | /token-unlocks/v1/assets/{assetId}/vesting-schedule | GET | $0.75 per request |
GET https://api.messari.io/.well-known/x402.
Prerequisites
Before making a payment, ensure you have:- An EVM-compatible wallet (e.g. MetaMask, Coinbase Wallet)
- USDC on Base Mainnet — a minimum of ~$1 is recommended to start
- A small amount of ETH on Base Mainnet for gas fees
Bridge to Base
Use bridge.base.org to move USDC from Ethereum or another chain onto Base Mainnet.
How It Works
x402 follows a simple 3-step flow: Step 1: Make a request Send your request to the Messari API without an API key. The gateway responds withHTTP 402 Payment Required along with payment requirements (amount, currency, recipient address, network).
Step 2: Sign & pay
Your x402-enabled client signs a USDC TransferWithAuthorization EIP-3009 message using your wallet’s private key. No gas is required for the authorization itself — the gateway submits the on-chain transaction on your behalf.
Step 3: Request fulfilled
The gateway verifies the signed authorization, collects the USDC payment, and proxies your original request. The API response is returned as normal.
Quick Start (TypeScript)
Install the x402 fetch wrapper:Troubleshooting
“Payment verification failed” Your wallet does not have sufficient USDC on Base Mainnet. Check your balance and ensure you have enough USDC plus a small amount of ETH for gas. “Unsupported network” You must useeip155:8453 (Base Mainnet).
Payment sent but no response received
On-chain confirmation can take ~30 seconds. If you do not receive a response after 60 seconds, check the transaction status on Basescan. If the transaction is confirmed but you still received no response, contact api@messari.io.
