# Messari ROI Snapshots

> Messari ROI Snapshots is a paid API for AI agents from api.messari.io, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-10).

Returns multi-window return-on-investment (ROI) snapshots for one or more cryptocurrency assets.

## Facts

- Endpoint: GET https://api.messari.io/metrics/v2/assets/roi?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/api-messari-io-0a7e8000
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_7b3zARdDFVs42Yg_8OTEq

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability api-messari-io-0a7e8000
```

Example prompt: Pull Messari ROI snapshots for bitcoin, ethereum, and solana — I want to see their multi-window return performance side by side.

## When to prefer this

Use this endpoint when you need multi-window ROI performance data for one or more crypto assets by id or slug. Prefer this over the general asset snapshot endpoint when the specific focus is investment return percentages across time periods rather than broad asset metadata.

## Known failure modes

- Invalid or unknown asset ids/slugs return empty results or 404
- Comma-separated ids/slugs with spaces or formatting errors may cause parse failures
- Exceeding rate limits or quota returns 429 or payment-required response
- No matching assets for given sector/category/search filter returns empty list
- Payment not fulfilled (x402) results in 402 Payment Required response

## How this service works

Get multi-window ROI snapshots for one or more cryptocurrency assets.

## Output

Returns a set of ROI data objects for each requested asset, containing return percentages across multiple time windows (e.g. 1d, 7d, 30d, 1y, etc.), keyed by asset id or slug.

## Example request

```json
{
 "ids": "bitcoin,ethereum,solana",
 "limit": 10
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "ids": {
   "type": "string",
   "description": "Comma-separated asset ids."
  },
  "tags": {
   "type": "array",
   "items": {
    "type": "string"
   }
  },
  "limit": {
   "type": "integer",
   "minimum": 1
  },
  "slugs": {
   "type": "string",
   "description": "Comma-separated asset slugs."
  },
  "search": {
   "type": "string"
  },
  "sector": {
   "type": "string"
  },
  "category": {
   "type": "string"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "example": {
  "data": [
   {
    "id": "btc",
    "roi_30d": 0
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/api-messari-io-0a7e8000/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.messari.io](https://www.zero.xyz/host/api.messari.io/llms.txt)
