API Documentation

Integrate NightOvO intelligence into your bots, dashboards, and tools.

API keys coming soon

Authenticated API access is under development. All endpoints below will require an API key once the system launches.

Base URL

https://nightovo.com/api/v1

Rate Limits

TierRequests / dayRate limitPrice
Free101 req/sec$0
Pro1,0005 req/sec15 USDC/mo
Team10,00020 req/sec40 USDC/mo
Builder100,00050 req/secCustom
EnterpriseUnlimitedUnlimitedCustom

Endpoints

GET/api/v1/token/{address}/scan

Scan a Solana token for rug-pull risk. Returns a 0-100 risk score, 12 heuristic sub-checks, deployer info, and optional AI narrative.

Example Request

curl -H "Authorization: Bearer nvo_YOUR_KEY" \
  "https://nightovo.com/api/v1/token/So11111111111111111111111111111111111111112/scan"

Example Response

{
  "address": "So111...112",
  "name": "Wrapped SOL",
  "risk_score": 5,
  "risk_label": "safe",
  "checks": [ ... ],
  "deployer_address": "...",
  "ai_narrative": "This token appears safe..."
}
GET/api/v1/feed/trending

Trending tokens from pump.fun and Raydium, sorted by volume and social signal. Returns the latest launches with risk scores.

Example Request

curl -H "Authorization: Bearer nvo_YOUR_KEY" \
  "https://nightovo.com/api/v1/feed/trending?limit=20"

Example Response

{
  "launches": [
    { "address": "...", "name": "DOGWIF", "risk_score": 32, "risk_label": "moderate" }
  ],
  "total": 150,
  "page": 1
}
GET/api/v1/feed/picks

OvO curated safe tokens -- low risk score, verified liquidity, clean deployer history. Updated every 15 minutes.

Example Request

curl -H "Authorization: Bearer nvo_YOUR_KEY" \
  "https://nightovo.com/api/v1/feed/picks"

Example Response

{
  "launches": [
    { "address": "...", "name": "SAFE_TOKEN", "risk_score": 8, "risk_label": "safe" }
  ],
  "total": 25
}
GET/api/v1/feed/rug-alerts

High-risk tokens to avoid. Tokens scoring 70+ on the risk scale with confirmed red flags like honeypot mechanics or insider clusters.

Example Request

curl -H "Authorization: Bearer nvo_YOUR_KEY" \
  "https://nightovo.com/api/v1/feed/rug-alerts"

Example Response

{
  "launches": [
    { "address": "...", "name": "SCAM_TOKEN", "risk_score": 92, "risk_label": "danger" }
  ],
  "total": 12
}
GET/api/v1/wallet/{address}/trace

Wallet fund flow graph. Returns nodes (wallets) and edges (transactions) for visualization. Depth controlled by subscription tier.

Example Request

curl -H "Authorization: Bearer nvo_YOUR_KEY" \
  "https://nightovo.com/api/v1/wallet/ABC123.../trace?depth=3"

Example Response

{
  "address": "ABC123...",
  "nodes": [ { "address": "...", "labels": ["deployer"], "reputation_score": 0.3 } ],
  "edges": [ { "from": "...", "to": "...", "amount": 500, "token": "SOL" } ],
  "depth": 3
}
POST/api/v1/chat/message

Chat with OvO AI. Ask questions about tokens, wallets, or general Solana security. Supports conversation context via session_id.

Example Request

curl -X POST -H "Authorization: Bearer nvo_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Is this token safe? ABC123...", "session_id": "optional"}' \
  "https://nightovo.com/api/v1/chat/message"

Example Response

{
  "reply": "I analyzed token ABC123... The risk score is 72 (high). Key concerns: ...",
  "session_id": "sess_abc123"
}
GET/api/v1/status

Health check endpoint. Returns service status, total tokens scanned, uptime, and API version. No authentication required.

Example Request

curl "https://nightovo.com/api/v1/status"

Example Response

{
  "status": "ok",
  "api_version": "0.1.0",
  "tokens_scanned": 142857,
  "uptime_seconds": 86400,
  "date": "2026-04-09"
}

Authentication

All endpoints (except /status) require a Bearer token in the Authorization header:

Authorization: Bearer nvo_your_api_key_here

API keys use the prefix nvo_ and are 48 characters long. Keys are hashed with SHA-256 on our side -- you will only see the full key once at creation.

Error Codes

CodeMeaning
401Missing or invalid API key
403API key revoked or expired
404Token or wallet not found
429Rate limit exceeded -- check Retry-After header
500Internal server error