Capabilities / Developers

HTTP API reference

Request parameters, response examples, agent runs, streaming, errors, and the complete HTTP endpoint directory.

X4 Tech SolutionsUpdated September 10, 2026256 HTTP operations

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:

http
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
curl --fail-with-body "$UNITY_API_BASE/api/reports" \
  -H "Authorization: Bearer $UNITY_API_KEY"

Example response, with some fields omitted:

JSON
[
  {
    "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

ParameterTypeRequiredDescription
report_idstring, pathYesAn 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
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.

ParameterTypeDefaultDescription
report_idstring, pathRequiredReport to inspect.
kindstring, queryallall, page, visual, or connection.
querystring, queryEmptySearch text.
pageIdinteger, queryOmittedRestrict results to a page.
currentPageIdinteger, queryOmittedCurrent page context.
visualKeyrepeated string, queryOmittedExact visual keys from an earlier catalogue result.
detailstring, queryOmittedSet to true for expanded details.
offsetinteger, query0Starting offset.
limitinteger, query40Page size, from 1 to 100.
cURL
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.

ParameterTypeDefaultDescription
connection_idinteger, pathRequiredConnection attached to the intended report.
reportIdstring, queryOmittedReport authorization context. Include it for report workflows.
kindstring, queryallall, entity, field, or relationship.
querystring, queryEmptySearch by model terminology.
fieldUidrepeated string, queryOmittedRetrieve specific model fields by UID.
offsetinteger, query0Starting offset.
limitinteger, query40Page size, from 1 to 100.
cURL
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 parameterTypeDefaultDescription
reportIdstringRequiredReport containing the connection.
connectionIdintegerRequiredConnection to query.
sqlQuerystringRequiredRead-only SQL using the discovered model identifiers and source dialect.
rowLimitinteger1000Requested result limit. Use a small value while exploring.
skipLimitbooleanfalseSkip Unity's additional limit. Usually leave this false.

Example request body, assuming an orders entity with region and amount fields:

JSON
{
  "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
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 parameterTypeDescription
reportIdstringRequired report ID.
typestringRequired visual type, such as barGraph.
idstring or integerRequired stable visual UUID or legacy numeric visual ID.
changesobjectFields to change, such as title, position, customization, or sql_query.
expectedRevisionstringCurrent revision token returned by inspection, such as 0x0000000000000003. Include it to detect conflicting edits.
refreshDatabooleanDefaults 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:

JSON
{
  "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
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:

JSON
{
  "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

ParameterTypeDescription
reportIdstringRequired report ID.
dataChatIdintegerRequired existing Data Chat ID.
user_inputstringRequested work, up to 50,000 characters. A message or supported attachment is required.
modestringDefaults to data_chat. Also accepts visual_assistant for a valid selected visual and its bound chat.
clientRequestIdstringOptional client-generated ID, up to 64 characters, used to deduplicate submission of the same request. Reuse it only when retrying that submission.
visualIdintegerRequired with visual_assistant.
visualTypestringRequired 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.

JavaScript
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:

JSON
{
  "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

EndpointScopeReturns
GET /api/agent/runs/{run_id}read{ "run": { ... } } with status, phase, messages, and timestamps.
GET /api/agent/runs/{run_id}/events?view=conversation&afterSequence=0readRun, conversation events, and a cursor for the next poll.
GET /api/agent/runs/{run_id}/events?afterSequence=0readDetailed stored events and tool_calls for an initialized run.
GET /api/agent/runs/{run_id}/streamreadLive server-sent events when that run is available on the serving worker.
POST /api/agent/runs/{run_id}/stopwriteThe 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
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
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 parameterTypeDescription
topicstringDefaults to index. Accepts index, tools, html-authoring, testing, files, continuity, or visual-editing.
toolNamestringAn 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.

JSON
{
  "code": "insufficient_scope",
  "error": "This API token does not permit this operation.",
  "message": "This API token does not permit this operation."
}
StatusMeaningNext step
400Invalid parameters, SQL, or documentation name.Read the payload and correct the request.
401Missing, invalid, expired, or revoked credential.Use an active key. An invalid bearer header does not fall back to a browser session.
403Insufficient 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.
404Requested resource or route was not found.Check the ID, deployment URL, and route.
409Revision or conversation-target conflict.Re-inspect current state and reconcile before retrying.
422Invalid visual definition, output contract, or operation input.Correct the schema or query-to-visual mapping.
429A rate-limited operation rejected the request.Respect any retry guidance and reduce request frequency.
500 / 503Server 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.

Agent runs and runtime documentation11 operations
POST/api/agent/chats/{datachat_id}/read

Mark chat read

workspace:write

Path: datachat_id (integer)

POST/api/agent/client-timing

Record client timing

workspace:write
GET/api/agent/documentation

Read documentation

workspace:read
GET/api/agent/messages/{message_id}/run

Get run for message

workspace:read

Path: message_id (string)

POST/api/agent/runs

Create background run

workspace:write
GET/api/agent/runs/{run_id}

Get run status

workspace:read

Path: run_id (string)

GET/api/agent/runs/{run_id}/events

Get run events

workspace:read

Path: run_id (string)

POST/api/agent/runs/{run_id}/stop

Stop run

workspace:write

Path: run_id (string)

GET/api/agent/runs/{run_id}/stream

Stream conversation

workspace:read

Path: run_id (string)

POST/api/agent/transcribe

Transcribe voice

workspace:write
GET/api/agent/workspace

Get workspace state

workspace:read
Sign-in and API key management20 operations
POST/api/auth/email-login

Email login

No Unity token required; endpoint checks may apply
POST/api/auth/email-login/verify

Verify email login

No Unity token required; endpoint checks may apply
POST/api/auth/google

Google login

No Unity token required; endpoint checks may apply
POST/api/auth/logout

Logout

Browser session required
POST/api/auth/logout-all

Logout all

Browser session required
POST/api/auth/register-and-checkout

Register and checkout

No Unity token required; endpoint checks may apply
POST/api/auth/registration/start

Start registration

No Unity token required; endpoint checks may apply
POST/api/auth/registration/verify

Verify registration

No Unity token required; endpoint checks may apply
POST/api/auth/request-password-reset

Request password reset

No Unity token required; endpoint checks may apply
POST/api/auth/reset-password

Reset password

No Unity token required; endpoint checks may apply
GET/api/auth/session

Session details

Browser session required
GET/api/auth/tokens

API tokens

Browser session required
POST/api/auth/tokens

API tokens

Browser session required
DELETE/api/auth/tokens/{credential_id}

Revoke token

Browser session required

Path: credential_id (string)

GET/api/auth/validate

Validate session

Browser session required
POST/auth/sqlserver/userpass

Auth sqlserver userpass

Browser session required
POST/auth/sqlserver/windows

Auth sqlserver windows

Browser session required
POST/demo_user

Create demo user

No Unity token required; endpoint checks may apply
POST/login

Login

No Unity token required; endpoint checks may apply
POST/register

Register

No Unity token required; endpoint checks may apply
Native visuals27 operations
PUT/api/barGraphs/update

Update bargraph

workspace:write
PUT/api/dataCards/update

Update data card

workspace:write
PUT/api/dataTables/update

Update datatable

workspace:write
POST/api/datachat/sqlassistant

Sql assistant

workspace:write
GET/api/datachats

Get data chats

workspace:read
POST/api/datachats/add

Add data chat

workspace:write
GET/api/declarativeCharts/data

Get declarative chart data

workspace:read
PUT/api/declarativeCharts/update

Update declarative chart

workspace:write
DELETE/api/declarativecharts/delete

Delete declarative chart

workspace:write
PUT/api/lineGraphs/update

Update linegraph

workspace:write
PUT/api/pieCharts/update

Update piechart

workspace:write
POST/api/pull_out

Pull out visual

workspace:write
PUT/api/scatterPlots/update

Update scatterplot

workspace:write
GET/api/visual/position

Handle visual position

workspace:read
POST/api/visual/position

Handle visual position

workspace:write
POST/api/visual/zindex

Update zindex

workspace:write
GET/api/visual/zindex/next/{page_id}

Get next zindex

workspace:read

Path: page_id (integer)

GET/api/visuals/capabilities

Get visual capabilities

workspace:read
POST/api/visuals/copy

Copy visual selection

workspace:write
POST/api/visuals/create

Create native visual

workspace:write
POST/api/visuals/delete

Delete native visual

workspace:write
POST/api/visuals/delete-batch

Delete visual selection

workspace:write
POST/api/visuals/preview

Preview native visual

workspace:write
PATCH/api/visuals/properties

Update properties

workspace:write
POST/api/visuals/restore

Restore visuals

workspace:write
GET/api/visuals/state

Inspect native visual

workspace:read
POST/api/visuals/update

Update native visual

workspace:write
Bar graph assistant workflows5 operations
GET/api/bargraphs

Get bar graphs

workspace:read
GET/api/bargraphs/data

Get bargraph data

workspace:read
DELETE/api/bargraphs/delete

Delete bargraph

workspace:write
GET/api/bargraphs/metadata

Get bargraph metadata

workspace:read
POST/api/generate_bar_graph_e2e

Generate bar graph e2e

workspace:write
Collaboration20 operations
GET/api/collaboration

Overview

Browser session required
DELETE/api/collaboration/invitations/{invitation_id}

Revoke invitation

Browser session required

Path: invitation_id (string)

POST/api/collaboration/invitations/accept

Accept invitation

Browser session required
POST/api/collaboration/organizations

Create organization

Browser session required
GET/api/collaboration/organizations/{org_id}

Organization details

Browser session required

Path: org_id (string)

PATCH/api/collaboration/organizations/{org_id}

Update organization

Browser session required

Path: org_id (string)

GET/api/collaboration/organizations/{org_id}/audit

Audit events

Browser session required

Path: org_id (string)

POST/api/collaboration/organizations/{org_id}/invitations

Invite org

Browser session required

Path: org_id (string)

PUT/api/collaboration/organizations/{org_id}/members/{member_id}

Update org member

Browser session required

Path: org_id (string), member_id (string)

POST/api/collaboration/organizations/{org_id}/recover-report

Recover report

Browser session required

Path: org_id (string)

POST/api/collaboration/organizations/{org_id}/teams

Create team

Browser session required

Path: org_id (string)

POST/api/collaboration/organizations/{org_id}/teams/{team_id}/invitations

Invite team

Browser session required

Path: org_id (string), team_id (string)

POST/api/collaboration/reports/{report_id}/owner

Transfer owner

Browser session required

Path: report_id (string)

PATCH/api/collaboration/reports/{report_id}/pages/{page_id}/visibility

Set page visibility

Browser session required

Path: report_id (string), page_id (string)

GET/api/collaboration/reports/{report_id}/sharing

Report sharing

Browser session required

Path: report_id (string)

DELETE/api/collaboration/reports/{report_id}/teams/{team_id}

Share team

Browser session required

Path: report_id (string), team_id (string)

PUT/api/collaboration/reports/{report_id}/teams/{team_id}

Share team

Browser session required

Path: report_id (string), team_id (string)

GET/api/collaboration/teams/{team_id}

Team details

Browser session required

Path: team_id (string)

PATCH/api/collaboration/teams/{team_id}

Update team

Browser session required

Path: team_id (string)

PUT/api/collaboration/teams/{team_id}/members/{member_id}

Update team member

Browser session required

Path: team_id (string), member_id (string)

Semantic models19 operations
GET/api/connection-models/{connection_id}

Get connection model

workspace:read

Path: connection_id (integer)

DELETE/api/connection-models/{connection_id}

Remove connection model

workspace:write

Path: connection_id (integer)

PUT/api/connection-models/{connection_id}

Upsert connection model

workspace:write

Path: connection_id (integer)

POST/api/connection-models/{connection_id}/assist

Assist connection model

workspace:write

Path: connection_id (integer)

POST/api/connection-models/{connection_id}/assist-entity

Assist connection model entity

workspace:write

Path: connection_id (integer)

POST/api/connection-models/{connection_id}/assist-relationships

Assist connection model relationships

workspace:write

Path: connection_id (integer)

GET/api/connection-models/{connection_id}/catalog

Get model catalog

workspace:read

Path: connection_id (integer)

DELETE/api/connection-models/{connection_id}/definitions

Clear connection model definitions

workspace:write

Path: connection_id (integer)

GET/api/connection-models/{connection_id}/definitions

Get connection model definitions

workspace:read

Path: connection_id (integer)

PUT/api/connection-models/{connection_id}/definitions

Replace connection model definitions

workspace:write

Path: connection_id (integer)

PATCH/api/connection-models/{connection_id}/definitions/{definition_id}

Patch model definition

workspace:write

Path: connection_id (integer), definition_id (integer)

POST/api/connection-models/{connection_id}/definitions/validate

Validate connection model definitions

workspace:write

Path: connection_id (integer)

GET/api/connection-models/{connection_id}/editor-context

Get connection model editor context

workspace:read

Path: connection_id (integer)

GET/api/connection-models/{connection_id}/entities

List connection model entities

workspace:read

Path: connection_id (integer)

PUT/api/connection-models/{connection_id}/entities

Replace connection model entities

workspace:write

Path: connection_id (integer)

POST/api/connection-models/{connection_id}/entities/preview

Preview connection model entity

workspace:write

Path: connection_id (integer)

POST/api/connection-models/{connection_id}/preview

Preview connection model

workspace:write

Path: connection_id (integer)

GET/api/connection-models/{connection_id}/relationships

List connection model relationships

workspace:read

Path: connection_id (integer)

PUT/api/connection-models/{connection_id}/relationships

Replace connection model relationships

workspace:write

Path: connection_id (integer)

Connections11 operations
GET/api/connections/active

Get active connection

workspace:read
POST/api/connections/active

Set active connection

workspace:write
POST/api/connections/add

Add connection

workspace:write
GET/api/connections/check-report-usage/{connection_id}

Check connection report usage

workspace:read

Path: connection_id (string)

DELETE/api/connections/delete/{connection_id}

Delete connection

workspace:write

Path: connection_id (string)

PUT/api/connections/rename/{connection_id}

Rename connection

workspace:write

Path: connection_id (string)

GET/api/connections/report/{report_id}

Get report connections

workspace:read

Path: report_id (string)

POST/api/connections/report/add

Add connection to report

workspace:write
DELETE/api/connections/report/remove

Remove connection from report

workspace:write
PUT/api/connections/update/{connection_id}

Update connection

workspace:write

Path: connection_id (string)

GET/api/connections/user/{user_id}

Get user connections

workspace:read

Path: user_id (string)

Contact form1 operations
POST/api/contact

Contact form

No Unity token required; endpoint checks may apply
Data table assistant workflows8 operations
PUT/api/dataTables/schema

Update datatable schema

workspace:write
POST/api/datatables/create-from-entity

Create datatable from entity

workspace:write
GET/api/datatables/data

Get datatable data

workspace:read
DELETE/api/datatables/delete

Delete datatable

workspace:write
GET/api/datatables/export

Export datatable data

workspace:read
GET/api/datatables/metadata

Get datatable metadata

workspace:read
POST/api/generate_data_table_e2e

Generate data table e2e

workspace:write
POST/api/update_column_config

Update column config

workspace:write
Data card assistant workflows4 operations
GET/api/datacards/data

Get data card data

workspace:read
DELETE/api/datacards/delete

Delete data card

workspace:write
GET/api/datacards/metadata

Get data card metadata

workspace:read
POST/api/generate_data_card_e2e

Generate data card e2e

workspace:write
Data Chat orchestration5 operations
DELETE/api/datachat/delete

Delete datachat

workspace:write
POST/api/datachat/e2e

Datachat e2e

workspace:write
POST/api/datachat/e2e/stream

Datachat e2e stream

workspace:write
POST/api/datachat/pull_visual

Pull visual

workspace:write
POST/api/datachat/refresh_visual

Refresh visual

workspace:write
Data Chat history and messages8 operations
POST/api/datachat/message

Store message

workspace:write
PUT/api/datachat/message

Update message

workspace:write
GET/api/datachat/messages

Get messages

workspace:read
POST/api/datachat/refresh

Refresh datachat visual

workspace:write
GET/api/datachat/transcript

Get transcript

workspace:read
GET/api/datachats/data

Get datachat data

workspace:read
GET/api/datachats/metadata

Get datachats metadata

workspace:read
PUT/api/datachats/update

Update datachat name

workspace:write
Data file imports6 operations
GET/api/debug/check-tables

Check tables

Browser session required
GET/api/file/data

Get file data

workspace:read
POST/api/file/preview

Preview file

workspace:write
POST/api/file/upload

Upload file

workspace:write
GET/api/file/upload/progress/{upload_id}

Upload progress

workspace:read

Path: upload_id (string)

GET/api/file/upload/progress/db/{upload_id}

Upload progress db

workspace:read

Path: upload_id (string)

Account management8 operations
POST/api/demo-info-nuke

Demo info nuke

Browser session required
GET/api/subscription-plan

Get active plan

No Unity token required; endpoint checks may apply
POST/api/subscription-plan

Set active plan

Browser session required
GET/api/users

Get all users

Browser session required
POST/api/users/admin/promote

Promote user to admin

Browser session required
POST/api/users/delete

Delete user

Browser session required
POST/api/users/subscription/activate

Activate subscription

Browser session required
POST/api/users/subscription/cancel

Cancel subscription

Browser session required
Dataset uploads5 operations
POST/api/file/datasets

Create upload

workspace:write
DELETE/api/file/datasets/{dataset_id}

Cancel upload

workspace:write

Path: dataset_id (string)

GET/api/file/datasets/{dataset_id}

Upload status

workspace:read

Path: dataset_id (string)

POST/api/file/datasets/{dataset_id}/import

Import dataset

workspace:write

Path: dataset_id (string)

POST/api/file/datasets/{dataset_id}/uploaded

Uploaded

workspace:write

Path: dataset_id (string)

Line graph assistant workflows4 operations
POST/api/generate_line_graph_e2e

Generate line graph e2e

workspace:write
GET/api/linegraphs/data

Get linegraph data

workspace:read
DELETE/api/linegraphs/delete

Delete linegraph

workspace:write
GET/api/linegraphs/metadata

Get linegraph metadata

workspace:read
Pie chart assistant workflows4 operations
POST/api/generate_pie_chart_e2e

Generate pie chart e2e

workspace:write
GET/api/piecharts/data

Get piechart data

workspace:read
DELETE/api/piecharts/delete

Delete piechart

workspace:write
GET/api/piecharts/metadata

Get piechart metadata

workspace:read
Scatter plot assistant workflows4 operations
POST/api/generate_scatter_plot_e2e

Generate scatter plot e2e

workspace:write
GET/api/scatterplots/data

Get scatterplot data

workspace:read
DELETE/api/scatterplots/delete

Delete scatterplot

workspace:write
GET/api/scatterplots/metadata

Get scatterplot metadata

workspace:read
HTML pages and visuals9 operations
POST/api/html/import/{report_id}

Import experiment

workspace:write

Path: report_id (uuid)

GET/api/html/reports/{report_id}

Read

workspace:read

Path: report_id (uuid)

POST/api/html/reports/{report_id}/feedback

Feedback

workspace:write

Path: report_id (uuid)

GET/api/html/reports/{report_id}/history

History

workspace:read

Path: report_id (uuid)

GET/api/html/reports/{report_id}/model

Model

workspace:read

Path: report_id (uuid)

POST/api/html/reports/{report_id}/operations

Change

workspace:write

Path: report_id (uuid)

GET/api/html/reports/{report_id}/pages/{page_id}/data

Results

workspace:read

Path: report_id (uuid), page_id (uuid)

POST/api/html/reports/{report_id}/query

Query

workspace:write

Path: report_id (uuid)

POST/api/html/reports/{report_id}/restore

Restore

workspace:write

Path: report_id (uuid)

Instagram integration1 operations
POST/api/instagram/store

Store instagram data

workspace:write
Reports9 operations
POST/api/instructions

Save instructions

workspace:write
GET/api/instructions/{report_id}

Get instructions

workspace:read

Path: report_id (string)

GET/api/reports

Get reports

workspace:read
GET/api/reports/{report_id}/catalog

Get report catalog

workspace:read

Path: report_id (string)

DELETE/api/reports/{report_id}

Delete report

workspace:write

Path: report_id (string)

GET/api/reports/{report_id}/name

Get report name

workspace:read

Path: report_id (string)

PUT/api/reports/{report_id}/name

Update report name

workspace:write

Path: report_id (string)

GET/api/reports/{report_id}/workspace

Get report workspace

workspace:read

Path: report_id (string)

POST/api/reports/create

Create new report

workspace:write
Public site telemetry1 operations
POST/api/page-hit

Record page hit

No Unity token required; endpoint checks may apply
Pages9 operations
GET/api/pages

Get pages

workspace:read
POST/api/pages/add

Add page

workspace:write
DELETE/api/pages/delete

Delete page

workspace:write
POST/api/pages/duplicate

Duplicate page

workspace:write
POST/api/pages/restore

Restore page

workspace:write
PUT/api/pages/update

Update page

workspace:write
GET/api/pages/viewport-settings

Get page viewport settings

workspace:read
PUT/api/pages/viewport-settings

Update page viewport settings

workspace:write
GET/api/pages/visual-shell-manifest

Get page visual shell manifest

workspace:read
Report access7 operations
POST/api/reports/{report_id}/access

Add report access

Browser session required

Path: report_id (string)

GET/api/reports/{report_id}/access

Get report access

Browser session required

Path: report_id (string)

DELETE/api/reports/{report_id}/access

Remove report access

Browser session required

Path: report_id (string)

PUT/api/reports/{report_id}/access

Update report access

Browser session required

Path: report_id (string)

GET/api/reports/{report_id}/permission

Check report permission

Browser session required

Path: report_id (string)

GET/api/users/by-email

Get user by email

Browser session required
GET/api/users/search

Search users

Browser session required
Report reference files and assets13 operations
GET/api/reports/{report_id}/assets

Report assets

workspace:read

Path: report_id (uuid)

GET/api/reports/{report_id}/assets/{asset_id}/content

Asset image

workspace:read

Path: report_id (uuid), asset_id (string)

GET/api/reports/{report_id}/files

Report files

workspace:read

Path: report_id (uuid)

POST/api/reports/{report_id}/files

Report files

workspace:write

Path: report_id (uuid)

DELETE/api/reports/{report_id}/files/{file_id}

Report file

workspace:write

Path: report_id (uuid), file_id (uuid)

GET/api/reports/{report_id}/files/{file_id}

Report file

workspace:read

Path: report_id (uuid), file_id (uuid)

GET/api/reports/{report_id}/files/{file_id}/assets/{asset_id}/preview

Asset preview image

workspace:read

Path: report_id (uuid), file_id (uuid), asset_id (string)

POST/api/reports/{report_id}/files/{file_id}/assets/{asset_id}/reuse

Reuse asset

workspace:write

Path: report_id (uuid), file_id (uuid), asset_id (string)

GET/api/reports/{report_id}/files/{file_id}/content

File content

workspace:read

Path: report_id (uuid), file_id (uuid)

GET/api/reports/{report_id}/files/{file_id}/download

Download file

workspace:read

Path: report_id (uuid), file_id (uuid)

POST/api/reports/{report_id}/files/{file_id}/preview

File preview

workspace:write

Path: report_id (uuid), file_id (uuid)

GET/api/reports/{report_id}/files/{file_id}/previews/{page}

Preview image

workspace:read

Path: report_id (uuid), file_id (uuid), page (integer)

GET/api/reports/{report_id}/files/{file_id}/search

File search

workspace:read

Path: report_id (uuid), file_id (uuid)

Manual visual creation8 operations
POST/api/shapes/add

Add shape

workspace:write
DELETE/api/shapes/delete

Delete shape

workspace:write
GET/api/shapes/metadata

Get shape metadata

workspace:read
PUT/api/shapes/update

Update shape

workspace:write
POST/api/textboxes/add

Add textbox

workspace:write
DELETE/api/textboxes/delete

Delete textbox

workspace:write
GET/api/textboxes/metadata

Get textbox metadata

workspace:read
PUT/api/textboxes/update

Update textbox

workspace:write
SQL Playground4 operations
DELETE/api/sql/delete-query/{query_id}

Delete query

workspace:write

Path: query_id (integer)

POST/api/sql/execute

Execute sql

workspace:write
POST/api/sql/save-query

Save query

workspace:write
GET/api/sql/saved-queries

Get saved queries

workspace:read
Billing6 operations
POST/api/stripe/cancel-subscription

Cancel subscription

Browser session required
POST/api/stripe/create-checkout-session

Create checkout session

Browser session required
POST/api/stripe/create-portal-session

Create portal session

Browser session required
POST/api/stripe/renew-subscription

Renew subscription

Browser session required
GET/api/stripe/subscription-details

Get subscription details

Browser session required
POST/api/stripe/webhook

Stripe webhook

No Unity token required; endpoint checks may apply
Workspace preferences2 operations
GET/api/ui/preferences

Get ui preferences

workspace:read
PUT/api/ui/preferences

Put ui preferences

workspace:write
Selected-visual conversations6 operations
DELETE/api/visual-assistant-chats

Delete visual assistant chat

workspace:write
GET/api/visual-assistant-chats

Get visual assistant chats

workspace:read
PUT/api/visual-assistant-chats

Put visual assistant chat

workspace:write
POST/api/visual-assistant-chats/ensure

Ensure visual assistant chat

workspace:write
POST/api/visual-assistant-chats/move

Move visual assistant chat

workspace:write
GET/api/visual-assistant-chats/snapshot

Get visual assistant snapshot

workspace:read
Visual filters5 operations
GET/api/visual-filters

Get visual filters

workspace:read
PUT/api/visual-filters

Replace visual filters

workspace:write
DELETE/api/visual-filters/{filter_uid}

Delete visual filter

workspace:write

Path: filter_uid (string)

GET/api/visual-filters/prefetch

Prefetch visual filters

workspace:read
GET/api/visual-filters/values

List visual filter values

workspace:read
Workspace changes1 operations
GET/api/workspaces

Get workspaces

workspace:read
Schema discovery3 operations
POST/get-schema

Get schema

workspace:write
GET/get-selected-schema/{report_id}

Get selected schema

workspace:read

Path: report_id (string)

POST/store-schema

Store schema

workspace:write
Service diagnostics2 operations
GET/health

Health check

No Unity token required; endpoint checks may apply
GET/test-db

Test db

Browser session required

Questions about your environment? Contact us.