CYCLOPS LABSDOCS / APIFILE Nº D2

Read the chain
from code.

The same reads the site makes, as a public HTTP API. Launches, outcomes, scans and reports, with the machine-readable spec below.

START

First
request.

SHELL
curl https://cyclopslabs.dev/api/v1/launches?limit=5

Base URL: https://cyclopslabs.dev/api. Public reads need no key.

Authentication: send a session token as Authorization: Bearer … after verifying a wallet on the site, or an API key as x-api-key. Keys are created on the account page, one or more per tier, and a key counts against the lower of its own tier and your wallet’s current tier. To start without a form, get a free key in 30 seconds; AI agents can use the MCP server and x402 pay-per-scan.

Limits: scans are limited to 10 an hour without a key and 120 an hour at the Holder tier. A limited request answers 429 with a Retry-After header. Public feeds are cached for 30 seconds.

SDKS

TypeScript
and Python.

TYPESCRIPT · npm i @cyclops/sdk
import { Cyclops } from '@cyclops/sdk';

const cx = new Cyclops({ apiKey: process.env.CYCLOPS_API_KEY });
const { launches } = await cx.launches({ limit: 5 });
const scan = await cx.inspect('0x…');
PYTHON · pip install cyclops-sdk
from cyclops import Cyclops

cx = Cyclops(api_key=os.environ.get("CYCLOPS_API_KEY"))
launches = cx.launches(limit=5)
scan = cx.inspect("0x…")

Both clients are thin wrappers over the endpoints below and return the same JSON.

BULK

Fifty at
a time.

POST /v1/bulk/inspect · HOLDER TIER
curl -X POST https://cyclopslabs.dev/api/v1/bulk/inspect \
  -H 'x-api-key: $CYCLOPS_API_KEY' -H 'content-type: application/json' \
  -d '{"addresses": ["0x…", "0x…"]}'

Send 1 to 50 token or wallet addresses. Every address that already has a stored scan comes back at once with status: "cached" and the full scan. Up to 5 uncached addresses per call (20 on Pro) are queued and come back "queued"; ask again a minute later and they are cached. The rest come back "not_scanned".

The response also carries the queue state, the same as GET /v1/queue. Bulk calls never wait on a scan, so they stay fast.

DATASETS

Download
the record.

Every Torch launch Cyclops has indexed on Robinhood Chain, one row each, oldest first. Add ?since=2026-10-01 for launches on or after a date. Outcomes describe what happened on-chain, not intent, and keep updating while a launch is young. Credit “Cyclops Labs” when you publish with it.

Dataset columns
ColumnMeaning
tokenToken contract address
symbolTicker as written in the launch event
nameName as written in the launch event
creatorWallet that created the launch
blockBlock of the launch
launched_atLaunch time, ISO 8601 UTC
tax_bpsLaunch tax setting in basis points
swapsSwaps counted so far
volume_ethTraded volume in ETH
first_ethPrice of the first trade, ETH per token
ath_ethHighest observed price, ETH per token
last_ethLatest observed price, ETH per token
last_swap_atTime of the latest swap
dev_sold_pctShare of the creator’s tokens sold, percent
outcomealive, inactive, dev_dumped or collapsed; empty while too new to judge
outcome_atWhen the outcome was recorded
REFERENCE

Every
endpoint.

Cyclops Labs API · version 2026.10 · generated from /v1/openapi.json

Service
  • GET/v1/health

    Liveness check

  • GET/v1/status

    Job freshness and response times

  • GET/v1/config

    Token, tiers and public settings

  • GET/v1/queue

    Scan queue: running, waiting, de-duplicated

  • GET/v1/chains

    Chains the scanner reads

  • GET/v1/changelog

    Engine changelog

  • GET/v1/openapi.json

    This document

  • POST/v1/a/hit

    Cookie-free page view (path and referrer host only)

  • POST/v1/discord/interactions

    Discord interactions endpoint (signed by Discord)

  • GET/v1/incidents

    Public incident log

  • POST/v1/feedback

    Lab feedback; signed-in Holder bug reports enter the Eyes bug bounty

