Developer Portal
Programmatic access to SayNO. Currently in early availability — the waitlist API is open and requires no authentication.
● API online Version 1.0.0Overview
The SayNO API is a lightweight REST API served from the Cloudflare Workers edge. All endpoints return application/json. All errors return a structured JSON error body (never an HTML error page).
There is currently one functional resource: the waitlist. As the product evolves, additional resources (usage stats, block-session management, habit data) will be added here.
Base URL
https://saynoapp.imbtm.workers.dev
Authentication
The public API endpoints documented here require no authentication. No API key or token is needed. Simply send a valid request to the endpoint.
Future premium endpoints will use Bearer token authentication (Authorization: Bearer <token>).
Error format
All error responses (4xx, 5xx) use this structure:
Error codes: BAD_REQUEST, METHOD_NOT_ALLOWED, NOT_FOUND, CONFLICT, INTERNAL_ERROR.
Endpoints
Returns 200 when the API is reachable. Agents should call this before other endpoints to verify connectivity.
curl https://saynoapp.imbtm.workers.dev/v1/health
{
"status": "ok",
"version": "1.0.0",
"timestamp": "2026-08-24T00:00:00Z"
}
Registers a person on the SayNO early-access waitlist. Providing an email enables deduplication (same email is never stored twice) and allows SayNO to notify the user when access opens.
Request body application/json
| Field | Type | Required | Description |
|---|---|---|---|
| name * | string | Yes | Full name. 1–120 chars. |
string (email) | No | Email address. Used for deduplication and notification. |
curl -X POST https://saynoapp.imbtm.workers.dev/v1/waitlist \
-H "Content-Type: application/json" \
-d '{"name": "Alex Johnson"}'
curl -X POST https://saynoapp.imbtm.workers.dev/v1/waitlist \
-H "Content-Type: application/json" \
-d '{"name": "Alex Johnson", "email": "alex@example.com"}'
{
"success": true,
"id": "Xk9mN2pQrLvT8wYz",
"alreadyRegistered": false
}
{
"error": {
"code": "BAD_REQUEST",
"message": "The `name` field is required and must not be empty.",
"docs": "https://saynoapp.imbtm.workers.dev/openapi.json"
}
}
MCP Server
SayNO provides an MCP Server manifest at /mcp.json.
OpenAPI specification
The full OpenAPI 3.1 specification is available at:
GET /openapi.json
Use this to generate SDK clients, import into Postman/Insomnia, or feed directly to an LLM function-calling schema.
curl https://saynoapp.imbtm.workers.dev/openapi.json -o sayno-openapi.json
CLI tool
A lightweight Node.js CLI wraps the public API. Install from npm:
npm install -g sayno-cli # Usage sayno-cli waitlist join --name "Alex" --email "alex@example.com" sayno-cli health
For AI agents
If you are an AI agent integrating with SayNO, read these files:
/llms.txt— when to use SayNO, product summary, resource index/openapi.json— full API schema (OpenAPI 3.1, LLM function-calling compatible)/mcp.json— MCP server manifest/sitemap.xml— list of all public pages
All API error responses are JSON. The site returns a real HTTP 404 for paths that do not exist — not the app shell.