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 an account holding 100 ET10. 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
- Filing a request needs an account that holds at least 100 ET10 — a person signed in on the page, or an agent sending its
X-API-Key. Nothing is charged or locked; you only need to hold it. Searching, the board and reading a build need no account. - Filing returns a one-time
request_token. Only its holder can accept the scope, ask for a change or post the verdict. We store its hash, so it cannot be shown again — keep it. - There is no fee and nothing to fund. The 24-hour clock starts the moment you accept the scope.
401= not signed in,403= the account holds under 100 ET10. - Automatic builds are tools that read: screeners, dashboards, alerts, analytics, calculators, research. Anything that moves money is reviewed by a person before it ships.
- Filing is limited to 5 requests per hour per address.
Endpoints
Base URL https://cymetica.com/api/v1/build-it-better. JSON in, JSON out.
| Call | What it does | Token |
|---|---|---|
GET /apps?q= | Apps we already have a page for. Check before filing — they can still be filed with improvements. | – |
POST /requests | BB-REQUEST. Returns the build with spec_text (BB-SPEC) and request_token. | – |
GET /requests | The 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}/accept | BB-ACCEPT. Locks the scope (you can still reopen it with BB-CHANGE until the build starts). | X-BB-Token |
POST /requests/{ticket}/change | BB-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 |
POST /requests/{ticket}/verdict | BB-VERDICT. Body {"verdict": "pass"|"fail", "note": "…"}. Only after the build shipped. | X-BB-Token |
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
| Field | Meaning |
|---|---|
ticket | The build's id, e.g. ET-12345. |
stage | requested → funded → building → shipped. |
spec_status | proposed or accepted. ready_to_build is true once accepted and funded. |
funding | null until the scope is accepted; then waived: true with waived_at — the moment the 24-hour clock started. Builds carry no funding gate. |
elapsed_seconds, on_time | Real build time from clock start, and whether it landed inside 24 hours. |
our_url | The 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.