HTTP API reference
Request parameters, response examples, agent runs, streaming, errors, and the complete HTTP endpoint directory.
The Unity HTTP API gives your application access to reports, model metadata, queries, visuals, and assistant runs. Authenticate with a personal API key and use resource IDs discovered from the API.
Start with the API quickstart to create a key and set UNITY_API_BASE and UNITY_API_KEY. The examples here use the same environment variables. All example IDs, names, and results are illustrative.
Authentication
Send this header with every private request:
Authorization: Bearer YOUR_UNITY_API_KEY
Use Content-Type: application/json when sending a JSON body. A bearer client does not need a browser cookie or CSRF token. The verified account is derived from the key. Omit caller fields such as userId; if supplied, they must match the authenticated account.
workspace:read permits GET and HEAD workspace requests. workspace:write is required for other methods, including POST endpoints that only read data. Keys with write access include read access. Account and token management, sharing grants, collaboration administration, and billing require a browser session.
The hosted base URL is https://unityapp-backend.azurewebsites.net. Replace it with your backend's origin for other deployments. These routes currently expose Unity's application API; they are not a versioned /api/v1 contract. Check the runtime documentation when developing against a different release.
List reports
GET /api/reports · workspace:read
Returns reports accessible to the token's account. No query parameters are required. The response is an array, with an empty array when there are no accessible reports.
curl --fail-with-body "$UNITY_API_BASE/api/reports" \
-H "Authorization: Bearer $UNITY_API_KEY"
Example response, with some fields omitted:
[
{
"id": "YOUR_REPORT_ID",
"reportName": "Sales overview",
"accessLevel": "Owner",
"activeConnection": {
"id": 123,
"name": "Sales warehouse",
"serverType": "SQLServer",
"isActive": true
}
}
]
activeConnection can be null. The response also includes owner and creation metadata. Use the workspace endpoint to discover the report's full working context.
Retrieve a workspace
GET /api/reports/{report_id}/workspace · workspace:read
| Parameter | Type | Required | Description |
|---|---|---|---|
report_id | string, path | Yes | An accessible report ID. |
Returns the authorized workspace, including pages, connections, and report state used by the application. A report outside the caller's access is rejected; a key does not grant access to an arbitrary report ID.
The response contains reportId, reportName, hasPermission, accessLevel, pages, and connections. Each page includes a numeric PageID and a stable PageUID. Use the numeric PageID for the Data Chat endpoints below; HTML tools use the stable UUID. Preserve the exact field names expected by each operation.
curl --fail-with-body \
"$UNITY_API_BASE/api/reports/$UNITY_REPORT_ID/workspace" \
-H "Authorization: Bearer $UNITY_API_KEY"
Search report resources
GET /api/reports/{report_id}/catalog · workspace:read
Search pages, visuals, and connections without loading every visual's details. Add detail=true when you need expanded matches.
| Parameter | Type | Default | Description |
|---|---|---|---|
report_id | string, path | Required | Report to inspect. |
kind | string, query | all | all, page, visual, or connection. |
query | string, query | Empty | Search text. |
pageId | integer, query | Omitted | Restrict results to a page. |
currentPageId | integer, query | Omitted | Current page context. |
visualKey | repeated string, query | Omitted | Exact visual keys from an earlier catalogue result. |
detail | string, query | Omitted | Set to true for expanded details. |
offset | integer, query | 0 | Starting offset. |
limit | integer, query | 40 | Page size, from 1 to 100. |
curl --fail-with-body --get \
"$UNITY_API_BASE/api/reports/$UNITY_REPORT_ID/catalog" \
-H "Authorization: Bearer $UNITY_API_KEY" \
--data-urlencode "kind=visual" \
--data-urlencode "query=revenue" \
--data-urlencode "detail=true" \
--data-urlencode "limit=10"
The response includes items, total, offset, complete, nextOffset, and missingVisualKeys, with status: "success" on a successful request. While complete is false, request the next page using offset=nextOffset. Preserve returned resource identifiers rather than guessing IDs from titles.
Discover the data model
GET /api/connection-models/{connection_id}/catalog · workspace:read
Inspect queryable model entities, fields, and relationships. Pass reportId when using a connection through a report, especially a shared report. Connection-owner access and report-attached access are checked separately.
| Parameter | Type | Default | Description |
|---|---|---|---|
connection_id | integer, path | Required | Connection attached to the intended report. |
reportId | string, query | Omitted | Report authorization context. Include it for report workflows. |
kind | string, query | all | all, entity, field, or relationship. |
query | string, query | Empty | Search by model terminology. |
fieldUid | repeated string, query | Omitted | Retrieve specific model fields by UID. |
offset | integer, query | 0 | Starting offset. |
limit | integer, query | 40 | Page size, from 1 to 100. |
curl --fail-with-body --get \
"$UNITY_API_BASE/api/connection-models/$UNITY_CONNECTION_ID/catalog" \
-H "Authorization: Bearer $UNITY_API_KEY" \
--data-urlencode "reportId=$UNITY_REPORT_ID" \
--data-urlencode "kind=field" \
--data-urlencode "query=revenue" \
--data-urlencode "limit=20"
Use identifiers from the response in model-scoped SQL. The selected table-and-column schema is also available at GET /get-selected-schema/{report_id}?connectionId={connection_id}. The /get-selected-schema path has no /api prefix.
Model results include items, total, offset, complete, nextOffset, modelRevision, snapshotVersion, and missingFieldUids. While complete is false, pass nextOffset as the next request's offset.
Execute SQL
POST /api/sql/execute · workspace:write
Runs a single read-only SQL query against an authorized connection. It validates the authored SQL and the SQL produced by model compilation. It does not accept database writes, commands, or multiple statements. A successful query returns data; it does not save a report visual.
| Body parameter | Type | Default | Description |
|---|---|---|---|
reportId | string | Required | Report containing the connection. |
connectionId | integer | Required | Connection to query. |
sqlQuery | string | Required | Read-only SQL using the discovered model identifiers and source dialect. |
rowLimit | integer | 1000 | Requested result limit. Use a small value while exploring. |
skipLimit | boolean | false | Skip Unity's additional limit. Usually leave this false. |
Example request body, assuming an orders entity with region and amount fields:
{
"reportId": "YOUR_REPORT_ID",
"connectionId": 123,
"sqlQuery": "SELECT region, SUM(amount) AS revenue FROM orders GROUP BY region ORDER BY region",
"rowLimit": 5
}
Save your request body as query.json and submit it:
curl --fail-with-body "$UNITY_API_BASE/api/sql/execute" \
-H "Authorization: Bearer $UNITY_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @query.json
The result contains columns, rows, column metadata when available, limitApplied, and rowLimit. Row values correspond to the column order. rowLimit can be null when Unity did not add a limit. Decimal results may be strings. Inspect HTTP status and the error payload before treating a response as data.
Use the rowLimit option instead of adding SQL Server TOP (n) solely for previewing. The current limit rewriter does not consistently recognize the parenthesized form and can reject the rewritten query. A model-scope error usually means a physical table name was used where the semantic entity name was expected. Re-read the catalogue before changing the query.
See the quickstart for equivalent Python and JavaScript requests.
Inspect and update visuals
Use GET /api/visuals/capabilities?kind={kind} to discover the accepted definition for a visual type. Use GET /api/visuals/state?reportId={report_id}&type={type}&id={id} to retrieve a saved visual's state and revision.
Omit kind to list the available visual kinds. Repeat the kind query parameter for full definitions of up to three kinds per request. The response includes a schemaVersion and the requested kinds.
Supported visual capabilities are discoverable from the endpoint; the native family includes bar graphs, line graphs, scatter plots, pie charts, data tables, data cards, text boxes, shapes, and declarative charts. HTML pages and HTML visuals have their own operations in the directory below.
An update uses POST /api/visuals/update with workspace:write and report editing permission. Inspect first, then pass the returned revision as expectedRevision so a stale update can be rejected.
| Body parameter | Type | Description |
|---|---|---|
reportId | string | Required report ID. |
type | string | Required visual type, such as barGraph. |
id | string or integer | Required stable visual UUID or legacy numeric visual ID. |
changes | object | Fields to change, such as title, position, customization, or sql_query. |
expectedRevision | string | Current revision token returned by inspection, such as 0x0000000000000003. Include it to detect conflicting edits. |
refreshData | boolean | Defaults to true. Set false for an update that does not need query results. |
Example body for a title edit. Replace the IDs and revision with inspected values:
{
"reportId": "YOUR_REPORT_ID",
"type": "barGraph",
"id": 456,
"expectedRevision": "0x0000000000000003",
"changes": { "title": "Revenue by region" },
"refreshData": false
}
Save this as visual-update.json, then submit it. This request changes the saved visual.
curl --fail-with-body "$UNITY_API_BASE/api/visuals/update" \
-H "Authorization: Bearer $UNITY_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @visual-update.json
POST /api/visuals/create creates a visual from reportId, type, pageId, connectionId, definition, and position. Use the capability endpoint to construct the exact definition for that visual type. Do not reuse the agent tool's JSON-string parameters as an HTTP body: the HTTP adapter accepts objects such as definition and changes directly.
Successful mutations return their operation results or receipts. A 409 response with code: "visual_conflict" includes currentRevision; re-inspect and reconcile the change before retrying. Invalid definitions and output contracts can return 422.
Create an agent run
POST /api/agent/runs · workspace:write
Ask Unity's assistant to perform work in an existing Data Chat. The request is queued and returns 202 Accepted. The assistant can inspect, query, and edit according to your request and permissions. An analytical question can execute SQL; a request to build or edit can save report changes.
Create a conversation
Use GET /api/datachats?reportId={report_id}&pageId={page_id} to find chats on a page, or create one with POST /api/datachats/add:
{
"reportId": "YOUR_REPORT_ID",
"activePage": 789,
"name": "API exploration"
}
activePage is the required page ID for this endpoint. The create response is 201 and contains the new DataChatID. The run endpoint uses that value in a field named dataChatId. The page and conversation must belong to the supplied report.
Request body
| Parameter | Type | Description |
|---|---|---|
reportId | string | Required report ID. |
dataChatId | integer | Required existing Data Chat ID. |
user_input | string | Requested work, up to 50,000 characters. A message or supported attachment is required. |
mode | string | Defaults to data_chat. Also accepts visual_assistant for a valid selected visual and its bound chat. |
clientRequestId | string | Optional client-generated ID, up to 64 characters, used to deduplicate submission of the same request. Reuse it only when retrying that submission. |
visualId | integer | Required with visual_assistant. |
visualType | string | Required with visual_assistant. Must identify the selected visual type. |
The endpoint also accepts application conversation, attachment, selection, and layout context. For a basic external integration, use a regular data_chat run as shown below. Read the runtime continuity and visual-editing guides before implementing the advanced conversation scopes.
This complete Node.js example creates a chat, submits a question, polls the run, and reads the resulting conversation events. Set UNITY_REPORT_ID and UNITY_PAGE_ID to IDs discovered from the workspace. The request creates a conversation and runs the assistant.
import { randomUUID } from "node:crypto";
import { setTimeout as delay } from "node:timers/promises";
const base = process.env.UNITY_API_BASE.replace(/\/$/, "");
const reportId = process.env.UNITY_REPORT_ID;
const pageId = Number(process.env.UNITY_PAGE_ID);
async function request(path, body) {
const response = await fetch(base + path, {
method: body === undefined ? "GET" : "POST",
headers: {
Authorization: `Bearer ${process.env.UNITY_API_KEY}`,
...(body === undefined ? {} : { "Content-Type": "application/json" }),
},
...(body === undefined ? {} : { body: JSON.stringify(body) }),
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
return response.json();
}
const chat = await request("/api/datachats/add", {
reportId, activePage: pageId, name: "API exploration",
});
const accepted = await request("/api/agent/runs", {
reportId,
dataChatId: chat.DataChatID,
user_input: "Inspect this report's data model and summarize what I can analyze. Do not edit the report.",
mode: "data_chat",
clientRequestId: randomUUID(),
});
const runId = accepted.run.run_id;
console.log("Run:", runId);
let run = accepted.run;
const deadline = Date.now() + 180_000;
while (["queued", "running"].includes(run.status) && Date.now() < deadline) {
await delay(2000);
({ run } = await request(`/api/agent/runs/${runId}`));
}
console.log("Status:", run.status, run.error_message);
const feed = await request(`/api/agent/runs/${runId}/events?view=conversation&afterSequence=0`);
console.log(JSON.stringify(feed.events, null, 2));
// If still queued or running, resume polling with this runId later.
// The local deadline does not cancel the server-side run.
Example acceptance response, with timing and timestamp fields omitted:
{
"created": true,
"run": {
"run_id": "YOUR_RUN_ID",
"datachat_id": 101,
"report_id": "YOUR_REPORT_ID",
"mode": "data_chat",
"status": "queued",
"phase": "queued",
"error_message": null
}
}
The actual response also contains client_request_id, status messages, attempt count, timestamps, and timings. A repeated submission with the same deduplication identity can return created: false and the existing run. Keep the run ID after acceptance.
Retrieve progress and results
| Endpoint | Scope | Returns |
|---|---|---|
GET /api/agent/runs/{run_id} | read | { "run": { ... } } with status, phase, messages, and timestamps. |
GET /api/agent/runs/{run_id}/events?view=conversation&afterSequence=0 | read | Run, conversation events, and a cursor for the next poll. |
GET /api/agent/runs/{run_id}/events?afterSequence=0 | read | Detailed stored events and tool_calls for an initialized run. |
GET /api/agent/runs/{run_id}/stream | read | Live server-sent events when that run is available on the serving worker. |
POST /api/agent/runs/{run_id}/stop | write | The run after a stop request. |
In this table, read and write mean workspace:read and workspace:write. Run states include queued, running, succeeded, failed, and cancelled. Keep polling while queued or running. succeeded means the run completed; inspect its events and saved results to understand what it produced.
Use view=conversation for durable polling, including a run that is still queued. Pass the last returned cursor as afterSequence on your next request. The detailed event endpoint is useful for tool activity after the run has initialized.
Stream events
curl --fail-with-body --no-buffer \
"$UNITY_API_BASE/api/agent/runs/$UNITY_RUN_ID/stream?afterSequence=0" \
-H "Authorization: Bearer $UNITY_API_KEY" \
-H "Accept: text/event-stream"
The stream supports afterSequence and the Last-Event-ID header for resuming. Parse it as server-sent events, not one JSON document. If you receive data: {"fallback":true}, continue with the durable conversation-events endpoint. This can happen when a different worker serves the request or a run is historical. A browser's native EventSource cannot attach your bearer header; use a server-side client or a fetch-based SSE client.
Stop a run
curl --fail-with-body --request POST \
"$UNITY_API_BASE/api/agent/runs/$UNITY_RUN_ID/stop" \
-H "Authorization: Bearer $UNITY_API_KEY"
Stopping requests cancellation of future work. An operation already executing may finish. Stopping or revoking a key does not roll back saved report changes; use the supported change history and undo workflow when restoration is needed.
Retrieve runtime documentation
GET /api/agent/documentation · workspace:read
| Query parameter | Type | Description |
|---|---|---|
topic | string | Defaults to index. Accepts index, tools, html-authoring, testing, files, continuity, or visual-editing. |
toolName | string | An exact registered tool name. When present, returns that tool's metadata and full function schema. |
The response contains a content version, source, topic, and either documentation, a tool catalogue, or one tool's schema. Unknown topics or tool names return 400. Use the agent tool reference to browse every tool and its parameters, or download the documentation snapshot.
Errors and retries
Authentication errors have an error, message, and machine-readable code. Other operation errors may use error, message, or an operation-specific result. There is not yet a universal error envelope across all routes.
{
"code": "insufficient_scope",
"error": "This API token does not permit this operation.",
"message": "This API token does not permit this operation."
}
| Status | Meaning | Next step |
|---|---|---|
400 | Invalid parameters, SQL, or documentation name. | Read the payload and correct the request. |
401 | Missing, invalid, expired, or revoked credential. | Use an active key. An invalid bearer header does not fall back to a browser session. |
403 | Insufficient token scope or resource permission, or a browser-only operation. | Check code and the account's access. browser_session_required means use the signed-in application. |
404 | Requested resource or route was not found. | Check the ID, deployment URL, and route. |
409 | Revision or conversation-target conflict. | Re-inspect current state and reconcile before retrying. |
422 | Invalid visual definition, output contract, or operation input. | Correct the schema or query-to-visual mapping. |
429 | A rate-limited operation rejected the request. | Respect any retry guidance and reduce request frequency. |
500 / 503 | Server error or an unavailable dependency, including credential verification. | Retry reads with bounded backoff. Keep the error details for diagnosis. |
There is no single published rate limit for all workspace endpoints. Avoid unbounded polling and automatic repeated mutations. If a create or update request times out, inspect whether it already completed before submitting it again. clientRequestId provides deduplication for agent-run submission; it is not a global idempotency key for all endpoints.
Keep API keys and connection secrets out of application logs. Log the method, path, status, resource ID, run ID, and redacted error information needed to diagnose a request.
Complete endpoint directory
This snapshot contains 256 registered HTTP operations. Each entry identifies the operation and its authentication requirement. It includes application, compatibility, and account routes; a listing does not make a browser-only route available to an API key. The detailed integration examples above cover the core developer workflow.
Route parameters use {name}. Supply the matching resource ID in the URL. Authentication labels describe the method gate; report roles, connection ownership, administrator rules, and operation-specific validation still apply.
256 operations
Agent runs and runtime documentation11 operations
/api/agent/chats/{datachat_id}/readMark chat read
workspace:writePath: datachat_id (integer)
/api/agent/client-timingRecord client timing
workspace:write/api/agent/documentationRead documentation
workspace:read/api/agent/messages/{message_id}/runGet run for message
workspace:readPath: message_id (string)
/api/agent/runsCreate background run
workspace:write/api/agent/runs/{run_id}Get run status
workspace:readPath: run_id (string)
/api/agent/runs/{run_id}/eventsGet run events
workspace:readPath: run_id (string)
/api/agent/runs/{run_id}/stopStop run
workspace:writePath: run_id (string)
/api/agent/runs/{run_id}/streamStream conversation
workspace:readPath: run_id (string)
/api/agent/transcribeTranscribe voice
workspace:write/api/agent/workspaceGet workspace state
workspace:readSign-in and API key management20 operations
/api/auth/email-loginEmail login
No Unity token required; endpoint checks may apply/api/auth/email-login/verifyVerify email login
No Unity token required; endpoint checks may apply/api/auth/googleGoogle login
No Unity token required; endpoint checks may apply/api/auth/logoutLogout
Browser session required/api/auth/logout-allLogout all
Browser session required/api/auth/register-and-checkoutRegister and checkout
No Unity token required; endpoint checks may apply/api/auth/registration/startStart registration
No Unity token required; endpoint checks may apply/api/auth/registration/verifyVerify registration
No Unity token required; endpoint checks may apply/api/auth/request-password-resetRequest password reset
No Unity token required; endpoint checks may apply/api/auth/reset-passwordReset password
No Unity token required; endpoint checks may apply/api/auth/sessionSession details
Browser session required/api/auth/tokensAPI tokens
Browser session required/api/auth/tokensAPI tokens
Browser session required/api/auth/tokens/{credential_id}Revoke token
Browser session requiredPath: credential_id (string)
/api/auth/validateValidate session
Browser session required/auth/sqlserver/userpassAuth sqlserver userpass
Browser session required/auth/sqlserver/windowsAuth sqlserver windows
Browser session required/demo_userCreate demo user
No Unity token required; endpoint checks may apply/loginLogin
No Unity token required; endpoint checks may apply/registerRegister
No Unity token required; endpoint checks may applyNative visuals27 operations
/api/barGraphs/updateUpdate bargraph
workspace:write/api/dataCards/updateUpdate data card
workspace:write/api/dataTables/updateUpdate datatable
workspace:write/api/datachat/sqlassistantSql assistant
workspace:write/api/datachatsGet data chats
workspace:read/api/datachats/addAdd data chat
workspace:write/api/declarativeCharts/dataGet declarative chart data
workspace:read/api/declarativeCharts/updateUpdate declarative chart
workspace:write/api/declarativecharts/deleteDelete declarative chart
workspace:write/api/lineGraphs/updateUpdate linegraph
workspace:write/api/pieCharts/updateUpdate piechart
workspace:write/api/pull_outPull out visual
workspace:write/api/scatterPlots/updateUpdate scatterplot
workspace:write/api/visual/positionHandle visual position
workspace:read/api/visual/positionHandle visual position
workspace:write/api/visual/zindexUpdate zindex
workspace:write/api/visual/zindex/next/{page_id}Get next zindex
workspace:readPath: page_id (integer)
/api/visuals/capabilitiesGet visual capabilities
workspace:read/api/visuals/copyCopy visual selection
workspace:write/api/visuals/createCreate native visual
workspace:write/api/visuals/deleteDelete native visual
workspace:write/api/visuals/delete-batchDelete visual selection
workspace:write/api/visuals/previewPreview native visual
workspace:write/api/visuals/propertiesUpdate properties
workspace:write/api/visuals/restoreRestore visuals
workspace:write/api/visuals/stateInspect native visual
workspace:read/api/visuals/updateUpdate native visual
workspace:writeBar graph assistant workflows5 operations
/api/bargraphsGet bar graphs
workspace:read/api/bargraphs/dataGet bargraph data
workspace:read/api/bargraphs/deleteDelete bargraph
workspace:write/api/bargraphs/metadataGet bargraph metadata
workspace:read/api/generate_bar_graph_e2eGenerate bar graph e2e
workspace:writeCollaboration20 operations
/api/collaborationOverview
Browser session required/api/collaboration/invitations/{invitation_id}Revoke invitation
Browser session requiredPath: invitation_id (string)
/api/collaboration/invitations/acceptAccept invitation
Browser session required/api/collaboration/organizationsCreate organization
Browser session required/api/collaboration/organizations/{org_id}Organization details
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}Update organization
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}/auditAudit events
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}/invitationsInvite org
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}/members/{member_id}Update org member
Browser session requiredPath: org_id (string), member_id (string)
/api/collaboration/organizations/{org_id}/recover-reportRecover report
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}/teamsCreate team
Browser session requiredPath: org_id (string)
/api/collaboration/organizations/{org_id}/teams/{team_id}/invitationsInvite team
Browser session requiredPath: org_id (string), team_id (string)
/api/collaboration/reports/{report_id}/ownerTransfer owner
Browser session requiredPath: report_id (string)
/api/collaboration/reports/{report_id}/pages/{page_id}/visibilitySet page visibility
Browser session requiredPath: report_id (string), page_id (string)
/api/collaboration/reports/{report_id}/sharingReport sharing
Browser session requiredPath: report_id (string)
/api/collaboration/reports/{report_id}/teams/{team_id}Share team
Browser session requiredPath: report_id (string), team_id (string)
/api/collaboration/reports/{report_id}/teams/{team_id}Share team
Browser session requiredPath: report_id (string), team_id (string)
/api/collaboration/teams/{team_id}Team details
Browser session requiredPath: team_id (string)
/api/collaboration/teams/{team_id}Update team
Browser session requiredPath: team_id (string)
/api/collaboration/teams/{team_id}/members/{member_id}Update team member
Browser session requiredPath: team_id (string), member_id (string)
Semantic models19 operations
/api/connection-models/{connection_id}Get connection model
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}Remove connection model
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}Upsert connection model
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/assistAssist connection model
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/assist-entityAssist connection model entity
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/assist-relationshipsAssist connection model relationships
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/catalogGet model catalog
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}/definitionsClear connection model definitions
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/definitionsGet connection model definitions
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}/definitionsReplace connection model definitions
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/definitions/{definition_id}Patch model definition
workspace:writePath: connection_id (integer), definition_id (integer)
/api/connection-models/{connection_id}/definitions/validateValidate connection model definitions
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/editor-contextGet connection model editor context
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}/entitiesList connection model entities
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}/entitiesReplace connection model entities
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/entities/previewPreview connection model entity
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/previewPreview connection model
workspace:writePath: connection_id (integer)
/api/connection-models/{connection_id}/relationshipsList connection model relationships
workspace:readPath: connection_id (integer)
/api/connection-models/{connection_id}/relationshipsReplace connection model relationships
workspace:writePath: connection_id (integer)
Connections11 operations
/api/connections/activeGet active connection
workspace:read/api/connections/activeSet active connection
workspace:write/api/connections/addAdd connection
workspace:write/api/connections/check-report-usage/{connection_id}Check connection report usage
workspace:readPath: connection_id (string)
/api/connections/delete/{connection_id}Delete connection
workspace:writePath: connection_id (string)
/api/connections/rename/{connection_id}Rename connection
workspace:writePath: connection_id (string)
/api/connections/report/{report_id}Get report connections
workspace:readPath: report_id (string)
/api/connections/report/addAdd connection to report
workspace:write/api/connections/report/removeRemove connection from report
workspace:write/api/connections/update/{connection_id}Update connection
workspace:writePath: connection_id (string)
/api/connections/user/{user_id}Get user connections
workspace:readPath: user_id (string)
Contact form1 operations
/api/contactContact form
No Unity token required; endpoint checks may applyData table assistant workflows8 operations
/api/dataTables/schemaUpdate datatable schema
workspace:write/api/datatables/create-from-entityCreate datatable from entity
workspace:write/api/datatables/dataGet datatable data
workspace:read/api/datatables/deleteDelete datatable
workspace:write/api/datatables/exportExport datatable data
workspace:read/api/datatables/metadataGet datatable metadata
workspace:read/api/generate_data_table_e2eGenerate data table e2e
workspace:write/api/update_column_configUpdate column config
workspace:writeData card assistant workflows4 operations
/api/datacards/dataGet data card data
workspace:read/api/datacards/deleteDelete data card
workspace:write/api/datacards/metadataGet data card metadata
workspace:read/api/generate_data_card_e2eGenerate data card e2e
workspace:writeData Chat orchestration5 operations
/api/datachat/deleteDelete datachat
workspace:write/api/datachat/e2eDatachat e2e
workspace:write/api/datachat/e2e/streamDatachat e2e stream
workspace:write/api/datachat/pull_visualPull visual
workspace:write/api/datachat/refresh_visualRefresh visual
workspace:writeData Chat history and messages8 operations
/api/datachat/messageStore message
workspace:write/api/datachat/messageUpdate message
workspace:write/api/datachat/messagesGet messages
workspace:read/api/datachat/refreshRefresh datachat visual
workspace:write/api/datachat/transcriptGet transcript
workspace:read/api/datachats/dataGet datachat data
workspace:read/api/datachats/metadataGet datachats metadata
workspace:read/api/datachats/updateUpdate datachat name
workspace:writeData file imports6 operations
/api/debug/check-tablesCheck tables
Browser session required/api/file/dataGet file data
workspace:read/api/file/previewPreview file
workspace:write/api/file/uploadUpload file
workspace:write/api/file/upload/progress/{upload_id}Upload progress
workspace:readPath: upload_id (string)
/api/file/upload/progress/db/{upload_id}Upload progress db
workspace:readPath: upload_id (string)
Account management8 operations
/api/demo-info-nukeDemo info nuke
Browser session required/api/subscription-planGet active plan
No Unity token required; endpoint checks may apply/api/subscription-planSet active plan
Browser session required/api/usersGet all users
Browser session required/api/users/admin/promotePromote user to admin
Browser session required/api/users/deleteDelete user
Browser session required/api/users/subscription/activateActivate subscription
Browser session required/api/users/subscription/cancelCancel subscription
Browser session requiredDataset uploads5 operations
/api/file/datasetsCreate upload
workspace:write/api/file/datasets/{dataset_id}Cancel upload
workspace:writePath: dataset_id (string)
/api/file/datasets/{dataset_id}Upload status
workspace:readPath: dataset_id (string)
/api/file/datasets/{dataset_id}/importImport dataset
workspace:writePath: dataset_id (string)
/api/file/datasets/{dataset_id}/uploadedUploaded
workspace:writePath: dataset_id (string)
Line graph assistant workflows4 operations
/api/generate_line_graph_e2eGenerate line graph e2e
workspace:write/api/linegraphs/dataGet linegraph data
workspace:read/api/linegraphs/deleteDelete linegraph
workspace:write/api/linegraphs/metadataGet linegraph metadata
workspace:readPie chart assistant workflows4 operations
/api/generate_pie_chart_e2eGenerate pie chart e2e
workspace:write/api/piecharts/dataGet piechart data
workspace:read/api/piecharts/deleteDelete piechart
workspace:write/api/piecharts/metadataGet piechart metadata
workspace:readScatter plot assistant workflows4 operations
/api/generate_scatter_plot_e2eGenerate scatter plot e2e
workspace:write/api/scatterplots/dataGet scatterplot data
workspace:read/api/scatterplots/deleteDelete scatterplot
workspace:write/api/scatterplots/metadataGet scatterplot metadata
workspace:readHTML pages and visuals9 operations
/api/html/import/{report_id}Import experiment
workspace:writePath: report_id (uuid)
/api/html/reports/{report_id}Read
workspace:readPath: report_id (uuid)
/api/html/reports/{report_id}/feedbackFeedback
workspace:writePath: report_id (uuid)
/api/html/reports/{report_id}/historyHistory
workspace:readPath: report_id (uuid)
/api/html/reports/{report_id}/modelModel
workspace:readPath: report_id (uuid)
/api/html/reports/{report_id}/operationsChange
workspace:writePath: report_id (uuid)
/api/html/reports/{report_id}/pages/{page_id}/dataResults
workspace:readPath: report_id (uuid), page_id (uuid)
/api/html/reports/{report_id}/queryQuery
workspace:writePath: report_id (uuid)
/api/html/reports/{report_id}/restoreRestore
workspace:writePath: report_id (uuid)
Instagram integration1 operations
/api/instagram/storeStore instagram data
workspace:writeReports9 operations
/api/instructionsSave instructions
workspace:write/api/instructions/{report_id}Get instructions
workspace:readPath: report_id (string)
/api/reportsGet reports
workspace:read/api/reports/{report_id}/catalogGet report catalog
workspace:readPath: report_id (string)
/api/reports/{report_id}Delete report
workspace:writePath: report_id (string)
/api/reports/{report_id}/nameGet report name
workspace:readPath: report_id (string)
/api/reports/{report_id}/nameUpdate report name
workspace:writePath: report_id (string)
/api/reports/{report_id}/workspaceGet report workspace
workspace:readPath: report_id (string)
/api/reports/createCreate new report
workspace:writePublic site telemetry1 operations
/api/page-hitRecord page hit
No Unity token required; endpoint checks may applyPages9 operations
/api/pagesGet pages
workspace:read/api/pages/addAdd page
workspace:write/api/pages/deleteDelete page
workspace:write/api/pages/duplicateDuplicate page
workspace:write/api/pages/restoreRestore page
workspace:write/api/pages/updateUpdate page
workspace:write/api/pages/viewport-settingsGet page viewport settings
workspace:read/api/pages/viewport-settingsUpdate page viewport settings
workspace:write/api/pages/visual-shell-manifestGet page visual shell manifest
workspace:readReport access7 operations
/api/reports/{report_id}/accessAdd report access
Browser session requiredPath: report_id (string)
/api/reports/{report_id}/accessGet report access
Browser session requiredPath: report_id (string)
/api/reports/{report_id}/accessRemove report access
Browser session requiredPath: report_id (string)
/api/reports/{report_id}/accessUpdate report access
Browser session requiredPath: report_id (string)
/api/reports/{report_id}/permissionCheck report permission
Browser session requiredPath: report_id (string)
/api/users/by-emailGet user by email
Browser session required/api/users/searchSearch users
Browser session requiredReport reference files and assets13 operations
/api/reports/{report_id}/assetsReport assets
workspace:readPath: report_id (uuid)
/api/reports/{report_id}/assets/{asset_id}/contentAsset image
workspace:readPath: report_id (uuid), asset_id (string)
/api/reports/{report_id}/filesReport files
workspace:readPath: report_id (uuid)
/api/reports/{report_id}/filesReport files
workspace:writePath: report_id (uuid)
/api/reports/{report_id}/files/{file_id}Report file
workspace:writePath: report_id (uuid), file_id (uuid)
/api/reports/{report_id}/files/{file_id}Report file
workspace:readPath: report_id (uuid), file_id (uuid)
/api/reports/{report_id}/files/{file_id}/assets/{asset_id}/previewAsset preview image
workspace:readPath: report_id (uuid), file_id (uuid), asset_id (string)
/api/reports/{report_id}/files/{file_id}/assets/{asset_id}/reuseReuse asset
workspace:writePath: report_id (uuid), file_id (uuid), asset_id (string)
/api/reports/{report_id}/files/{file_id}/contentFile content
workspace:readPath: report_id (uuid), file_id (uuid)
/api/reports/{report_id}/files/{file_id}/downloadDownload file
workspace:readPath: report_id (uuid), file_id (uuid)
/api/reports/{report_id}/files/{file_id}/previewFile preview
workspace:writePath: report_id (uuid), file_id (uuid)
/api/reports/{report_id}/files/{file_id}/previews/{page}Preview image
workspace:readPath: report_id (uuid), file_id (uuid), page (integer)
/api/reports/{report_id}/files/{file_id}/searchFile search
workspace:readPath: report_id (uuid), file_id (uuid)
Manual visual creation8 operations
/api/shapes/addAdd shape
workspace:write/api/shapes/deleteDelete shape
workspace:write/api/shapes/metadataGet shape metadata
workspace:read/api/shapes/updateUpdate shape
workspace:write/api/textboxes/addAdd textbox
workspace:write/api/textboxes/deleteDelete textbox
workspace:write/api/textboxes/metadataGet textbox metadata
workspace:read/api/textboxes/updateUpdate textbox
workspace:writeSQL Playground4 operations
/api/sql/delete-query/{query_id}Delete query
workspace:writePath: query_id (integer)
/api/sql/executeExecute sql
workspace:write/api/sql/save-querySave query
workspace:write/api/sql/saved-queriesGet saved queries
workspace:readBilling6 operations
/api/stripe/cancel-subscriptionCancel subscription
Browser session required/api/stripe/create-checkout-sessionCreate checkout session
Browser session required/api/stripe/create-portal-sessionCreate portal session
Browser session required/api/stripe/renew-subscriptionRenew subscription
Browser session required/api/stripe/subscription-detailsGet subscription details
Browser session required/api/stripe/webhookStripe webhook
No Unity token required; endpoint checks may applyWorkspace preferences2 operations
/api/ui/preferencesGet ui preferences
workspace:read/api/ui/preferencesPut ui preferences
workspace:writeSelected-visual conversations6 operations
/api/visual-assistant-chatsDelete visual assistant chat
workspace:write/api/visual-assistant-chatsGet visual assistant chats
workspace:read/api/visual-assistant-chatsPut visual assistant chat
workspace:write/api/visual-assistant-chats/ensureEnsure visual assistant chat
workspace:write/api/visual-assistant-chats/moveMove visual assistant chat
workspace:write/api/visual-assistant-chats/snapshotGet visual assistant snapshot
workspace:readVisual filters5 operations
/api/visual-filtersGet visual filters
workspace:read/api/visual-filtersReplace visual filters
workspace:write/api/visual-filters/{filter_uid}Delete visual filter
workspace:writePath: filter_uid (string)
/api/visual-filters/prefetchPrefetch visual filters
workspace:read/api/visual-filters/valuesList visual filter values
workspace:readWorkspace changes1 operations
/api/workspacesGet workspaces
workspace:readSchema discovery3 operations
/get-schemaGet schema
workspace:write/get-selected-schema/{report_id}Get selected schema
workspace:readPath: report_id (string)
/store-schemaStore schema
workspace:writeService diagnostics2 operations
/healthHealth check
No Unity token required; endpoint checks may apply/test-dbTest db
Browser session requiredQuestions about your environment? Contact us.