ReferenceAPI Reference

API Reference

Hotdata exposes a /v1/* HTTP API at api.hotdata.dev.

OpenAPI 3.1 specification

View

Authentication

Most /v1/* endpoints require these headers:

Authorization: Bearer <api_token>
X-Workspace-Id: <workspace_id>
  • Authorization — Org-scoped API token obtained via CLI login or the dashboard.
  • X-Workspace-Id — Public ID of the target workspace.

Operations that need a narrower scope take an extra header — those are listed on the endpoint itself.

All endpoints

Workspaces

MethodPathOperation
GET/v1/workspacesList workspaces
POST/v1/workspacesCreate a workspace
DELETE/v1/workspaces/{public_id}Delete a workspace

Query

MethodPathOperation
POST/v1/queryExecute SQL query

Information Schema

MethodPathOperation
GET/v1/information_schemaList tables

Results

MethodPathOperation
GET/v1/resultsList results
GET/v1/results/{id}Get result

Query Runs

MethodPathOperation
GET/v1/query-runsList query runs
GET/v1/query-runs/{id}Get query run

Uploads

MethodPathOperation
POST/v1/uploadsCreate upload session
POST/v1/uploads/batchCreate upload sessions in bulk
POST/v1/uploads/{upload_id}/finalizeFinalize upload
POST/v1/uploads/{upload_id}/partsMint upload part URLs

Saved Queries

MethodPathOperation
GET/v1/queriesList saved queries
POST/v1/queriesCreate saved query
GET/v1/queries/{id}Get saved query
PUT/v1/queries/{id}Update saved query
DELETE/v1/queries/{id}Delete saved query
POST/v1/queries/{id}/executeExecute saved query
GET/v1/queries/{id}/versionsList saved query versions

Indexes

MethodPathOperation
GET/v1/indexesList indexes across tables in a database

Embedding Providers

MethodPathOperation
GET/v1/embedding-providersList embedding providers
POST/v1/embedding-providersCreate embedding provider
GET/v1/embedding-providers/{id}Get embedding provider
PUT/v1/embedding-providers/{id}Update embedding provider
DELETE/v1/embedding-providers/{id}Delete embedding provider

Jobs

MethodPathOperation
GET/v1/jobsList jobs
GET/v1/jobs/{id}Get job status

Database context

MethodPathOperation
GET/v1/databases/{database_id}/contextList database contexts
POST/v1/databases/{database_id}/contextCreate or update database context
GET/v1/databases/{database_id}/context/{name}Get one database context
DELETE/v1/databases/{database_id}/context/{name}Delete database context

Databases

MethodPathOperation
GET/v1/databasesList databases
POST/v1/databasesCreate database
POST/v1/databases/bulkCreate many databases at once
GET/v1/databases/bulk/{batch_id}Get a database batch
DELETE/v1/databases/bulk/{batch_id}Delete a database batch
GET/v1/databases/by-nameLook up a database by name
GET/v1/databases/countCount databases
GET/v1/databases/{database_id}Get database
DELETE/v1/databases/{database_id}Delete database
POST/v1/databases/{database_id}/catalogsAttach catalog to database
DELETE/v1/databases/{database_id}/catalogs/{connection_id}Detach catalog from database
POST/v1/databases/{database_id}/forkFork database
GET/v1/databases/{database_id}/lineageGet database lineage
POST/v1/databases/{database_id}/schemasAdd schema to database default catalog
POST/v1/databases/{database_id}/schemas/{schema}/tablesAdd table to database default catalog
PUT/v1/databases/{database_id}/schemas/{schema}/tables/{table}/constant-per-keyDeclare which columns are constant per key
POST/v1/databases/{database_id}/schemas/{schema}/tables/{table}/loadsLoad database table from inline data, upload, or query result

Usage

MethodPathOperation
GET/v1/usageGet workspace usage snapshot

Error responses

Failures carry a non-2xx HTTP status and a JSON body. Each endpoint lists the statuses it can return; the bodies use these shapes:

ApiErrorResponse

Standard error response body. Used by 84 responses.

  • error ApiErrorDetailrequired. Error detail within an API error response
    • code stringrequired
    • message stringrequired
{
  "error": {
    "code": "string",
    "message": "string"
  }
}

Error

Used by 11 responses.

  • error stringrequired. Machine-readable error code.
{
  "error": "missing_authorization"
}

Rate limiting

API requests are rate limited. When a limit is exceeded the API returns 429 Too Many Requests with a Retry-After header giving the seconds to wait before retrying.