Auth
  • POST/v1/auth/nonce

    Start wallet sign-in

  • POST/v1/auth/verify

    Finish wallet sign-in; returns a session token

Scanner
  • GET/v1/inspect/{q}q

    Point it anywhere: token, wallet, contract or transaction

  • GET/v1/inspect/{q}/streamq

    The same read as server-sent events: progress, then done or error

  • GET/v1/scan/{address}address

    Token scan (includes `extra`: locks, tax history, wash trading and more where available)

  • GET/v1/scan/wallet/{address}address

    Wallet report

  • GET/v1/scan/{address}/receiptaddress

    Signed receipt for the latest scan

  • GET/v1/receipts/key

    Public key that signs scan receipts

  • GET/v1/tx/{hash}hash

    Explain a transaction

  • GET/v1/searchq?

    Tokens by name or ticker, wallets by label

  • GET/v1/trail/{address}address · hops?

    Funding trail, several hops back

  • GET/v1/creator/{address}address

    A creator’s launches and their outcomes

  • GET/v1/smart-money

    Wallets ranked by the outcomes of what they bought

  • POST/v1/bulk/inspect

    Up to 50 addresses: cached results now, the rest queued

  • GET/v1/explorer/{address}address

    Compact cached read for explorers: score, label, top observations, badge and link (never starts a scan)

Method
  • GET/v1/flags/accuracy

    How often each flag preceded a collapse

  • GET/v1/score/changelog

    Changes to the scoring, versioned

  • POST/v1/flags/report

    Report a flag as a false positive

  • GET/v1/flags/reportsaddress?

    False-positive reports per flag

  • GET/v1/score/calibration

    Score bucket against the share of launches that later ended badly

  • GET/v1/score/bias

    False-positive rate for first-time against repeat creators

Tokens
  • GET/v1/token/{address}/historyaddress · days?

    Daily holders, price and liquidity

  • GET/v1/token/{address}/holders/historyaddress

    Holder concentration over time

  • GET/v1/badge/token/{file}file

    Embeddable scan badge (SVG); file is <address>.svg

Labels
  • GET/v1/labels/{address}address

    Team label for an address

  • GET/v1/labelsaddress?

    Team and community labels for an address

  • POST/v1/labels/propose

    Propose a community label with evidence

  • POST/v1/labels/{id}/voteid

    Agree or disagree; weight follows Eyes rank

Launches
  • GET/v1/launchesoutcome? · creator? · limit?

    Torch launches with stats and outcomes

  • GET/v1/launches/stats

    Outcomes of the last 30 days

  • GET/v1/radar

    Scored new launches (15 minutes delayed below Holder)

  • GET/v1/devs

    Creators with collapsed or sold-out launches

  • GET/v1/firehose

    Live launches with first-minute stats (server-sent `launch` events)

  • GET/v1/firehose/recentlimit?

    The latest launches with first-minute stats

  • GET/v1/collapsesdays?

    Launches that collapsed or saw the creator sell out recently, with the score each had before

Reports
  • GET/v1/reports

    Weeks with a public report

  • GET/v1/reports/weeklyweek?

    Weekly report

  • GET/v1/reports/quarters

    Quarters with a public report

  • GET/v1/reports/quarterlyq?

    State of Robinhood Chain launches for a quarter

Datasets
  • GET/v1/datasets

    Downloadable datasets

  • GET/v1/datasets/{file}file · since?

    launches.csv or launches.jsonl

AI
  • POST/v1/ai/summary

    Case summary; every sentence cites observation ids ({enabled:false} when switched off)

  • POST/v1/ai/ask

    Ask a scan a question in plain language

Account
  • GET/v1/me

    Your wallet, tier and settings

  • POST/v1/me/settings

    Update settings

  • POST/v1/me/telegram

    Telegram link code

  • POST/v1/me/data/delete

    Delete watchlists, saved cases, rules, follows, inbox and alert settings; returns a signed receipt

  • POST/v1/data/receipt/verify

    Check a data-deletion receipt

