Notus
Developers

Read Notus without the site

Everything the site shows comes from contracts on Base that anyone can read. If you are writing a bot, a terminal or a monitor, read the chain: it does not depend on this site being up, and it does not cost us bandwidth. Where a JSON is more convenient, two routes of the site are kept stable for programs; the rest of /api/ serves the site's own pages and changes with them.

The contracts (Base, chain 8453)

  • Launchpad 0x23231924281B34Bb28F10D854DB8D2DcBd7F78c5: every coin is created, sold on its curve and graduated here. The list of coins is tokenCount() and allTokens(i), in creation order; a coin's state is curves(token) (virtual and real reserves, sold, graduated, creator, quote asset), its tax split feeConfig(token), its links and logo tokenMetadata(token).
  • Events to follow: TokenCreated(address indexed token, address indexed creator, string name, string symbol, bool feesToHolders) for every new coin, Bought and Sold for every trade on a curve, Graduated(address indexed token, uint256 raisedEth) when a curve fills. One eth_getLogs on the launchpad's address with the event's topic is the whole feed; a bot waiting for the next launch needs nothing else, and it is faster than reloading a page.
  • Graduation pools are Uniswap v2 pairs against cbLTC 0xcb17C9Db87B595717C857a08468793f5bAb6445F, seeded by the migrator 0x60070f76f885616D675305624497ed0797303434, which keeps the LP tokens. The launchpad is owned by a 24-hour TimelockController 0xe28f446D3a1DB105F8F9b34A65474E1F6d256f76: every owner action is public on chain a day before it can run.
  • The ABIs, the deploy blocks, every address of every version and the standard JSON inputs the explorers accepted are in the repository https://github.com/giupy997/launch-pad, README.md, Deployments.

GET /api/launchpad/tokens

  • The coins the launchpad created, in creation order, for a program that syncs a list (this is the shape GoPlus asks of a launchpad). Query: orderId (the first id wanted, 0 by default) and limit (100 by default, 1,000 at most).
  • Answer: { code: 1, message: "ok", result: [{ chainId: "8453", address, launchTime, orderId }] }. orderId is the coin's position in the launchpad's own list and never changes; launchTime is the timestamp of the block that created it, in milliseconds. Your next sync asks from the largest orderId you have plus one.
  • Every coin of the launchpad is in it, the ones the site does not list included. Cached for five minutes for everyone; 503 with code: 0 when the chain's archive node does not answer, never a partial list. Try it: /api/launchpad/tokens?orderId=0&limit=5

GET /api/health

  • One answer for an uptime monitor: 200 with { ok: true, status: "up" } while Base's nodes and the site's store answer, 503 otherwise, and under checks every check's result with its time in milliseconds (the testnet's nodes and the points service are reported there, not decisive). /api/health

Limits and promises

  • No key, no sign-up: the routes are public and read-only, and nothing you send reaches a wallet or a contract. Each client gets 240 requests a minute on /api/; over that the edge answers 429 until the minute turns. Answers carry cache-control: read it and do not poll faster than it says.
  • The two routes above keep their fields; a field may be added, none removed or renamed without notice here and in the repository's README. /api/trades, /api/holders, /api/ltc-price, /api/points/ and /api/img are the site's own and may change with its pages: read the chain, or write to us first.
  • Something wrong or missing: notuspad@gmail.com, or an issue in the repository. Security reports go to the security address, not a public issue.