RESTful. JSON. Under 15 seconds. Score any wallet address across 9+ chains with a single authenticated POST request.
REST / JSON
TLS 1.3
99.9% uptime SLA
Sandbox available
Python / Node / Go SDKs
Getting Started
Authentication
All API requests require a bearer token in the Authorization header. API keys are issued after partner approval. Apply here to receive sandbox and production credentials.
# All requests require this header
Authorization: Bearer vizi_live_sk_xxxxxxxxxxxxxxxxxxxxxxxx# Sandbox (no real data, deterministic responses)
Authorization: Bearer vizi_test_sk_xxxxxxxxxxxxxxxxxxxxxxxx
Sandbox keys return deterministic scores for any valid-format wallet address. Use vizi_test_sk_* during development. Never expose API keys in client-side code or public repositories.
Getting Started
Base URL
# Production
https://api.vizi.com/v1
# Sandbox
https://sandbox.api.vizi.com/v1
All endpoints accept and return application/json. All timestamps are ISO 8601 UTC. The API version is pinned at v1 — breaking changes will be versioned.
Getting Started
Quickstart
Score a wallet in under 2 minutes with cURL, Python, or Node.js.
Official SDKs are available for Python, Node.js, and Go. Community SDKs for Ruby and Rust are maintained by partner contributors.
Python
vizi-python
pip install vizi
Node.js
@vizi/node
npm i @vizi/node
Go
vizi-go
go get github.com/vizi-com/vizi-go
Endpoints
POST /v1/score
Score a single wallet address. Returns a 300–850 VIZI® Score with optional signal breakdown and sanctions screening. Typical response time under 15 seconds.
Score up to 500 wallets in a single async request. Results delivered via webhook or polled via the batch status endpoint. Ideal for pre-screening applicant pools.
POSThttps://api.vizi.com/v1/score/batchUp to 500 wallets
📋
Batch requests are processed asynchronously. The endpoint returns a batch_id immediately. Results are delivered to your configured webhook URL, or polled via GET /v1/score/batch/{batch_id}. Average batch processing: 2–8 minutes depending on chain mix and size.
Endpoints
GET /v1/score/history
Retrieve historical score records for a wallet address. Returns score values at each pull, sorted newest first. Requires the wallet to have been scored at least once via your API key.
All errors return a JSON body with error and message fields.
Status
Code
Meaning
200
ok
Score successfully returned.
400
invalid_wallet
Wallet address format not recognized. Check chain and address format.
400
invalid_chain
Chain identifier not in supported list. See /v1/chains.
401
unauthorized
Missing or invalid API key. Check Authorization header.
402
quota_exceeded
Monthly pull quota reached. Upgrade tier or contact support.
429
rate_limited
Too many requests. See rate limit headers for reset time.
503
chain_unavailable
Chain data source temporarily unavailable. Retry with exponential backoff.
Reference
Rate limits
⏱
Standard: 10 requests/second, 5,000/month. Growth: 50 req/s, 50,000/month. Enterprise: Custom. Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Reference
Supported chains
Ethereum
ethereumLive
Solana
solanaLive
Base
baseLive
Polygon
polygonLive
Bitcoin
bitcoinLive
Arbitrum
arbitrumLive
Avalanche
avalancheLive
BNB Chain
bnbLive
XRP Ledger
xrpBeta
Sui
suiBeta
Aptos
aptosBeta
Reference
Webhooks
Configure a webhook endpoint to receive score events. Events are sent as HTTP POST with a JSON body and an X-VIZI-Signature HMAC-SHA256 header for verification.
Always verify the X-VIZI-Signature header before processing webhook payloads. Webhooks without a valid signature should be rejected. Retry logic: 3 attempts with exponential backoff (5s, 30s, 5m). Failed deliveries are logged in the partner dashboard.
Ready to build?
Apply for API access. Sandbox credentials issued in 48 hours.