HTTP API Reference
Base URL: http://<host>:2900
Version prefix: /v1
Route Map
Health and status
GET /health(localhost-only)GET /v1/api/healthcheck(localhost-only)GET /v1/api/cluster/health(localhost-only)
SQL and files
POST /v1/api/sqlGET /v1/files/{namespace}/{table_name}/{subfolder}/{file_id}
WebSocket
GET /v1/ws
Auth
POST /v1/api/auth/loginPOST /v1/api/auth/refreshPOST /v1/api/auth/logoutGET /v1/api/auth/mePOST /v1/api/auth/setupGET /v1/api/auth/status
Topic HTTP API
POST /v1/api/topics/consumePOST /v1/api/topics/ack
Authentication Rules
Bearer token required
POST /v1/api/sqlGET /v1/files/...POST /v1/api/topics/consumePOST /v1/api/topics/ack
Basic auth is rejected on these endpoints.
Cookie or bearer accepted
POST /v1/api/auth/refreshGET /v1/api/auth/me
Public endpoints
POST /v1/api/auth/loginPOST /v1/api/auth/logoutPOST /v1/api/auth/setup(localhost-only unlessauth.allow_remote_setup = true)GET /v1/api/auth/status(localhost-only unless remote setup enabled)GET /healthandGET /v1/api/healthcheck(localhost-only)GET /v1/api/cluster/health(localhost-only)
SQL Endpoint
POST /v1/api/sql
Headers:
Authorization: Bearer <JWT_TOKEN>Content-Type: application/jsonormultipart/form-data
JSON body
namespace_id applies only to that request. Interactive clients such as the
CLI can store the namespace locally after a successful USE namespace and send
it again on later requests.
Multipart body for FILE(...)
Parts:
sqlparams(optional JSON array string)namespace_id(optional request-scoped default namespace)- file parts named
file:<placeholder>
SQL:
Multipart file key must be file:contract.
Success shape
Error shape
Common SQL error codes
INVALID_SQLPERMISSION_DENIEDTABLE_NOT_FOUNDRATE_LIMIT_EXCEEDEDNOT_LEADERCLUSTER_UNAVAILABLEFILE_TOO_LARGETOO_MANY_FILESINVALID_MIME_TYPE
File Download
GET /v1/files/{namespace}/{table_name}/{subfolder}/{file_id}
- bearer token required
- optional
user_idquery parameter for user-table scope resolution SYSTEMandSTREAMtables are rejected for file paths
Response:
200with binary content400/403/404for validation, permission, or not-found failures
Auth Endpoints
POST /v1/api/auth/login
Returns user profile + access/refresh tokens and sets auth cookie.
POST /v1/api/auth/refresh
Accepts bearer token or cookie. Returns rotated token pair.
POST /v1/api/auth/logout
Clears auth cookie.
GET /v1/api/auth/me
Returns current authenticated user info.
POST /v1/api/auth/setup
Initial bootstrap only, when root has no password yet.
Sets root password and creates the DBA user. Does not auto-login.
GET /v1/api/auth/status
Returns setup status:
Topic Endpoints
Both require bearer auth and role in {service, dba, system}.
POST /v1/api/topics/consume
Accepted start formats:
"Latest""Earliest"{ "Offset": 123 }
POST /v1/api/topics/ack
Health Endpoints
GET /health and GET /v1/api/healthcheck return the same payload and are localhost-only:
For live protocol details, continue to WebSocket Protocol.