API Reference
Stable VSLZ API v1 for API-key-authenticated integrations. This surface covers the routes used by direct clients and the local MCP server.
Authorization: Bearer vslz_.... API keys are created in Settings and can be revoked at any time.wait=false on POST /api/v1/analyze to get a run_id, then poll or cancel.Analyze
Run multi-step analysis either synchronously in one request or asynchronously with a durable run record.
Analyze data
Create or reuse a session, resolve file hints, and run the VSLZ analysis pipeline.
POST /api/v1/analyzemessagesession_idfile_idsmodelwaitmax_iterationsdata.run_iddata.session_iddata.outputsdata.assistant_text{
"waitTrueRequest": {
"message": "Build a revenue by region chart for this quarter.",
"session_id": "sess_123",
"file_ids": ["file_sales_q1"],
"wait": true
},
"waitTrueResponse": {
"ok": true,
"data": {
"session_id": "sess_123",
"assistant_text": "Revenue is strongest in North America...",
"outputs": [
{
"id": "out_123",
"type": "chart"
}
]
}
},
"waitFalseRequest": {
"message": "Profile anomalies in the uploaded pipeline logs.",
"wait": false
},
"waitFalseResponse": {
"ok": true,
"data": {
"run_id": "run_123",
"session_id": "sess_456",
"status": "running"
}
}
}Runs
Poll durable async runs and request cancellation.
Get run status
Return the current status, progress snapshot, result payload, and terminal error state for an async run.
GET /api/v1/runs/:runIddata.statusdata.progressdata.resultdata.error{
"ok": true,
"data": {
"run_id": "run_123",
"session_id": "sess_456",
"status": "running",
"progress": {
"stage": "workflow_started",
"status": "running"
},
"started_at": "2026-03-28T09:12:00.000Z",
"finished_at": null,
"result": null,
"error": null,
"credits_used": 0
}
}Cancel run
Mark a queued or running run as cancel requested and attempt to cancel the backing workflow execution.
POST /api/v1/runs/:runId/canceldata.statusdata.cancellation_requesteddata.workflow_cancel_sent{
"ok": true,
"data": {
"run_id": "run_123",
"status": "cancel_requested",
"cancellation_requested": true,
"workflow_cancel_sent": true
}
}Files and schemas
Upload source files, list them by scope, and fetch the generated schema card for a file.
Upload file
Upload a CSV, TSV, JSON, or XLSX file into a session or the global library.
POST /api/v1/uploadfilescopesession_idkinddata.scopedata.file.iddata.file.column_names{
"ok": true,
"data": {
"scope": "session",
"file": {
"id": "file_sales_q1",
"name": "sales-q1.csv",
"row_count": 4812,
"column_names": ["region", "revenue", "date"]
}
}
}List files
Return global files plus optional session-scoped files for a given session.
GET /api/v1/filessession_iddata.global_filesdata.session_files{
"ok": true,
"data": {
"session_files": [
{ "id": "file_sales_q1", "name": "sales-q1.csv" }
],
"global_files": [
{ "id": "file_reference", "name": "product-catalog.xlsx" }
]
}
}Get schema card
Fetch the generated schema card for a session or global file ID.
GET /api/v1/schema/:fileIddata.sourcedata.schema.contentdata.schema.tier2_complete{
"ok": true,
"data": {
"source": "session",
"schema": {
"id": "schema_123",
"tier2_complete": false,
"content": {
"rows": 4812,
"columnsCount": 3
}
}
}
}Query and outputs
Run a synchronous query and fetch either chart payloads or downloadable output files.
Run query
Shortcut to `/api/v1/analyze` with `wait=true` so the result returns in one response.
POST /api/v1/querymessagesession_idfile_idsmodelmax_iterationsdata.assistant_textdata.outputs{
"ok": true,
"data": {
"session_id": "sess_123",
"assistant_text": "The strongest margin compression came from wholesale accounts.",
"outputs": [
{
"id": "out_123",
"type": "chart"
}
]
}
}Get output
Return chart JSON metadata or download a generated file output for a session.
GET /api/v1/outputs/:outputIdsession_idversion_iddata.typedata.codebinary download{
"ok": true,
"data": {
"type": "chart",
"output_id": "out_123",
"version_id": "ver_456",
"version_number": 2,
"label": "Revenue by region",
"chart_type": "bar",
"code": "{ ... chart config ... }"
}
}Sessions and keys
List workspace sessions and manage API keys used by MCP clients and direct integrations.
List sessions
Return sessions for the authenticated account ordered by recent activity.
GET /api/v1/sessionslimitoffsetdata.sessionsdata.limitdata.offset{
"ok": true,
"data": {
"sessions": [
{
"id": "sess_123",
"name": "Q1 revenue deep dive",
"run_status": "completed"
}
],
"offset": 0,
"limit": 25
}
}Create API key
Create a new API key from an authenticated workspace session and return the plain text key once.
POST /api/v1/keysnamescopesexpires_atdata.keydata.plain_text_key{
"ok": true,
"data": {
"key": {
"id": "key_123",
"name": "Claude Desktop",
"prefix": "vslz_abcd"
},
"plain_text_key": "vslz_abcdefghijklmnopqrstuvwxyz"
}
}List API keys
Return API key metadata for the authenticated workspace user.
GET /api/v1/keysdata[]{
"ok": true,
"data": [
{
"id": "key_123",
"name": "Claude Desktop",
"prefix": "vslz_abcd",
"scopes": ["mcp"],
"revoked_at": null
}
]
}Revoke API key
Soft-revoke an API key so it stops authorizing new requests immediately.
DELETE /api/v1/keys/:keyIddata.revoked{
"ok": true,
"data": {
"revoked": true
}
}