Alerts
  • GET/v1/me/watch

    Watched tokens

  • POST/v1/me/watch

    Watch a token

  • DELETE/v1/me/watch/{token}token

    Stop watching

  • GET/v1/me/rules

    Your alert rules and recent alerts

  • POST/v1/me/rules

    Create or update (with id) a rule: conditions combined with all/any. Also accepts the short form {token, when: [creator_sells|lp_unlock_near|new_cluster_wallet|tax_change|holder_spike], match}

  • DELETE/v1/me/rules/{id}id

    Delete a rule

  • GET/v1/me/alerts

    Alerts sent to you

  • GET/v1/me/inboxfilter? · limit? · before?

    In-app alert inbox, newest first, with unread counts

  • GET/v1/me/inbox/count

    Unread alerts (and how many are Act tier)

  • POST/v1/me/inbox/read

    Mark alerts read (or unread)

  • POST/v1/me/inbox/delete

    Delete alerts by id, or everything already read

  • GET/v1/me/alert-prefs

    Quiet hours, folding window, minimum tier for outside channels, weekly recap

  • POST/v1/me/alert-prefs

    Update alert preferences

  • GET/v1/me/mutes

    Muted and snoozed tokens

  • POST/v1/me/mutes

    Mute a token (no hours) or snooze it for 1 to 720 hours

  • DELETE/v1/me/mutes/{token}token

    Unmute or end a snooze

  • POST/v1/me/alerts/test

    Send a test alert to one channel; says why it did not deliver

  • GET/v1/me/alerts/recordhours?

    Your alerts against launch fates: collapse within N hours, hit rate, base rate

  • GET/v1/me/rules/{id}/templateid

    Share a rule as a template link (?target=1 keeps the token)

  • GET/v1/rules/template/{code}code

    Open a shared rule template

  • GET/v1/me/wallet-watch

    Wallets connected read-only to the watchlist

  • POST/v1/me/wallet-watch

    Read a wallet’s balances and watch every indexed launch it holds

  • DELETE/v1/me/wallet-watch/{wallet}wallet

    Disconnect a wallet and unwatch what it added

  • POST/v1/fates/changes

    Tokens you scanned whose launch outcome changed since you last looked

  • GET/v1/me/follows

    Followed wallets

  • POST/v1/me/follows

    Follow a wallet; alerted when it buys a launch

  • DELETE/v1/me/follows/{wallet}wallet

    Unfollow

  • GET/v1/me/webhooks

    Your webhooks

  • POST/v1/me/webhooks

    Add a webhook (https, signed with HMAC-SHA256)

  • POST/v1/me/webhooks/{id}/testid

    Queue a test delivery

  • DELETE/v1/me/webhooks/{id}id

    Remove a webhook

  • GET/v1/push/key

    Web push public key ({enabled:false} when off)

  • POST/v1/me/push

    Store this browser’s push subscription

  • DELETE/v1/me/push

    Remove a push subscription

Email
  • POST/v1/digest/subscribe

    Daily digest and weekly newsletter, double opt-in

  • GET/v1/digest/confirmtoken?

    Confirm an email address

  • GET/v1/digest/unsubscribetoken?

    Unsubscribe

Lab
  • GET/v1/me/investigations

    Saved investigations for your wallet

  • PUT/v1/me/investigations

    Replace your saved investigations (up to 200 items, 256 KB)

  • GET/v1/me/labels

    Your private address book

  • PUT/v1/me/labels

    Replace your private address book (up to 2000 labels, 256 KB)

Keys
  • GET/v1/me/keys

    Your API keys with usage

  • POST/v1/me/keys

    Create a key at or below your tier

  • DELETE/v1/me/keys/{id}id

    Revoke a key

  • POST/v1/keys/instant

    One wallet signature in, a free-tier (or your tier) key and a session out

  • POST/v1/keys/anonymous

    A free-tier key with no wallet (two per network per day)

  • DELETE/v1/keys/current

    Revoke the key sent as x-api-key

