EventTrader
Financial AI Models
PAPER
Menu
Dark Mode
Plain English Mode
PAPER TRADING MODE — Enable real trading on your Account page
Back

Build it Better REST API

REST and WebSocket reference for Build it Better: file a rebuild request, agree the scope, follow the build live and post your verdict. Reads need no key; filing needs a signed-in account on its NEXUS build plan (the Free plan is included; a request needs Pro, Max or Ultra — see /usage). The whole exchange is five messages — BB-REQUEST, BB-SPEC, BB-ACCEPT / BB-CHANGE, BB-SHIPPED, BB-VERDICT — and every surface below runs the same rules.

How access works

Endpoints

Base URL https://cymetica.com/api/v1/build-it-better. JSON in, JSON out.

CallWhat it doesToken
GET /apps?q=Apps we already have a page for. Check before filing — they can still be filed with improvements.–
POST /requestsBB-REQUEST. Returns the build with spec_text (BB-SPEC) and request_token.–
GET /requestsThe live board: every build by stage, real elapsed times, median build time.–
GET /requests/{ticket}One build with its scope, funding and BB-* message log.–
POST /requests/{ticket}/acceptBB-ACCEPT. Locks the scope (you can still reopen it with BB-CHANGE until the build starts).X-BB-Token, or the signed-in session of the account that filed it
POST /requests/{ticket}/changeBB-CHANGE. Body {"changes": "…"}; returns a new spec_text. Also works after BB-ACCEPT until the build starts: it reopens the scope, so send BB-ACCEPT again.X-BB-Token, or the signed-in session of the account that filed it
POST /requests/{ticket}/verdictBB-VERDICT. Body {"verdict": "pass"|"fail", "note": "…"}. Only after the build shipped.X-BB-Token, or the signed-in session of the account that filed it
POST /requests/{ticket}/withdrawBB-WITHDRAW. Takes back your own request while it is requested or funded; the ticket is marked declined and the log keeps the record. Refused with 409 once the build is building or shipped.X-BB-Token, or the signed-in session of the account that filed it
GET /requests/lineThe order accepted builds are worked in, first to last: position, ticket, app_name, stage, backing_et10, backers. Builds are worked by ET10 backing first, highest first; equal backing by who was backed first; builds with no backing after every backed build, in order of acceptance. Also returns the rules text.–
POST /requests/{ticket}/bidBack a build to move it up the line. Body {"amount_et10": "250000"}. Places or raises your ET10 bid (raise only) on any build still waiting, and returns the build's new position and backing_et10. A bid is never collected: nothing is charged, locked or paid. The account must verifiably hold at least 100,000 ET10, and at least the ET10 it bids, or the bid is refused with 422.signed-in account (any holder, not only the requester)

Traffic and likes — is the rebuild being used?

Every rebuilt app's traffic is public. No key, no account. The same numbers are on /build-it-better/stats and at the foot of each app's page.

CallWhat it doesToken
GET /apps/stats?path=/finvizOne app: all_time, last_7d, last_30d (each views, visitors, uses), a 30-day daily[] series, likes, and definitions. path may be the full cymetica.com URL.–
GET /apps/leaderboard?sort=&days=Every rebuilt app ranked. sort: visitors | views | uses | likes; days 1–3650 (default 30). Apps with no traffic yet are listed with zeros.–
POST /apps/likeBody {"path": "/finviz"}. Toggles your like; returns {likes, liked}. One per account when signed in (session, bearer or X-API-Key), otherwise one per anonymous browser. Scripts must send a key.–

What the numbers mean. views are page loads counted by an in-page beacon, so clients without JavaScript and known crawlers are not counted. visitors are distinct daily visitors; a range is the sum of its days, so one person on three days counts three times. uses are page loads where the visitor interacted with the app. Counting started 2026-09-20; nothing earlier was recorded. Shipped builds on GET /requests also carry a traffic block for the last 30 days. We store daily totals only — no IP address and no per-visit record.

Turn your App into a Startup

Apply to have a rebuilt app spun out as its own startup. The form is at /build-it-better/startup; agents can send the same fields. Cymetica takes a percentage of each spinoff. The percentage and every other term are agreed in writing before anything is registered, launched or spent, so applying commits neither side.

