{"openapi":"3.0.3","info":{"title":"SCOPE API","version":"1.0.0","description":"Wallet, token, contract and risk intelligence for Robinhood Chain (chain id 4663). Authenticate with `x-api-key`."},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{}},"paths":{"/api/v1/scan/stream":{"get":{"summary":"Server-sent events for a live scan","tags":["scan"],"parameters":[{"schema":{"type":"string","maxLength":80},"in":"query","name":"q","required":true},{"schema":{"type":"boolean","default":false},"in":"query","name":"extend","required":false}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/wallet/{address}":{"get":{"summary":"Wallet intelligence report","tags":["wallet"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/wallet/{address}/transfers":{"get":{"summary":"Token transfers (cursor-paginated, newest first)","tags":["wallet"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","pattern":"^\\d+:\\d+$"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/wallet/{address}/relationships":{"get":{"summary":"Relationship graph (optionally expand one neighbor)","tags":["wallet"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"query","name":"expand","required":false},{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/token/{address}":{"get":{"summary":"Token intelligence report","tags":["token"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/token/{address}/holders":{"get":{"summary":"Top holders and concentration","tags":["token"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":25,"default":25},"in":"query","name":"limit","required":false},{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/contract/{address}":{"get":{"summary":"Contract permissions and proxy analysis","tags":["contract"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/risk/{address}":{"get":{"summary":"Latest risk assessment with evidence","tags":["risk"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/tx/{hash}":{"get":{"summary":"Decoded transaction","tags":["network"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"in":"path","name":"hash","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/network/stats":{"get":{"summary":"Indexer and dataset metrics (all values from the database)","tags":["network"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/network/activity":{"get":{"summary":"Recent indexed blocks, transactions and transfers","tags":["network"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":300,"default":30},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/network/signals":{"get":{"summary":"Most recent detected risk signals","tags":["risk"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/reports":{"post":{"summary":"Freeze the stored analysis of a target into a shareable report","tags":["reports"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["target"],"additionalProperties":false,"properties":{"target":{"type":"string","pattern":"^0x([0-9a-fA-F]{40}|[0-9a-fA-F]{64})$"},"notes":{"type":"string","maxLength":4000}}}}}},"responses":{"200":{"description":"Default Response"}}},"get":{"summary":"Reports for a target, or your own when signed in","tags":["reports"],"parameters":[{"schema":{"type":"string","pattern":"^0x([0-9a-fA-F]{40}|[0-9a-fA-F]{64})$"},"in":"query","name":"target","required":false}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/reports/{id}":{"get":{"summary":"Read a shared investigation report","tags":["reports"],"parameters":[{"schema":{"type":"string","pattern":"^[0-9a-zA-Z]{12}$"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/wallet/{address}":{"get":{"summary":"Wallet intelligence: profile, counterparties, clusters, risk","tags":["intelligence"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/token/{address}":{"get":{"summary":"Token investigation: holders, concentration (individual and cluster-adjusted), pools, permissions, risk","tags":["intelligence"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/clusters/{address}":{"get":{"summary":"Possible wallet clusters found when investigating this address, and clusters it belongs to","tags":["intelligence"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","pattern":"^\\d{1,6}$"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/relationships/{address}":{"get":{"summary":"Evidence-backed relationships of an address (direct transfers, common funders, timing)","tags":["intelligence"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string","pattern":"^\\d{1,6}$"},"in":"query","name":"cursor","required":false},{"schema":{"type":"string","maxLength":40},"in":"query","name":"kind","required":false},{"schema":{"type":"string","enum":["verified","strong_heuristic","weak_heuristic"]},"in":"query","name":"evidence","required":false},{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/risk/{address}":{"get":{"summary":"Latest risk assessment with evidence classes, addresses and transactions","tags":["intelligence"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/intelligence/report/{address}":{"get":{"summary":"Structured investigation report (executive summary, concentration, clusters, funding, permissions, liquidity, risk, coverage)","tags":["intelligence"],"parameters":[{"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"in":"path","name":"address","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/watch":{"post":{"summary":"Watch an address (returns the webhook secret once)","tags":["watch"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["target"],"additionalProperties":false,"properties":{"target":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"kinds":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","enum":["large_transfer","new_funding_relationship","cluster_change","concentration_change","liquidity_withdrawal","ownership_change","privileged_change","unusual_activity"]}},"webhookUrl":{"type":"string","maxLength":500,"pattern":"^https?://"},"minAmount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":60,"description":"large_transfer threshold: token units (token) or ETH (wallet)"},"minPct":{"type":"number","minimum":0,"maximum":100},"concentrationDelta":{"type":"number","minimum":0.005,"maximum":1}}}}}},"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"get":{"summary":"Your watches","tags":["watch"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/watch/{id}":{"get":{"summary":"One watch with its recent alerts","tags":["watch"],"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"patch":{"summary":"Turn Telegram delivery on or off for a watch","tags":["watch"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["telegram"],"additionalProperties":false,"properties":{"telegram":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"delete":{"summary":"Stop watching","tags":["watch"],"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/watch/{id}/check":{"post":{"summary":"Queue an immediate re-check of a watch","tags":["watch"],"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/telegram":{"get":{"summary":"Telegram bot status and your linked chats","tags":["watch"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/telegram/link-code":{"post":{"summary":"One-time code (10 minutes) to connect a Telegram chat","tags":["watch"],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/telegram/links/{id}":{"delete":{"summary":"Disconnect a Telegram chat","tags":["watch"],"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"security":[{"apiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/auth/nonce":{"get":{"summary":"Issue a single-use SIWE nonce","tags":["auth"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/auth/verify":{"post":{"summary":"Verify a signed SIWE message and start a session","tags":["auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message","signature"],"properties":{"message":{"type":"string","maxLength":2000},"signature":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","maxLength":20000}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/api/v1/auth/logout":{"post":{"tags":["auth"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/auth/me":{"get":{"tags":["auth"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/usage":{"get":{"summary":"Usage summary and recent requests for your account","tags":["developer"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/alerts":{"get":{"summary":"List your alert rules","tags":["alerts"],"responses":{"200":{"description":"Default Response"}}},"post":{"summary":"Create an alert rule (returns webhook secret once)","tags":["alerts"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind","target"],"additionalProperties":false,"properties":{"kind":{"type":"string","enum":["wallet_transfer","large_token_movement","liquidity_withdrawal","ownership_change","role_granted","risk_signal_change"]},"target":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"webhookUrl":{"type":"string","maxLength":500},"minAmount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","maxLength":60,"description":"large_token_movement: threshold in token units"},"minPct":{"type":"number","minimum":0,"maximum":100,"description":"liquidity_withdrawal: minimum share of pool side"}}}}}},"responses":{"200":{"description":"Default Response"}}}},"/api/v1/alerts/{id}":{"delete":{"tags":["alerts"],"parameters":[{"schema":{"type":"integer"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/alerts/events":{"get":{"summary":"Your recent alert events with delivery status","tags":["alerts"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/meta":{"get":{"summary":"Public configuration: Telegram bot, $SCOPE token and credit pricing","tags":["network"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/holder":{"get":{"summary":"Your $SCOPE holder status (cached up to an hour)","tags":["credits"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/holder/verify":{"post":{"summary":"Re-read your $SCOPE balance from the chain now","tags":["credits"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/credits":{"get":{"summary":"Credit balance and ledger","tags":["credits"],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/payments/verify":{"post":{"summary":"Verify an onchain $SCOPE payment and issue credits","tags":["credits"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["txHash"],"properties":{"txHash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}}}}}},"responses":{"200":{"description":"Default Response"}}}}},"security":[{"apiKey":[]}]}