Eyes
  • GET/v1/eyes/leaderboard

    This week and all time

  • GET/v1/eyes/seasonscount?

    Monthly seasons with leaders

  • GET/v1/eyes/bounties

    Investigation bounty board

  • GET/v1/eyes/profile/{address}address

    A contributor’s public record

  • GET/v1/eyes/claims

    Your payouts with on-chain receipts

  • GET/v1/eyes/evidence/{address}address

    Observations from a token’s latest scan, to cite as evidence

  • POST/v1/eyes/report

    File a case report, a scanner miss or a false flag with cited observations

  • POST/v1/eyes/submit

    Submit to a Cyclops Eyes program

  • GET/v1/eyes/mine

    Your submissions

  • GET/v1/eyes/prescreen

    Pre-screen queue (Sight rank and above)

  • POST/v1/eyes/prescreen/{id}id

    Pre-screen a report

  • GET/v1/eyes/appeals

    Public appeals log

  • POST/v1/eyes/appeals

    Appeal a label, flag, listing or decision

  • GET/v1/bounties

    Open bounties

Rewards
  • GET/v1/rewards

    Rewards pool, burns and payouts

  • GET/v1/rewards/reserve

    Rewards reserve wallet and payout history

  • GET/v1/referrals/terms

    Referral rules and whether rewards are live

  • GET/v1/me/referral

    Your invite code, link and referral record

  • POST/v1/referrals/claim

    Accept an invite as a new wallet

  • GET/v1/me/credits

    Approved rewards awaiting payout and Pro time redeemed from them

  • POST/v1/me/credits/redeem

    Take awaiting rewards as Pro time instead of tokens

Community
  • GET/v1/roadmap/votes

    Roadmap votes

  • POST/v1/roadmap/votes/{item}item

    Vote for a roadmap item

  • DELETE/v1/roadmap/votes/{item}item

    Remove your vote

  • GET/v1/requests

    Holder requests

  • POST/v1/requests

    Request something

Markets
  • GET/v1/record

    Call record

  • GET/v1/signals

    Open calls

  • GET/v1/calls/{id}id

    One call

  • GET/v1/feed.json

    Signed call feed

  • GET/v1/whales

    Large trades

  • GET/v1/wallet/{address}address

    Prediction-market wallet

Pre-launch
  • POST/v1/prelaunch/check

    Creator self-check before launch; ends in a “scanned” record, never a safety rating

  • POST/v1/partner/prelaunch

    The same check for launchpads, with an API key

  • GET/v1/prelaunch/{id}id

    A stored pre-launch check

  • GET/v1/prelaunch/{id}/badge.svgid

    Badge for a pre-launch check (SVG)

x402
  • GET/v1/x402

    Pay-per-scan terms ({enabled:false} when off)

  • GET/v1/x402/scan/{address}address

    Token scan paid per request: 402 with requirements, then retry with X-PAYMENT

Trust
  • GET/v1/corrections

    Public corrections log with SLA performance

  • POST/v1/corrections

    Ask for a correction, a takedown or a privacy removal

Teams
  • GET/v1/me/teams

    Your teams, seats and roles

  • POST/v1/teams

    Create a team (Holder: 1 team, Pro: 3)

  • GET/v1/teams/{id}id

    Members, open invites and investigated targets

  • POST/v1/teams/{id}/invitesid

    One-use invite code for a seat (owner)

  • DELETE/v1/teams/{id}/invites/{code}id · code

    Withdraw an invite (owner)

  • POST/v1/teams/join

    Join with an invite code

  • DELETE/v1/teams/{id}/members/{address}id · address

    Remove a member (owner) or leave

  • GET/v1/teams/{id}/notesid · target?

    Shared notes, optionally for one target

  • POST/v1/teams/{id}/notesid

    Add a shared note to an address or transaction

  • DELETE/v1/teams/{id}/notes/{note}id · note

    Delete a note (author or owner)