Skip to main content

REST API

Everything the web app does, it does through this API — so anything in the UI is automatable. Around 210 routes, grouped below by area.

Basics

  • Base URL — your gateway: http://localhost:3300 self-hosted, https://gateway.signalpilot.ai on Cloud.
  • Auth — an API key as Authorization: Bearer sp_… or X-API-Key: sp_…. In cloud mode a Clerk session JWT is also accepted for browser calls.
  • Scope — each route requires one of read, query, write, execute, or admin. See Authentication.
  • Tenancy — the workspace is always derived from the credential, never from a parameter. There is no cross-workspace read.
  • Rate limits — 10,000 req/min per IP general, 1,000/min on expensive routes, 100/min on auth routes. MCP tool calls are limited separately (SP_PER_KEY_RPM, SP_PER_ORG_RPM).
  • Body size — requests are capped at 2 MiB.
curl -H "X-API-Key: $SP_KEY" http://localhost:3300/api/connections

Connections

RouteScopePurpose
GET /api/connections · POST /api/connectionsread · writeList, create
GET·PUT·DELETE /api/connections/{name}read · write · writeInspect, update, delete
POST /api/connections/{name}/clonewriteCopy a connection
POST /api/connections/test-credentialswriteTest before saving
POST /api/connections/{name}/testreadTest an existing connection
POST /api/connections/{name}/diagnosereadConnectivity diagnostics
GET /api/connections/health · /{name}/health · /{name}/health/historyreadHealth and latency history
GET /api/connections/statsreadAggregate connection stats
GET /api/connectors/capabilities · /api/connections/{name}/capabilitiesreadTier and feature detection
POST /api/connections/export · /importwritePortability
POST /api/connections/parse-url · /validate-url · /build-urlreadConnection-string helpers
GET /api/network/infoadminEgress addresses for allowlisting

Schema

RouteScopePurpose
GET /api/connections/{name}/schema · /grouped · /compact · /enrichedreadSchema in various shapes
GET /api/connections/{name}/schema/ddlreadReconstructed DDL
GET /api/connections/{name}/schema/search · /filterreadFind tables and columns
GET /api/connections/{name}/schema/linkreadNatural language → tables
GET /api/connections/{name}/schema/relationships · /join-pathsreadFK map and join paths
GET /api/connections/{name}/schema/samples · /sample-valuesreadSample data
POST /api/connections/{name}/schema/explore · /explore-columnsreadColumn-level exploration
GET /api/connections/{name}/schema/overviewreadSize and shape summary
GET /api/connections/{name}/schema/diff · /diff/{compare} · /diff-historyreadDrift between scans or connections
GET /api/schema/changesreadRecent schema changes
POST /api/connections/{name}/schema/refresh · /api/connections/schema/warmupwriteRescan
GET /api/connections/{name}/schema/refresh-statusreadScan progress
POST /api/connections/{name}/schema/refine · /correct-columnswriteCorrections
GET·PUT /api/connections/{name}/schema/endorsementsread · writeEndorse trusted tables
GET·PUT /api/connections/{name}/semantic-model · POST …/generateread · writeSemantic model
GET /api/connections/{name}/schema/agent-contextreadThe bundle handed to an agent

Xata branches

RouteScope
GET·POST /api/connections/{name}/xata/projects/{project}/branchesread · write
DELETE /api/connections/{name}/xata/projects/{project}/branches/{branch}write
GET /api/connections/{name}/xata/branch-diffread
GET /api/connections/{name}/xata/dbt-profilewrite

Query, governance and audit

