The OmniRisk API gives you programmatic access to real-time risk scores, market signals, wallet analysis, and on-chain data across eight blockchain networks. Every response is JSON. Every request requires an API key.
Pass the chain identifier as the chain query parameter or path segment.
| Chain ID | Network | Notes |
|---|---|---|
| eth | Ethereum | EVM mainnet |
| bsc | BNB Chain | EVM mainnet |
| sol | Solana | Non-EVM — use base58 addresses |
| base | Base | Coinbase L2 (EVM) |
| arb | Arbitrum | Arbitrum One (EVM) |
| poly | Polygon | Polygon PoS (EVM) |
| avax | Avalanche | Avalanche C-Chain (EVM) |
| ftm | Fantom | EVM mainnet |
Sign up at omnirisk.io. Free accounts are available with no credit card required.
Navigate to Profile → API Keys and click Create key. Your key will be shown once — copy it immediately. Keys have the format ri_live_<id>.<64-hex-chars>.
Use any HTTP client. Pass your key in the x-api-key header.
A successful GET /v1/token/analyze response looks like:
{
"chain": "eth",
"address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
"score": 72.4,
"label": "caution",
"signals": [
{ "id": "low_liquidity", "severity": "medium", "weight": 0.28 },
{ "id": "whale_concentration", "severity": "high", "weight": 0.41 }
],
"meta": {
"name": "Uniswap",
"symbol": "UNI",
"price_usd": 7.31,
"market_cap_usd": 5510000000
},
"cached_at": "2026-05-20T10:14:00Z"
}score — 0 (safe) to 100 (critical). label — one of safe · caution · risky · critical.
All errors share a common envelope. Inspect error.code for programmatic handling.
// HTTP 429 — rate limit exceeded
{
"error": {
"code": "RATE_LIMITED",
"message": "You have exceeded 60 requests per minute. Upgrade to Pro for higher limits.",
"docs_url": "https://omnirisk.io/developer/docs#errors"
}
}All endpoints (except GET /v1/health) require the x-api-key request header.
x-api-key: ri_live_<id>.<64-hex-chars>Keys are prefixed ri_live_ followed by a short opaque identifier, a dot, and 64 lowercase hex characters. Store them in environment variables — never commit them to version control or expose them in client-side browser code.
Call POST /v1/developer/api-keys/{keyId}/rotate. The old key remains valid for 24 hours so you can update downstream services without downtime.
OMNIRISK_API_KEY)| Tier | Requests / min | Monthly included |
|---|---|---|
| Free | 60 | 10,000 |
| Pro | 600 | 500,000 |
| Pro+ | 6,000 | Unlimited |
Every response includes these headers:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Maximum requests allowed in the current window |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | Unix timestamp when the window resets |
| Retry-After | (429 only) Seconds to wait before retrying |
All errors use HTTP semantics and a consistent JSON body at error.code.
| Code | HTTP | Meaning |
|---|---|---|
| BAD_REQUEST | 400 | Malformed request — check parameters |
| UNAUTHORIZED | 401 | Missing or invalid x-api-key |
| FORBIDDEN | 403 | Key is valid but lacks permission for this resource |
| NOT_FOUND | 404 | Resource does not exist |
| CONFLICT | 409 | Resource already exists (e.g. duplicate key name) |
| VALIDATION_ERROR | 422 | Parameter values failed schema validation |
| RATE_LIMITED | 429 | Too many requests — back off and retry |
| PAYMENT_REQUIRED | 402 | Free quota exhausted — upgrade required |
| PREMIUM_REQUIRED | 403 | Endpoint requires Pro or Pro+ plan |
| INTERNAL_ERROR | 500 | Unexpected server error — retry with exponential back-off |
| UPSTREAM_ERROR | 502 | On-chain data provider returned an error |
| UPSTREAM_UNAVAILABLE | 503 | On-chain data provider is temporarily unavailable |
OmniRisk publishes machine-readable documentation so that AI agents, coding assistants, and autonomous tools can discover and call the API without any manual setup.
https://omnirisk.io/llms.txt for a fast summary of available capabilities.https://omnirisk.io/llms-full.txt — it contains every endpoint description, parameter, and example response.OMNIRISK_API_KEY — never hardcode it.x-api-key: ${OMNIRISK_API_KEY} on every request.X-RateLimit-Remaining and back off on 429 RATE_LIMITED using the Retry-After header value.Pass the OpenAPI spec URL to any compatible SDK or agent framework:
# LangChain (Python)
from langchain.tools import OpenAPISpec, APIOperation
spec = OpenAPISpec.from_url("https://omnirisk.io/openapi.json")
# OpenAI function calling — generate schema from spec
# Speakeasy / Stainless — point at https://omnirisk.io/openapi.json
# Postman — import → OpenAPI 3.1 → paste URLThe public API documentation repository contains integration examples, a full README, and a changelog. Open an issue there for bugs or feature requests.
github.com/baz2024/omnirisk-apiDownload the full README (PDF-ready Markdown) for offline reference or to share with your team:
↓ Download README.md