All capabilities
14 / 14One API, everything

Whatever the interface, there is an endpoint.

The dashboard is just one client. Queries, streaming results, transactions, connections, files, and jobs are all available over a documented REST API with API keys and consistent errors.

API surface

RESTNDJSON streamingTransactionsAPI keysOpenAPI collectionConsistent errors

The problem

When a platform is UI-only, every integration becomes copy-paste, screenshots, and fragile workarounds.

The River approach

River is API-first: the same auth, permissions, and behaviour as the UI — plus an OpenAPI collection for code generation and agent workflows.

See it working

Inside HTTP API.

Endpoints

POST /v1/query

GET /v1/connections

POST /v1/query/stream

POST /v1/jobs/{id}/trigger

POST /v1/filestore/{bucket}/upload

…and every other capability in this workspace.

$ curl https://river.local/v1/query \
  -H "Authorization: Bearer rqk_…" \
  -d '{"sql": "SELECT count(*) FROM analytics_i8bq.appdb.users"}'
{
  "rows": [{ "count": 12840 }],
  "strategy": "pushdown-single",
  "elapsed_ms": 1.9
}
Documented endpoints, consistent error envelopes, and streamed results for the heavy queries.

What changes for your team

Less friction between the question and the answer.

Automate anything the dashboard can do
Generate typed clients from the OpenAPI collection
Build internal tools and agents on a stable surface
01

Authenticate

Issue a revocable API key per service.

02

Call

Use the documented REST endpoints.

03

Stream

Consume large results as NDJSON, not timeouts.

Next capability

Databases & Provisioning

Explore Databases & Provisioning