RouteScopePurpose
POST /api/queryqueryGoverned SQL
POST /api/query/explainqueryPlan without executing
GET /api/audit · /api/audit/statsreadAudit trail and aggregates
GET /api/audit/exportadminJSON/CSV compliance export
POST·GET·DELETE /api/budget…write · read · writeSession budgets
GET·PUT /api/connections/{name}/piiread · writePII rules
POST /api/connections/{name}/detect-pii · /detect-and-save-piiwritePII detection
GET /api/connections/{name}/annotations · POST …/annotations/generateread · writeTable and column policy
GET /api/cache/stats · POST /api/cache/invalidateread · writeCaches
GET /api/schema-cache/stats · POST /api/schema-cache/invalidateread · writeSchema cache
GET /api/pool/statsreadConnection pools
GET /api/security/statusSecurity posture summary

Knowledge base

RouteScope
GET /api/knowledge · GET /api/knowledge/{id}read
POST /api/knowledge · PUT·DELETE /api/knowledge/{id}admin
POST /api/knowledge/{id}/approveadmin
GET /api/knowledge/{id}/editsread
GET /api/knowledge/retrievals · /usageread

Evals

Covered in full, with semantics, in Running evals. All eval routes additionally require platform-staff access and an allow-listed workspace.

Projects, workspaces and notebooks

RouteScope
GET·POST /api/projects · GET·PUT·DELETE /api/projects/{name}read · write
POST /api/projects/{name}/scanwrite
POST /api/dbt-cloud/projectsadmin
GET·POST /api/workspace-projects · GET·PUT·DELETE /api/workspace-projects/{id}read · write
GET /api/workspace-projects/{id}/clone-urlread
GET·DELETE /api/notebook-sessions/{id} · POST …/pingread · write · read
GET /api/files/browsewrite

Sandboxes

RouteScope
GET /api/sandboxes · GET /api/sandboxes/{id}read
POST /api/sandboxes · DELETE /api/sandboxes/{id}execute
POST /api/sandboxes/{id}/executeexecute

Agents, chat and reports

RouteScope
POST·GET /api/agent-runs · GET·PATCH /api/agent-runs/{id}write · read
POST·GET /api/chat/conversations · …/{id} · …/{id}/messageswrite · read
POST·GET /api/chat/traces/threads · …/{id}/eventswrite · read
GET /api/analysis-trails/resolveread
GET /api/reports · GET /api/reports/{id}read
POST·PATCH·DELETE /api/reports/{id}admin

Integrations

RouteScope
GET /api/github/install-url · GET /api/github/installationswrite · read
GET /api/github/installations/{id}/reposread
POST·GET·DELETE /api/github/repo-links…write · read · write
POST /api/github/sync/{project_id} · POST /api/github/fetch/{project_id}write · read
POST /api/github/webhook— (HMAC-verified)
POST /api/github/bot/scanadmin
GET /api/integrations/slack/oauth/start · /installationswrite · read
POST /api/integrations/slack/oauth/{id}/provision · DELETE …/{id}write
GET /api/integrations/notion/oauth/start · /installations · /{id}/pageswrite · read
POST /api/integrations/notion/oauth/{id}/provision · DELETE …/{id}write
GET·PUT·DELETE /api/integrations/notion/{name} · POST …/testread · write · read

Administration

RouteScope
GET·POST·DELETE /api/keys…admin
GET /api/planread
GET·PUT /api/settingsadmin
GET·POST·DELETE /api/schema-watches… · POST …/{id}/runread · admin
GET·PUT /api/org/secretsread · write
GET /api/org/secrets/anthropic-keyexecute
GET·PUT /api/user/secretsread · write
BYOK — see BYOKadmin
GET·POST /api/demo/connectorread · write

Operational endpoints

RouteNotes
GET /healthLiveness only. Returns {"status":"healthy"} without checking the database or pools — do not use it as a readiness probe.
GET /api/metricsAn authenticated SSE stream of live metrics, not a Prometheus scrape target. Capped at 20 concurrent streams.
GET /local-api-keyLocal mode only: hands the browser the local key.

Mounted sub-applications

Beyond the JSON API, the gateway mounts a git HTTP endpoint (workspace push and pull), a notebook proxy, and a dbt proxy. The dbt proxy is the only consumer of the dbt_proxy scope.