Early. These endpoints power SmoothOS today and may still change. Reference documentation lives inside the product for early-access agencies; a public developer program, partner keys and outgoing webhooks aren't available yet.
Authentication
Every request carries a signed-in user's access token in the Authorization header as a Bearer token. There are no separate API keys. SAI reads and writes with that person's session, so the database's row-level security decides what it can see, not the model. When a tool hits a permission wall, SAI doesn't estimate; it says the information isn't visible with that access.
POST /functions/v1/sai/chat
One turn of conversation. Send a message and, optionally, the record on screen (context), a threadId, an agent, a task and a locale. The response returns threadId, reply, agent (operator, finance, delivery, brand or growth), model, locale, region, grounding and the tools it called. Without a threadId, a new thread opens if the user may keep conversations; otherwise the turn is stateless and threadId is null.
curl -X POST "$SMOOTHOS_API/functions/v1/sai/chat" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Which invoices are overdue?", "locale": "en-US", "context": {"route": "/admin"}}'POST /functions/v1/sai/action
A single tool call with no model involved, for widgets and shortcuts. Send tool and args, get back tool and result. Tools available today: get_financial_summary (paid, open, overdue and due-in-30-days totals by currency for a period), get_project_kpis (status, progress, tasks, time against budget, billed and paid for one project) and get_client_dossier (a brand's approved memory). All run with the caller's permissions.
curl -X POST "$SMOOTHOS_API/functions/v1/sai/action" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tool": "get_financial_summary", "args": {"from": "2026-10-01", "to": "2026-10-31"}}'POST /functions/v1/sai/context
Returns what SAI would load for a screen: the record and the brand behind it. Send a page context with a route, an optional title and an optional entity made of kind, id and label. The web app builds this shape from the current page, and the mobile app planned for later will send the same one.
Languages
SAI always answers in the user's locale, whatever language the data is in. The locale comes from the request's locale field, then the Accept-Language header, then the user's saved language. The product supports English, Turkish and Arabic.
Models and keys
Each turn goes to one of three tiers: bulk for long reading (Gemini 3.6 Flash), reason for tools, money, scope and answers from records (Claude Sonnet 5.5) and quick for short questions with no record on screen (Claude Haiku 5.5). Calls run on SmoothOS's own provider accounts and count against the agency's monthly AI credits; when they run out, SAI answers 402 ai_credits_exhausted. Every call is logged with its model, tokens and cost.
Errors
401 unauthorized: the token is missing or invalid. 403 no_agency: the user doesn't belong to an agency. 409 ai_not_configured: the agency hasn't set up an AI provider. 400 invalid_message or unknown_tool: the message or the tool name isn't valid.
Not there yet
Streaming responses, write tools such as creating a task or drafting an invoice (each with an approval step) and mobile push notifications are planned, not shipped. There are no outgoing webhooks for partners yet.
License
SmoothOS is source-available under the Business Source License 1.1, and each release becomes Apache 2.0 three years later. A self-hosted Community Edition is on the way, with a waitlist.