modellerUpdated 2026-05-04

API Reference

What this covers

REST API endpoint reference for Tessallite. All endpoints require HTTP Basic authentication unless stated otherwise. See API Authentication for credential and role details.

Base URL: http://HOST:3000/api/v1

REST API endpoint paths are subject to change between major versions. Check release notes when upgrading across major versions.

Health

MethodPathAuth requiredDescription
GET/healthNoReturns {"status":"ok","db_migration":"N"}. Use to verify the Frontend service is reachable.

Workspaces

System Admin only.

MethodPathAuth requiredDescription
GET/workspacesSystem AdminList all workspaces
POST/workspacesSystem AdminCreate a workspace. Body: {"slug":"acme","display_name":"Acme Corp","admin_email":"admin@acme.com"}
GET/workspaces/{slug}System AdminGet workspace details
DELETE/workspaces/{slug}System AdminDelete workspace (irreversible — removes all projects, models, and aggregates)

Projects

Tenant Admin or Modeller.

MethodPathAuth requiredDescription
GET/workspaces/{slug}/projectsTenant Admin or ModellerList all projects in the workspace
POST/workspaces/{slug}/projectsTenant AdminCreate a new project
GET/workspaces/{slug}/projects/{id}Tenant Admin or ModellerGet project details
DELETE/workspaces/{slug}/projects/{id}Tenant AdminDelete project and all its models and aggregates

Aggregates and diagnostics

Modeller or higher.

MethodPathAuth requiredDescription
GET/workspaces/{slug}/projects/{id}/aggregatesModellerList aggregates with status (Ready, Building, Stale, Error)
POST/workspaces/{slug}/projects/{id}/aggregates/{agg_id}/refreshModellerTrigger immediate aggregate refresh (async; poll GET aggregates to check status)
GET/workspaces/{slug}/projects/{id}/diagnosticsModellerGet model health diagnostics (schema drift, permission errors, build failures)

Model definition

MethodPathAuth requiredDescription
GET/workspaces/{slug}/projects/{id}/modelModellerGet model definition: tables, joins, dimensions, measures

Headless API (query-router)

JSON-in, JSON-out query interface for non-SQL clients. Base URL for headless: http://HOST:3000/query-router/api/v1/headless.

MethodPathAuth requiredDescription
POST/queryJWTExecute a semantic query. Body: {project_id, model_id, measures, dimensions, filters, limit, offset, order_by}. Returns {columns, rows, total_rows, query_id}.
GET/modelsJWTList all models accessible to the caller's tenant.
GET/models/{model_id}/measuresJWTList measures in a model with name, display_name, format, aggregation_type, variant_kind.
GET/models/{model_id}/dimensionsJWTList dimensions in a model with name, display_name, is_time_dim.

Rate limit: 100 requests/minute per tenant (configurable via HEADLESS_RATE_LIMIT env var). Returns 429 Too Many Requests when exceeded. All responses include the X-RateLimit-Remaining header.

See Headless API for full documentation with worked examples.

Related