CallWhat it doesAuth
GET /startups/termsWhat applying means, who can apply (holding_rule, min_et10), the status meanings and the accepted socials keys.–
POST /startupsApply. Required: startup_name, description (40–4000 chars), founder_name, email, accept_terms: true, the app (ticket, or app_name), and either has_website: true + website or desired_domain (the domain you would like registered). Optional: request_token (proves the ticket is yours), app_url, socials{}, extra, and the coin you want connected to the app and startup: token_symbol (2–10 letters or digits), token_chain (see /startups/terms), token_max_supply (whole number). Nothing is minted by applying. 403 when the account holds under 100,000 ET10 (the live figure is min_et10 on /startups/terms); nothing is charged or locked.account holding at least 100,000 ET10 (session, bearer or X-API-Key)
GET /startups/lineThe public line, first to last: position, startup_name, bid_et10. The line is an auction, in ET10: highest bid first, equal bids by who bid first, then applications with no bid in arrival order. Also returns the rules text.–
POST /startups/{id}/bidBody {"amount_et10": "250000"}. Places or raises your ET10 bid (raise only; never lowered or withdrawn) and returns your new position. A bid is never collected: nothing is charged, locked or paid. The account must verifiably hold at least 100,000 ET10, and at least the ET10 it bids, or the bid is refused with 422. A bid is any whole amount of ET10 above zero. An opening bid can also be sent as bid_et10 on POST /startups; a refused opening bid never loses the application (bid_error says why).account
GET /startups/mineYour applications with status: submitted → reviewing → accepted | declined.account

Tokenize your build

Once a build has shipped, its requester can issue it as its own token — choosing the symbol, the name, the max supply and the chain (Robinhood Chain, Circle's Arc, Sui — whatever the platform can launch on today). Creation is $0; the platform signs nothing: you get an unsigned factory transaction for your own EVM wallet, or a Sui coin package to publish yourself. The page is /build-it-better/tokenize?t=<ticket>; agents use the same three calls.

CallWhat it doesAuth
GET /requests/{ticket}/tokenizeThe offer: eligible (the build has shipped), chains[] with each chain's supply_rule (fixed — the launchpad sets it — or chosen), defaults (the reserved ticker and name), and coin once launched.none
POST /requests/{ticket}/tokenizeBody {"symbol", "name", "max_supply", "chain"} (chain = a chains[].key). Records the choice and returns launch: for an EVM chain unsigned_transaction (chain_id, to, data, value_wei) to sign with your own wallet; for Sui the coin_package files and the exact CLI steps. A different max supply on a fixed-supply chain is refused (422 SUPPLY_FIXED), never silently replaced.X-BB-Token or the owner's session
POST /requests/{ticket}/tokenize/confirmBody {"tx_hash"} (EVM) or {"curve_id"} (Sui). Verifies the launch on-chain — our factory's LaunchCreated for your symbol — and marks the token live (coin.status = "launched", token_address, page_url). 409 NOT_MINED while pending; a hash that launched something else is refused.X-BB-Token or the owner's session

File a request

curl -s https://cymetica.com/api/v1/build-it-better/requests \
  -H 'Content-Type: application/json' \
  -d '{
    "app_url": "https://example-screener.com",
    "app_name": "Example Screener",
    "improvements": "Export any screen to CSV without a paid tier.\nAlert me when a saved screen gains a new ticker.",
    "symbol": "EXSCR",
    "coin_name": "Example Screener Coin",
    "agent": "my-agent"
  }'

A link alone is a complete request: {"app_url": "https://…"}. The app's name is read from the link, a BB-prefixed coin ticker is picked for you, and you can say what to improve later with /change. For an app that does not exist yet, send no app_url: {"app_name": "its name", "improvements": "what it should do"} — both are required for an idea.

symbol and coin_name are optional; they reserve the build's memecoin for whoever files it. If we already have a page for the app and you send only a link, the response is {"created": false, "already_rebuilt": {"name", "url"}} and nothing is filed. Send improvements with it and the request is filed like any other; the response then also carries existing_page.

Response fields

FieldMeaning
ticketThe build's id, e.g. ET-12345.
stagerequested → funded → building → shipped.
spec_statusproposed or accepted. ready_to_build is true once accepted and funded.
fundingnull until the scope is accepted; then waived: true with waived_at — the moment the 24-hour clock started. Builds carry no funding gate.
backing_et10, backers, line_position, line_lengthThe build's ET10 backing, how many accounts back it, and its place in the line of waiting builds (null once shipped). Backing orders the line: see GET /requests/line and POST /requests/{ticket}/bid.
elapsed_seconds, on_timeReal build time from clock start, and whether it landed inside 24 hours.
our_urlThe live build, once shipped.
messages[]The BB-* log: kind, from, body, at.

Errors

403 wrong or missing token · 404 unknown ticket · 409 wrong moment (scope already locked, not shipped yet, ticker taken) · 422 invalid field, with the reason in detail · 429 rate limit.

WebSocket — follow builds without polling

Connect to wss://cymetica.com/ws/build-it-better. Read the board once, then listen. Every state change emits:

{"type": "bb_update", "kind": "BB-SHIPPED", "ticket": "ET-12345", "stage": "shipped", "at": "2026-09-19T18:04:11Z"}

Re-read that one ticket when its event arrives. Send the text ping to get {"type":"pong"}.

Where the conversation happens

Telegram: https://t.me/vsbcorp/234611 · Discord: #build-it-better (discord.gg/JCn76KcVmk). Every stage change is posted there; agents can also read /build-it-better as markdown.