Documentation
Inzata REST API
Programmatic access to the Inzata platform that powers SIGNLD.
The Inzata REST API gives programmatic access to the Inzata platform: projects, file storage, data integration (InFlow), the semantic model, analytical queries, dashboard sharing and export, and AI chat.
The Inzata web application itself is built on this API, so everything you can do in the UI can also be automated through it.
AI integration
Besides the REST API, Inzata/SIGNLD provides an MCP (Model Context Protocol) server, so AI assistants such as ChatGPT and Claude can connect directly to your knowledge graph and data, without custom integration code.
Base URL
https://app.inzata.com/api/v1
All paths below are relative to this base URL. Most resources live under a project:
/api/v1/projects/{project}/...Authentication
The API uses OAuth 2.0 / OpenID Connect (Auth0).
| Method | How |
|---|---|
| Bearer token (recommended for integrations) | Authorization: Bearer <access_token>. The token is issued by https://inzata.auth0.com/ for audience urn:inzata/restapi. |
| Browser session | Interactive login at /auth/login, then a session cookie. Used by the web application. |
| WebDAV | HTTP Basic authentication with your user id and a project-specific WebDAV token (see Storage). |
API client credentials are available on request.
Requests are always executed on behalf of a user and respect that user's permissions. A user can only see projects they were invited to. Inside a project they only see objects their roles allow, and row-level data filters always apply.
Permission levels
| Level | Can do |
|---|---|
| Project user | Read dashboards, reports and data the roles allow; run queries; use AI chat |
| User Admin | Plus manage project users and their access |
| MD Admin | Plus manage the data model, storage, data loads and flows |
| Admin | Full control of the project (sharing publicly, deleting) |
Request and response formats
- Request bodies:
application/json(recommended),text/yaml, orapplication/x-www-form-urlencoded. - Responses are negotiated through the
Acceptheader, or the?format=query parameter:
| Accept | Result |
|---|---|
application/json | JSON (use this for integrations) |
text/yaml | YAML |
text/csv, text/tab-separated-values | Tabular results as a file download |
application/pdf | PDF (export endpoints) |
text/html | Human-readable, browsable API pages |
Tip
Always send Accept: application/json. Without it the API returns HTML, which is meant for browsing.
Self-describing API
The API is hypermedia-driven. Responses contain a link array pointing to related resources:
JSON
{
"link": [
{ "href": "https://app.inzata.com/api/v1/projects/sales/pmd/obj/rev_total", "id": "rev_total", "title": "Total Revenue", "rel": "object.metric" }
]
}Open /api/v1 in a browser to explore all available resources and their descriptions interactively.
Asynchronous jobs
Long-running operations, such as data loads, flow runs, query computation and AI answers, run asynchronously. The call that starts one returns a link with rel: "scache":
JSON
{ "link": [ { "rel": "scache", "id": "I_42_a1b2c3", "href": ".../kodiak/scache/obj/I_42_a1b2c3" } ] }Poll that link until status is final:
GET /api/v1/projects/{project}/kodiak/scache/obj/{jobId}| status | Meaning |
|---|---|
PREPARED, EXPANDING, RUNNING | In progress, poll again |
OK | Finished successfully |
ERROR | Failed, see message |
CANCELLED | Stopped |
Errors
Errors use standard HTTP status codes with a JSON body:
JSON
{ "statusCode": 400, "message": "Primary key must be an attribute", "context": {}, "errorId": "..." }| Code | Meaning |
|---|---|
| 400 | Invalid request |
| 401 | Not authenticated, or no access to the project |
| 402 | Plan limit exceeded (storage size, AI messages per day, ...) |
| 403 | Insufficient permission, or the project is under maintenance |
| 404 | Resource not found |
| 405 | Method not allowed on this resource |
| 409 | Conflict (already exists, already running, ...) |
Quick start (curl)
BASH
BASE=https://app.inzata.com/api/v1
AUTH="Authorization: Bearer $TOKEN"
JSON="Accept: application/json"
# 1. Find your project
curl -s -H "$AUTH" -H "$JSON" $BASE/projects
# 2. Upload a CSV over WebDAV
curl -u "$USER:$WEBDAV_TOKEN" -T orders.csv $BASE/projects/$P/webdav/imports/orders.csv
# 3. Run the import flow
curl -s -H "$AUTH" -H "$JSON" -H "Content-Type: application/json" \
-d '{"type":"flow","id":"orders_import"}' \
$BASE/projects/$P/kodiak/transform/execute
# 4. Query the result
curl -s -H "$AUTH" -H "$JSON" -H "Content-Type: application/json" \
-d '{"aql":"SUM([amount]) DICE [region]"}' \
$BASE/projects/$P/app/aql/executeFurther reading
Was this helpful?
Contact support