Skip to content

HTTP API overview

Use https://api.wabe.sh and send Authorization: Bearer YOUR_PROJECT_API_KEY on authenticated requests. Follow the quickstart to create a project disk.

The plain-text documentation index links to the Markdown version of each page.

Browse the API Reference or download the Cloud OpenAPI schema.

Method Path Result
GET /health ok plus newline.
GET /v1/disks List disk names in the project.
PUT /v1/disks/{disk} Create a project disk.
GET /v1/disks/{disk}/files/{path} File bytes.
PUT /v1/disks/{disk}/files/{path} Replace a file; return byte count and metadata.
GET /v1/disks/{disk}/entries?path=/ NDJSON directory children.
POST /v1/disks/{disk}/exec NDJSON shell or JS execution events.
POST /v1/disks/{disk}/kv/{namespace} JSON KV operation or NDJSON scan.
POST /v1/disks/{disk}/sqlite/{database}/hrana/v3/pipeline Hrana JSON v3 pipeline.
POST /v1/disks/{disk}/sqlite/{database}/hrana/v3/cursor Hrana JSON v3 cursor with NDJSON records.
POST/PUT /v1/disks/{disk}/redis/{namespace} Redis command array.
GET/POST/PUT /v1/disks/{disk}/redis/{namespace}/{command} Redis path command, pipeline or multi.
PUT /v1/disks/{disk}/config?chunk_bytes=N Set the size used by future file writes.

File POST appends bytes and DELETE removes a file or empty directory. Versioning also covers stat, mkdir, move, independently writable branches, commits, labels, history and restore. Configuration supports GET/PATCH for autosave and retention settings. Notification GET/POST reads or configures the optional change journal.

The standalone server specification describes the embedded API and its stream record schemas. Direct flush, eviction and garbage collection endpoints belong to self-hosting.

Use SQLite for SQL on wabe Cloud. The experimental Turso engine requires a self-hosted build.

The former custom /v1/disks/{disk}/sql/{database} and /v1/disks/{disk}/libsql/{database}/v3/* routes are disabled. Authenticated requests receive 404, with no redirect.

Use the Actor API to register an external HTTPS handler with a project key. Select the disk when you invoke the actor.

Method Path Result
POST, GET /v1/actor Register or list actor endpoints in a project.
GET, PATCH, DELETE /v1/actor/{name} Read, update or delete a registration by name.
HTTP or WebSocket /v1/actor/{name}/disks/{disk}/instances/{instance}/fetch Invoke a named instance with a project key. Create the disk if needed.
HTTP or WebSocket /v1/actor/{actor_id}/instances/{instance}/fetch Invoke an instance on the registration’s default disk using the application’s authentication.

The handler accepts the broker’s WebSocket upgrade and speaks the actor transport protocol. The standalone Disk specification above describes storage routes.

disk, namespace and SQL database contain 1-128 ASCII letters, digits, underscores or hyphens. Create the disk first with PUT. Data requests activate an existing disk on demand. Namespace access requires no separate create request. First SQL access opens or creates the named database. For example, /v1/disks/demo/sqlite/mydb/hrana/ selects database mydb on disk demo; the SDK appends the v3 operation path. GET /v1/disks lists disks in the current project.

A file path can contain several components. URL-encode each component while preserving / separators. Directory and script paths supplied in query parameters need normal query encoding.

File PUT accepts raw bytes. KV uses JSON with an op field and Content-Type: application/json. Exec uses its body as source unless a script or path query selects the source; then the body is stdin. Versioning and storage configuration use JSON bodies; see branches and history.

File GET returns raw bytes. Directory listing and KV scan return NDJSON entries. Exec returns NDJSON events and a terminal exit code. SQL queries use Hrana JSON pipeline responses or NDJSON cursor records. Commit acknowledgements confirm buffered state; cursor completion alone does not commit an open transaction. Other successful operations return JSON, except configuration updates, which return 204 with an empty body. SQL errors can appear inside a successful HTTP response; inspect the protocol result or use the SDK’s error handling.

Errors before a response starts use HTTP status codes and usually a text body. Redis command routes and SQL protocol errors use JSON error envelopes; some SQL framework or name errors return text. Exec can report a runtime failure after HTTP 200; inspect the exit record. See errors and retries and streaming.