REST API

API reference

The complete REST API: 534 endpoints in 46 groups. Every endpoint below is also in the OpenAPI spec, with full request and response schemas, and both are checked against the application source on every build.

Authentication

Every request carries a bearer token in the Authorization header: either an API key (long-lived, per user, optional expiry) or a JWT from POST /v1/token-auth/issue.

HTTP
Authorization: Bearer YOUR_TOKEN

JWTs last 8 hours by default; on-premise installations can change that with integrator.jwt.exp.period. Refresh a token that has not expired with POST /v1/token-auth/refresh. A few download and export endpoints also accept the token as an Authorization query parameter, so the URL can be opened directly.

A token carries the role of the user it belongs to. The API User role can call the Messages and CLI endpoints and HTTP listeners, but not flows, schedules or connections: generate the key for an Operator, Editor or Administrator for those. See the quickstart for setup.

Base URL

HTTP
https://app.etlworks.com/rest

That is Etlworks Cloud. On-premise, use your own hostname: https://your-host/rest. Every path in this reference is relative to /rest.

Errors

Errors use standard HTTP status codes. The body depends on the status:

Status code reference table: see quickstart errors.

Lists and pagination

List endpoints are not paginated: each returns everything in scope in one response. The exception is execution history, GET /v1/executions/{flowId}/history, which caps the result, reports how many records it left out in the X-Truncated-Count header, and takes lastAuditId to page back further. Timestamps are Unix epoch milliseconds.

Heads up: create/update payloads are metadata-driven

For connections, formats, flows, and listeners, the connectionType / formatType / flowType discriminator is not an arbitrary string and the properties bag is not an arbitrary object. Both are defined per-connector by JSON descriptors in the platform's connector library (src/main/resources/di/…): e.g. PostgreSQL is connection.db.postgres and its property keys are field.connection.template.host, field.connection.template.port, field.connection.template.database, etc.

Reliable way to discover the right shape for any connector: create one in the Etlworks UI, then GET /v1/connections/{id} (or /v1/formats/{id}, /v1/flows/{id}) and copy the resulting connectionType + properties verbatim into your script. Parameterize the values, leave the keys alone.


Authentication 7 endpoints

Tokens, refresh and tenant switching.

MethodPathDescription
POST/v1/token-auth/impersonate/exitStop acting as another user.
POST/v1/token-auth/impersonate/{principalId}Start acting as another user.
POST/v1/token-auth/issueExchange a login and password for a JWT. The token lasts 8 hours by default (integrator.jwt.exp.period, configurable on-premise).
POST/v1/token-auth/refreshRefresh a JWT that has not expired.
POST/v1/token-auth/revokeRevoke a JWT.
GET/v1/token-auth/tenantsTenants the caller can switch to.
POST/v1/token-auth/tenants/{tenantId}Switch tenant. Returns a new JWT scoped to the tenant.

Users and API keys 23 endpoints

Users, their long-lived keys for scripts and CI, and recovery of two-factor authentication.

MethodPathDescription
GET/v1/usersList users.
POST/v1/usersAdd new user.
GET/v1/users/metadataGet users metadata (list of roles and tenants).
GET/v1/users/metadata/nonadmin/rolesGet list of non admin roles.
GET/v1/users/{userId}Get user by ID.
PUT/v1/users/{userId}Edit user with given ID.
POST/v1/users/{userId}/2fa/disableDisable a user's two-factor authentication. For a user locked out of their authenticator.
GET/v1/users/{userId}/aclGet user access list.
PUT/v1/users/{userId}/aclSave user access list.
GET/v1/users/{userId}/ai-accessA user's AI access, and whether you may change it.
PUT/v1/users/{userId}/ai-accessSet a user's AI access.
GET/v1/users/{userId}/artifact-accessGet user artifact access.
PUT/v1/users/{userId}/artifact-accessSave user artifact access.
PUT/v1/users/{userId}/cost-accessAllow or deny a user seeing AI cost.
GET/v1/users/{userId}/effective-accessGet effective access.
GET/v1/users/{userId}/get-api-keyGet a user's current API key.
GET/v1/users/{userId}/groupsGet user groups.
PUT/v1/users/{userId}/groupsSave user groups.
POST/v1/users/{userId}/inviteResend user invite.
POST/v1/users/{userId}/new-api-keyGenerate or rotate a user's API key. Replaces any existing key for the user.
POST/v1/users/{userId}/revoke-api-keyRevoke a user's API key.
PUT/v1/users/{userId}/transcript-accessAllow or deny a user reading Simba transcripts.
PUT/v1/users/{userId}/unattended-actionsAllow or deny unattended Simba changes for a user. Whether scheduled and triggered Simba tasks owned by this user may make changes.

Security groups 9 endpoints

Groups of users with shared permissions and artifact access.

MethodPathDescription
GET/v1/security-groupsGet groups.
POST/v1/security-groupsCreate group.
GET/v1/security-groups/{groupId}Get group.
PUT/v1/security-groups/{groupId}Update group.
DELETE/v1/security-groups/{groupId}Delete group.
GET/v1/security-groups/{groupId}/aclGet access list.
PUT/v1/security-groups/{groupId}/aclSave access list.
GET/v1/security-groups/{groupId}/artifact-accessGet artifact access.
PUT/v1/security-groups/{groupId}/artifact-accessSave artifact access.

Tenants 5 endpoints

Tenants of a multi-tenant account.

MethodPathDescription
GET/v1/tenantsGet all tenants.
POST/v1/tenantsAdd new tenant.
GET/v1/tenants/metadataGet the metadata.
GET/v1/tenants/{tenantId}Get a tenant.
PUT/v1/tenants/{tenantId}Edit the tenant.

Your profile 24 endpoints

The calling user's profile, notifications, OpenAI key and two-factor authentication.

MethodPathDescription
GET/v1/2faStart setting up two-factor authentication.
POST/v1/2faQR code for adding another authenticator device.
GET/v1/2fa/codesYour recovery codes.
PUT/v1/2fa/codesGenerate new recovery codes.
POST/v1/2fa/disableTurn off your two-factor authentication.
POST/v1/2fa/enableTurn on two-factor authentication.
GET/v1/userprofileGet the user profile.
GET/v1/userprofile/company-accountGet company account.
POST/v1/userprofile/company-accountUpdate company account.
GET/v1/userprofile/current-tenant-accountGet current tenant account.
POST/v1/userprofile/current-tenant-accountUpdate current tenant account.
POST/v1/userprofile/default-tenant/{defaultTenantId}Set your default tenant.
POST/v1/userprofile/emailChange your email.
POST/v1/userprofile/nameChange your first and last name.
GET/v1/userprofile/notificationsGet notifications.
POST/v1/userprofile/notifications/readMark notifications read.
POST/v1/userprofile/notifications/read-allMark all notifications read.
GET/v1/userprofile/openai-keyGet the current user's personal OpenAI API key status.
POST/v1/userprofile/openai-keySet the current user's personal OpenAI API key.
DELETE/v1/userprofile/openai-keyClear the current user's personal OpenAI API key.
POST/v1/userprofile/openai-key/preferenceUse or stop using your personal OpenAI key.
POST/v1/userprofile/preferencesSave a preference.
GET/v1/userprofile/usageYour Simba token usage and estimated cost this month.
DELETE/v1/userprofile/users/{userId}/openai-keyClear another user's personal OpenAI key.

Flows 28 endpoints

Create, edit, inspect, version, import and export flows.

MethodPathDescription
GET/v1/flowsList flows. Returns every flow in scope in one response; there is no pagination.
POST/v1/flowsCreate a flow.
POST/v1/flows/bulkBulk-edit flows. Rename, retag, delete or run many flows in one call.
GET/v1/flows/bulk-load-methodsFunctions available in the Bulk Load SQL editor.
GET/v1/flows/documentation/diagramGet flow documentation diagram.
GET/v1/flows/documentation/mdGet flow documentation Markdown.
GET/v1/flows/exportExport flows as a bundle. Returns a text bundle to pass to an import endpoint.
GET/v1/flows/flow-parametersGet flow parameter options.
POST/v1/flows/importImport flows. Preview first.
POST/v1/flows/import/previewPreview a flow import.
POST/v1/flows/inspectRun Flow Findings on a flow definition. Checks a flow against the built-in heuristics without saving it.
GET/v1/flows/metadataGet the flows metadata.
POST/v1/flows/patchApply a patch to flows across tenants.
GET/v1/flows/recentRecently opened flows.
POST/v1/flows/searchSearch flow hierarchy.
GET/v1/flows/{flowId}Get a flow.
PUT/v1/flows/{flowId}Update a flow. Replaces the whole flow.
DELETE/v1/flows/{flowId}Delete a flow. Moves it to the recycle bin.
GET/v1/flows/{flowId}/documentationGenerated documentation for a flow.
POST/v1/flows/{flowId}/execution-previewPredict the execution plan of an unsaved transformation.
GET/v1/flows/{flowId}/historyVersion history of a flow.
GET/v1/flows/{flowId}/history/{uuidFrom}/diff/{uuidTo}Diff two versions of a flow.
GET/v1/flows/{flowId}/history/{uuid}Get one saved version of a flow.
PUT/v1/flows/{flowId}/history/{uuid}/messageEdit the save message of a flow version.
POST/v1/flows/{flowId}/recentMark a flow as recently used.
POST/v1/flows/{flowId}/transformation-testTest transformation.
GET/v1/flows/{flowId}/usageWhere a flow is referenced. Schedules, parent flows and listeners that reference it.
GET/v1/flows/{flowId}/xmlThe flow's scenario XML.

Runs 3 endpoints

Start and stop flow executions.

MethodPathDescription
POST/v1/flows/flow-name/{flowName}/runRun a flow by name. Every query parameter other than the ones listed is passed to the flow as a flow parameter.
POST/v1/flows/{flowId}/runRun a flow. The body is a flat map of flow parameters, or {}.
POST/v1/flows/{flowId}/stopStop a running flow.

Executions 13 endpoints

Status, history, logs and dbt results of executions.

MethodPathDescription
GET/v1/executions/console/downloadDownload an execution log. Accepts the token in the Authorization query parameter so the URL can be opened directly.
GET/v1/executions/{flowId}Get one execution. Look up by auditId, or by messageId for listener-triggered runs.
GET/v1/executions/{flowId}/audit/{auditId}/consoleThe log of one execution.
GET/v1/executions/{flowId}/audit/{auditId}/console/liveTail the log of a running execution.
GET/v1/executions/{flowId}/audit/{auditId}/dbtdbt results of an execution. Model and test outcomes, timings, sources and freshness from a dbt flow run.
GET/v1/executions/{flowId}/audit/{auditId}/dbt/artifacts/{artifactName}Download a dbt artifact. Only the four artifact names listed are served; any other name returns 404.
GET/v1/executions/{flowId}/audit/{auditId}/running-tasksTransformations in flight.
GET/v1/executions/{flowId}/dbt/retry/executionsList failed executions whose run_results.json is still retained for native retry.
POST/v1/executions/{flowId}/dbt/stateUpload one immutable manifest for later state/defer selection.
GET/v1/executions/{flowId}/dbt/state/executionsList successful executions whose manifest is still retained for state use.
DELETE/v1/executions/{flowId}/dbt/state/{uploadId}Delete one flow-scoped uploaded state manifest.
GET/v1/executions/{flowId}/historyExecution history of a flow. Returns up to 100 records per call.
GET/v1/executions/{flowId}/statusesExecution counts by status.

Schedules 14 endpoints

Timers, cron schedules and their history.

MethodPathDescription
GET/v1/schedulesList schedules.
POST/v1/schedulesCreate a schedule.
POST/v1/schedules/bulkBulk-edit schedules.
GET/v1/schedules/flows/{flowId}Schedules that run a flow.
GET/v1/schedules/metadataGet schedules metadata.
GET/v1/schedules/{scheduleId}Get a schedule.
PUT/v1/schedules/{scheduleId}Update a schedule. Send the full schedule.
DELETE/v1/schedules/{scheduleId}Delete a schedule. Moves it to the recycle bin.
POST/v1/schedules/{scheduleId}/disableDisable a schedule. Pauses it without deleting it.
POST/v1/schedules/{scheduleId}/enableEnable a schedule.
POST/v1/schedules/{scheduleId}/flows/{flowId}/runRun a scheduled flow now. Runs the flow with the schedule's parameters and settings applied.
GET/v1/schedules/{scheduleId}/historyVersion history of a schedule.
GET/v1/schedules/{scheduleId}/history/{uuidFrom}/diff/{uuidTo}Diff two versions of a schedule.
GET/v1/schedules/{scheduleId}/history/{uuid}Get one saved version of a schedule.

Composer 9 endpoints

Flows built in Composer, the visual workflow builder, and its drafts.

MethodPathDescription
POST/v1/composer/flowsAdd composer flow.
POST/v1/composer/flows/draftsCreate composer draft.
GET/v1/composer/flows/drafts/{draftKey}Get composer draft.
PUT/v1/composer/flows/drafts/{draftKey}Save composer draft.
POST/v1/composer/flows/import-templateImport template as composer.
POST/v1/composer/flows/resolve-pairResolve pair.
POST/v1/composer/flows/searchSearch composer flow.
GET/v1/composer/flows/{flowId}Get composer flow.
PUT/v1/composer/flows/{flowId}Edit composer flow.

Connections 21 endpoints

Database, storage, API and queue connections.

MethodPathDescription
GET/v1/connectionsList connections.
POST/v1/connectionsCreate a connection.
POST/v1/connections/bulkBulk-edit connections. Applies the listed actions to every id in the request, in order.
GET/v1/connections/recentRecently opened connections. Recently opened by the calling user.
GET/v1/connections/sshkeysList uploaded SSH keys.
DELETE/v1/connections/sshkeys/{fileName}Delete an uploaded SSH key.
POST/v1/connections/testTest a connection. Tests the connection in the body without saving it.
GET/v1/connections/{connectionId}Get a connection.
PUT/v1/connections/{connectionId}Update a connection. The body replaces the stored object; send the full object, not a patch.
DELETE/v1/connections/{connectionId}Delete a connection. Moves it to the recycle bin; restore it with POST /v1/recycle-bin/{type}/{id}/restore.
POST/v1/connections/{connectionId}/explorer-objectsObjects behind a connection, for Explorer.
POST/v1/connections/{connectionId}/fieldsList the fields of an object.
PUT/v1/connections/{connectionId}/fieldsClear the cached fields of a connection object.
GET/v1/connections/{connectionId}/historyVersion history of a connection.
GET/v1/connections/{connectionId}/history/{uuidFrom}/diff/{uuidTo}Diff two versions of a connection.
GET/v1/connections/{connectionId}/history/{uuid}Get one saved version of a connection.
PUT/v1/connections/{connectionId}/history/{uuid}/messageEdit the save message of a connection version.
POST/v1/connections/{connectionId}/objectsList tables, files or endpoints. Lists the objects reachable through a connection.
DELETE/v1/connections/{connectionId}/objectsClear the cached object list of a connection.
POST/v1/connections/{connectionId}/recentMark a connection as recently used.
GET/v1/connections/{connectionId}/usageWhere a connection is used.

Formats 14 endpoints

File and message formats.

MethodPathDescription
GET/v1/formatsList formats.
POST/v1/formatsCreate a format.
POST/v1/formats/bulkBulk-edit formats. Applies the listed actions to every id in the request, in order.
GET/v1/formats/recentRecently opened formats. Recently opened by the calling user.
GET/v1/formats/{formatId}Get a format.
PUT/v1/formats/{formatId}Update a format. The body replaces the stored object; send the full object, not a patch.
DELETE/v1/formats/{formatId}Delete a format. Moves it to the recycle bin; restore it with POST /v1/recycle-bin/{type}/{id}/restore.
GET/v1/formats/{formatId}/historyVersion history of a format.
GET/v1/formats/{formatId}/history/{uuidFrom}/diff/{uuidTo}Diff two versions of a format.
GET/v1/formats/{formatId}/history/{uuid}Get one saved version of a format.
PUT/v1/formats/{formatId}/history/{uuid}/messageEdit the save message of a format version.
POST/v1/formats/{formatId}/recentMark a format as recently used.
GET/v1/formats/{formatId}/usageWhere a format is used.
GET/v1/formats/{formatId}/x12-message-schemaGet the normalized X12 message schema for the selected format.

Listeners 8 endpoints

HTTP, queue and other inbound listeners.

MethodPathDescription
GET/v1/listenersList listeners.
POST/v1/listenersCreate a listener.
POST/v1/listeners/bulkBulk-edit listeners. Applies the listed actions to every id in the request, in order.
GET/v1/listeners/recentRecently opened listeners. Recently opened by the calling user.
GET/v1/listeners/{listenerId}Get a listener.
PUT/v1/listeners/{listenerId}Update a listener. The body replaces the stored object; send the full object, not a patch.
DELETE/v1/listeners/{listenerId}Delete a listener. Moves it to the recycle bin; restore it with POST /v1/recycle-bin/{type}/{id}/restore.
POST/v1/listeners/{listenerId}/recentMark a listener as recently used.

CDC offsets 12 endpoints

Read, set, back up and restore the change data capture position of a flow or connection.

MethodPathDescription
GET/v1/connections/{connectionId}/cdc-offsetGet CDC offset.
PUT/v1/connections/{connectionId}/cdc-offsetUpdate CDC offset.
DELETE/v1/connections/{connectionId}/cdc-offsetDelete CDC offset.
GET/v1/connections/{connectionId}/cdc-offset-fileGet CDC offset file.
PUT/v1/connections/{connectionId}/cdc-offset-fileUpdate CDC offset file.
DELETE/v1/connections/{connectionId}/cdc-offset-fileDelete CDC offset file.
POST/v1/connections/{connectionId}/cdc-offset-file/restoreRestore CDC offset file.
POST/v1/connections/{connectionId}/cdc-offset/restoreRestore CDC offset.
GET/v1/flows/{flowId}/cdc-offsetGet CDC offset.
PUT/v1/flows/{flowId}/cdc-offsetUpdate CDC offset.
DELETE/v1/flows/{flowId}/cdc-offsetDelete CDC offset.
POST/v1/flows/{flowId}/cdc-offset/restoreRestore CDC offset.

Import and export 4 endpoints

Move connections and formats between tenants.

MethodPathDescription
GET/v1/io/exportExport connections and formats as a bundle. Returns a text bundle.
POST/v1/io/importImport connections and formats.
POST/v1/io/import/previewPreview a connection and format import.
GET/v1/io/listConnections and formats available to export.

SQL 5 endpoints

Run SQL against a connection.

MethodPathDescription
GET/v1/explorer/sql/connection/{connectionId}/historyGet the SQL execution history for the given connection ID.
POST/v1/explorer/sql/dataRun SQL against a connection.
GET/v1/explorer/sql/data/executions/{executionId}/consoleThe log of a SQL execution.
GET/v1/explorer/sql/data/executions/{executionId}/downloadDownload data execution log.
POST/v1/explorer/sql/formatFormat SQL or script code.

Explorer 15 endpoints

Explorer, the built-in data browser: objects, data and files behind a connection.

MethodPathDescription
GET/v1/explorer/connectionsGet all connections and their metadata.
POST/v1/explorer/connections/delete/{connectionId}/filesDelete connection files.
DELETE/v1/explorer/connections/delete/{connectionId}/files/{objectName}Delete connection file.
GET/v1/explorer/connections/download/{connectionId}/{formatId}/{objectName}Download connection file.
GET/v1/explorer/connections/exportExport data for a given connection/format combination in a given format.
GET/v1/explorer/connections/metadataGet the connections metadata.
GET/v1/explorer/connections/{connectionId}Get the connection by ID.
POST/v1/explorer/connections/{connectionId}/filesSave file.
POST/v1/explorer/connections/{connectionId}/files/renameRename file.
POST/v1/explorer/connections/{connectionId}/foldersCreate folder.
POST/v1/explorer/connections/{connectionId}/folders/deleteDelete folder.
POST/v1/explorer/connections/{connectionId}/folders/renameRename folder.
PUT/v1/explorer/connections/{connectionId}/{formatId}Set the format Explorer uses for a connection.
GET/v1/explorer/connections/{connectionId}/{formatId}/{objectName}/dataRead the data of an object.
POST/v1/explorer/connections/{connectionId}/{formatId}/{objectName}/dataRead the data of an object, with options.

Connector metadata 4 endpoints

The parameter keys each connector, format and flow type accepts.

MethodPathDescription
GET/v1/di/metadata/connections/{key}Describe one connection type. Lists the parameter keys accepted in properties, with type, default and whether required.
GET/v1/di/metadata/flows/{key}Describe one flow type. Lists the parameter keys accepted in properties, with type, default and whether required.
GET/v1/di/metadata/formats/{key}Describe one format type. Lists the parameter keys accepted in properties, with type, default and whether required.
GET/v1/di/metadata/{type}List connector, format or flow types.

Macros 10 endpoints

Reusable parameterized snippets.

MethodPathDescription
GET/v1/macrosList macros.
POST/v1/macrosCreate a macro.
GET/v1/macros/{macroId}Get a macro.
PUT/v1/macros/{macroId}Update a macro.
DELETE/v1/macros/{macroId}Delete a macro. Refused with 409 while a flow still uses it.
GET/v1/macros/{macroId}/historyVersion history of a macro.
GET/v1/macros/{macroId}/history/{uuidFrom}/diff/{uuidTo}Diff two versions of a macro.
GET/v1/macros/{macroId}/history/{uuid}Get one saved version of a macro.
PUT/v1/macros/{macroId}/starStar or unstar a macro.
GET/v1/macros/{macroId}/usageWhere a macro is used.

Functions 1 endpoint

Built-in transformation functions.

MethodPathDescription
GET/v1/functionsList transformation functions.

Templates 10 endpoints

Flow templates.

MethodPathDescription
GET/v1/templatesList flow templates.
POST/v1/templatesAdd new template.
POST/v1/templates/custom-dumpBuild a template from selected flows.
GET/v1/templates/icons/{templateId}Get the template icon.
GET/v1/templates/metadataGet templates metadata.
POST/v1/templates/searchSearch flow templates.
POST/v1/templates/searchDescriptorsSearch template descriptors with AI.
GET/v1/templates/{templateId}Get a flow template.
PUT/v1/templates/{templateId}Edit the template.
DELETE/v1/templates/{templateId}Delete the template.

Icons 2 endpoints

Icons for flows and other artifacts.

MethodPathDescription
GET/v1/imagesGet all available icons grouped by type.
POST/v1/images/generateGenerate icon image from request.

Agents 31 endpoints

Integration Agents, the workers installed next to on-premise data: configuration, status, actions and updates.

MethodPathDescription
GET/v1/agentsGet all agents.
POST/v1/agentsAdd agent.
GET/v1/agents/artifacts/metadataGet artifacts metadata.
POST/v1/agents/bulkBulk action agents.
POST/v1/agents/bulk-updateBulk update agents.
POST/v1/agents/bulk-update/clear-statusClear bulk update statuses.
POST/v1/agents/bulk-update/previewPreview bulk update agents.
POST/v1/agents/disable/{agentId}Disable the agent.
GET/v1/agents/download/{agentId}/actions/{actionId}Download agent action file.
GET/v1/agents/download/{agentId}/artifactsDownload agent artifact.
GET/v1/agents/download/{agentId}/licenseDownload agent license.
POST/v1/agents/enable/{agentId}Enable the agent.
GET/v1/agents/lightList agents (id, name and status only).
GET/v1/agents/metadataGet metadata.
GET/v1/agents/recentGet recent agents.
GET/v1/agents/update-requestsGet recent update requests.
GET/v1/agents/update-requests/{requestId}Get update request.
GET/v1/agents/{agentId}Get agent.
PUT/v1/agents/{agentId}Edit agent.
DELETE/v1/agents/{agentId}Delete the agent.
GET/v1/agents/{agentId}/actionsGet agent actions.
POST/v1/agents/{agentId}/actionsAdd agent action.
GET/v1/agents/{agentId}/actions/{actionId}Get agent action result.
PUT/v1/agents/{agentId}/actions/{actionId}Cancel agent action.
GET/v1/agents/{agentId}/historyGet agent change history.
GET/v1/agents/{agentId}/history/{uuidFrom}/diff/{uuidTo}Get agent history diff.
GET/v1/agents/{agentId}/history/{uuid}Get agent history item by ID.
GET/v1/agents/{agentId}/pingAgent status, pending actions and flow metadata.
POST/v1/agents/{agentId}/recentMark an Agent as recently used.
GET/v1/agents/{agentId}/statusGet agent status.
GET/v1/agents/{agentId}/update-checkCheck whether an update is available for an Agent.

Simba in the app 20 endpoints

The endpoints behind the in-app chat with Simba, the Etlworks AI agent, and its tenant settings. For programmatic use, prefer the AI Agent API.

MethodPathDescription
GET/v1/ai-agent/api-keyCheck if an OpenAI API key is configured.
POST/v1/ai-agent/api-keySave an OpenAI API key.
POST/v1/ai-agent/api-key/deleteDelete a stored OpenAI API key.
POST/v1/ai-agent/chat/{sessionId}Send a chat message; the reply streams as Server-Sent Events.
GET/v1/ai-agent/client-configConfiguration for the in-app chat.
POST/v1/ai-agent/composer/sessionInitialize or resume a Composer-linked chat session.
GET/v1/ai-agent/healthWhether Simba is available.
POST/v1/ai-agent/sessionInitialize an authenticated chat session.
GET/v1/ai-agent/session/historyGet chat session history for the current user.
POST/v1/ai-agent/session/newForce a new chat session, ignoring any existing session.
GET/v1/ai-agent/session/{sessionId}/messagesMessages of a chat session.
POST/v1/ai-agent/session/{sessionId}/resumeResume a specific chat session by ID.
GET/v1/ai-agent/session/{sessionId}/scheduled-flowDraft a scheduled Simba task from a chat. Proposes the flow name, reusable prompt and schedule that POST on the same path creates.
POST/v1/ai-agent/session/{sessionId}/scheduled-flowCreate a scheduled Simba task from a chat. Creates a Run Simba Prompt flow and its schedule from the conversation.
GET/v1/ai-agent/session/{sessionId}/usageToken usage of a chat session.
POST/v1/ai-agent/support-ticketCreate support ticket.
GET/v1/ai-agent/wallet/myYour AI wallet balance.
GET/v1/ai-agent/wallet/{billingKey}Get wallet balance and summary for a billing key.
POST/v1/ai-agent/wallet/{billingKey}/rechargeRecharge an AI wallet.
GET/v1/ai-agent/wallet/{billingKey}/transactionsAI wallet transactions.

AI assistance 21 endpoints

AI helpers used by the editors: mapping, template matching and schedule analysis.

MethodPathDescription
POST/v1/intelligence/descriptorsMatches flow descriptors based on the provided prompt and context.
POST/v1/intelligence/insights/resource-usage/askAsk resource usage.
POST/v1/intelligence/insights/scheduled-activity/analyzeAnalyze scheduled activity.
POST/v1/intelligence/insights/scheduled-activity/askAsk scheduled activity.
POST/v1/intelligence/insights/scheduled-activity/optimizeOptimize scheduled activity.
POST/v1/intelligence/mappingCreates a mapping between source and destination datasets using AI.
POST/v1/intelligence/schedule/afterFinds all scheduled entries that start strictly after the given time.
POST/v1/intelligence/schedule/analyze/from-promptUses a natural language prompt to analyze schedules and return matching results.
POST/v1/intelligence/schedule/at-or-afterFinds scheduled entries that start at or after the given time.
POST/v1/intelligence/schedule/at-or-beforeFinds scheduled entries that end at or before the given time.
POST/v1/intelligence/schedule/beforeFinds all scheduled entries that end strictly before the given time.
POST/v1/intelligence/schedule/betweenFinds all scheduled entries within the specified start and end time.
POST/v1/intelligence/schedule/execution-mapMap when scheduled flows run over a period.
POST/v1/intelligence/schedule/gapsIdentifies gaps (unscheduled periods) between scheduled entries.
POST/v1/intelligence/schedule/gaps/afterIdentifies gaps that start strictly after a given time.
POST/v1/intelligence/schedule/gaps/at-or-afterIdentifies gaps starting at or after a given time.
POST/v1/intelligence/schedule/gaps/at-or-beforeIdentifies gaps ending at or before a given time.
POST/v1/intelligence/schedule/gaps/beforeIdentifies gaps that end strictly before a given time.
POST/v1/intelligence/schedule/gaps/betweenIdentifies gaps strictly between a given start and end time.
POST/v1/intelligence/schedule/suggest-optimizedSuggests an optimized schedule based on available times and execution patterns.
POST/v1/intelligence/templatesMatches templates based on a natural language prompt and context.

AI usage 11 endpoints

Token usage and cost of Simba by user, tenant and day.

MethodPathDescription
GET/v1/metrics/ai-agent/conversation-exportDownload one Simba conversation with per-turn tokens and cost.
GET/v1/metrics/ai-agent/daily-usageSimba usage by day.
GET/v1/metrics/ai-agent/rag-statusStatus of the knowledge-base index Simba searches.
POST/v1/metrics/ai-agent/rag-syncRebuild the knowledge-base index Simba searches.
POST/v1/metrics/ai-agent/rag-sync/cancelCancel a knowledge-base index rebuild.
GET/v1/metrics/ai-agent/rag-sync/progressProgress of a knowledge-base index rebuild.
GET/v1/metrics/ai-agent/summarySimba usage summary.
GET/v1/metrics/ai-agent/tenant-usageSimba usage by tenant.
GET/v1/metrics/ai-agent/user-sessionsOne user's Simba sessions on a day, heaviest first.
GET/v1/metrics/ai-agent/user-transcript-exportDownload all of one user's Simba transcripts for a day.
GET/v1/metrics/ai-agent/user-usageSimba usage by user.

Webhooks 9 endpoints

Outbound notifications on flow events.

MethodPathDescription
GET/v1/webhooksList webhooks.
POST/v1/webhooksCreate a webhook. Deliveries carry X-Etl-Webhook-Event, X-Etl-Webhook-Event-Id, X-Etl-Webhook-Id and X-Etl-Webhook-Entity-Id headers, plus X-Etl-Webhook-Signature when a secret is set.
GET/v1/webhooks/metadataWebhook event types.
GET/v1/webhooks/{webhookId}Get a webhook.
PUT/v1/webhooks/{webhookId}Update a webhook.
DELETE/v1/webhooks/{webhookId}Delete a webhook.
PUT/v1/webhooks/{webhookId}/enabledEnable or disable a webhook. Switches deliveries on or off without editing the rest of the webhook.
GET/v1/webhooks/{webhookId}/eventsRecent deliveries.
GET/v1/webhooks/{webhookId}/events/{eventId}One delivery, with payload and response.

Messages 3 endpoints

Payloads received by listeners.

MethodPathDescription
GET/v1/messagesList listener messages. Available to the API User role.
POST/v1/messagesSearch listener messages. Available to the API User role.
GET/v1/messages/{messageId}Get a message body. Available to the API User role.

CLI 2 endpoints

The built-in command line.

MethodPathDescription
POST/v1/cliRun CLI commands. Runs one or more built-in CLI commands and returns their output.
GET/v1/cli/commandsList CLI commands.

Tags, tag views and name search.

MethodPathDescription
POST/v1/searchSearch with filters.
GET/v1/tagsList tags in use.
POST/v1/tags/updateUpdate tags within the current principal scope.
POST/v1/tags/update-allUpdate tags in every tenant.
POST/v1/tags/update/{tenantId}Update tags for a given tenant.
GET/v1/tags/viewsList all saved tag views.
POST/v1/tags/viewsReplace the saved tag views.
DELETE/v1/tags/views/{name}Delete a single view by name.

Audit 5 endpoints

Audit trail of API calls.

MethodPathDescription
GET/v1/auditRecent API audit records.
POST/v1/auditSearch API audit records.
GET/v1/audit/summaryCompact audit summary.
GET/v1/audit/{auditId}Details of one audit record.
GET/v1/audit/{auditId}/parametersGet the audit record parameters.

Recycle bin 3 endpoints

Deleted objects.

MethodPathDescription
GET/v1/recycle-binList deleted objects.
GET/v1/recycle-bin/{type}/{id}/previewPreview restoring a deleted object. Whether the object can be restored, why not if it cannot, and the dependencies a restore would bring back or reuse.
POST/v1/recycle-bin/{type}/{id}/restoreRestore a deleted object.

Support 2 endpoints

Open a support ticket about a flow.

MethodPathDescription
GET/v1/support/flows/{flowId}/previewPreview a support ticket about a flow.
POST/v1/support/flows/{flowId}/ticketSend a support ticket about a flow.

Metrics 14 endpoints

Execution counts, heatmaps, running tasks and flow findings.

MethodPathDescription
GET/v1/metricsGet metrics.
GET/v1/metrics/aggregatedGet aggregated metrics.
GET/v1/metrics/api/statsHTTP listener throttling statistics.
GET/v1/metrics/executionsGet the list of flow executions for specified day.
GET/v1/metrics/executions-heatmapGet execution heatmap for the selected period.
GET/v1/metrics/executions-heatmap/aggregatedGet aggregated execution heatmap for the selected period.
GET/v1/metrics/executions/aggregatedFlow executions on a day, across tenants.
GET/v1/metrics/flow-findingsGet flow inspection findings.
POST/v1/metrics/home/widgets/refreshStart a refresh of the dashboard widgets.
GET/v1/metrics/home/widgets/refresh/{requestId}Results of a dashboard widget refresh.
GET/v1/metrics/monthlyGet specified month's metrics.
GET/v1/metrics/monthly/aggregatedGet specified month's aggregated metrics.
GET/v1/metrics/running-tasksGet the list of running flow tasks.
GET/v1/metrics/running-tasks/aggregatedRunning flow tasks across all application nodes.

Resource usage 9 endpoints

CPU, memory and thread usage by flow, and resource incidents.

MethodPathDescription
GET/v1/metrics/resource-usage/configGet resource usage config.
GET/v1/metrics/resource-usage/execution-threadsGet resource usage execution thread tree.
GET/v1/metrics/resource-usage/executionsGet resource usage executions.
GET/v1/metrics/resource-usage/incidentsGet resource usage incidents.
GET/v1/metrics/resource-usage/incidents/{incidentId}/impactGet resource usage incident impact.
GET/v1/metrics/resource-usage/summaryGet resource usage summary.
GET/v1/metrics/resource-usage/threadsGet resource usage thread samples.
GET/v1/metrics/resource-usage/timelineGet resource usage timeline.
GET/v1/metrics/resource-usage/top-flowsGet resource usage top flows.

System 12 endpoints

Health, license, suspend and resume, releases, threads and heap dumps.

MethodPathDescription
GET/v1/modulesGet the list of modules.
GET/v1/modules/{moduleName}Get the module with the given name.
GET/v1/system/healthHealth of the application nodes.
POST/v1/system/license/refreshRequest an immediate license-property refresh on all application nodes.
GET/v1/system/metrics/core-dumpWrite a heap dump on the ETL engine.
GET/v1/system/metrics/etl-threadsETL engine threads.
POST/v1/system/redis/persistPersist Redis state to disk before a backup or migration.
GET/v1/system/release-statusRelease notice status.
GET/v1/system/releasesReleases.
POST/v1/system/resumeResume all nodes.
GET/v1/system/running-flowsGet the list of running flows.
POST/v1/system/suspendSuspend all nodes.

Maintenance 9 endpoints

Scheduled maintenance tasks such as cleanup and backup.

MethodPathDescription
GET/v1/maintenanceGet all maintenance tasks.
POST/v1/maintenanceAdd maintenance task.
POST/v1/maintenance/app-data-backup-previewGet app.data backup preview.
POST/v1/maintenance/app-data-cleanup-testGet app.data cleanup test results.
GET/v1/maintenance/metadataGet the maintenance metadata.
PUT/v1/maintenance/{taskId}Edit maintenance task.
DELETE/v1/maintenance/{taskId}Delete maintenance task.
GET/v1/maintenance/{taskId}/executionsGet maintenance task executions.
GET/v1/maintenance/{taskId}/runRun maintenance task on demand.

Settings 5 endpoints

Global application settings.

MethodPathDescription
GET/v1/settingsAll settings, with their descriptors.
POST/v1/settingsSave the values of one settings category.
GET/v1/settings/force-streaming-policyForce Streaming policy of your tenant.
GET/v1/settings/mail/testTest email settings.
GET/v1/settings/sso/testTest the OpenID Connect settings and show the callback URL.

Billing 32 endpoints

Subscriptions, plans, invoices, payment cards and the AI wallet of an Etlworks Cloud account. The billing pages of the application call these; you can too, with an administrator's token.

MethodPathDescription
GET/v1/billing/accountGet billing account info for the current tenant.
PUT/v1/billing/accountUpdate billing account information.
POST/v1/billing/account/createCreate a billing account and link it to this tenant.
POST/v1/billing/account/linkLink an existing billing account.
POST/v1/billing/account/unlinkUnlink the billing account from this tenant.
GET/v1/billing/cardsGet cards.
POST/v1/billing/cardsAdd a payment method using a Stripe token.
DELETE/v1/billing/cards/{cardId}Delete a payment method.
PUT/v1/billing/cards/{cardId}/defaultSet the default payment method.
GET/v1/billing/emailGet billing email.
GET/v1/billing/invoicesGet invoices.
GET/v1/billing/invoices/{invoiceId}Get invoice.
GET/v1/billing/plansGet plans.
GET/v1/billing/plans/allGet all plans.
GET/v1/billing/plans/{planId}Get plan.
GET/v1/billing/subscriptionsGet subscriptions.
POST/v1/billing/subscriptionsSubscribe to a plan.
GET/v1/billing/subscriptions/all-linkedAll active subscriptions of the linked billing account, marked by environment.
POST/v1/billing/subscriptions/claimAssign subscriptions to this environment.
GET/v1/billing/subscriptions/unassignedActive subscriptions not yet assigned to an environment.
POST/v1/billing/subscriptions/upgradeUpgrade subscription.
GET/v1/billing/subscriptions/upgradesGet upgrade plans.
POST/v1/billing/subscriptions/{subscriptionId}Update a subscription.
DELETE/v1/billing/subscriptions/{subscriptionId}Cancel a subscription.
GET/v1/billing/subscriptions/{subscriptionId}/invoicesGet subscription invoices.
POST/v1/billing/subscriptions/{subscriptionId}/pausePause a subscription.
POST/v1/billing/subscriptions/{subscriptionId}/unlinkUnassign a subscription from this environment.
POST/v1/billing/subscriptions/{subscriptionId}/unpauseUnpause (reactivate) a subscription.
GET/v1/billing/walletGet wallet.
PUT/v1/billing/wallet/auto-rechargeUpdate auto recharge.
POST/v1/billing/wallet/rechargeRecharge wallet.
GET/v1/billing/wallet/transactionsGet wallet transactions.

OAuth authorization 31 endpoints

Connect a connection to a SaaS account with OAuth. The browser follows metadata to the provider, which redirects back to callback; revoke disconnects. Callbacks take no bearer token.

MethodPathDescription
GET/v1/io/oauth/amazon/seller/callbackProcess authentication callback.
GET/v1/io/oauth/amazon/seller/callback/oauth-redirectRedirect to custom app OAuth screen.
GET/v1/io/oauth/amazon/seller/metadataGet Amazon Seller connector metadata.
GET/v1/io/oauth/atlassian/callbackProcess authentication callback.
GET/v1/io/oauth/atlassian/metadataGet Atlassian connector metadata.
GET/v1/io/oauth/dropbox/callbackProcess authentication callback.
GET/v1/io/oauth/dropbox/metadataGet Dropbox connector metadata.
POST/v1/io/oauth/dropbox/revokeRevoke OAuth token.
GET/v1/io/oauth/facebook/callbackProcess authentication callback.
GET/v1/io/oauth/facebook/metadataGet Facebook connector metadata.
POST/v1/io/oauth/facebook/revokeRevoke OAuth token.
GET/v1/io/oauth/google/callbackProcess authentication callback.
GET/v1/io/oauth/google/metadataGet Google connector metadata.
POST/v1/io/oauth/google/revokeRevoke OAuth token.
GET/v1/io/oauth/hubspot/callbackProcess authentication callback.
GET/v1/io/oauth/hubspot/metadataGet HubSpot connector metadata.
POST/v1/io/oauth/hubspot/revokeRevoke OAuth token.
GET/v1/io/oauth/mailchimp/callbackProcess authentication callback.
GET/v1/io/oauth/mailchimp/metadataGet Mailchimp connector metadata.
GET/v1/io/oauth/microsoft/callbackProcess authentication callback.
GET/v1/io/oauth/microsoft/metadataGet Microsoft connector metadata.
POST/v1/io/oauth/microsoft/revokeRevoke OAuth token.
GET/v1/io/oauth/quickbooks/callbackProcess authentication callback.
POST/v1/io/oauth/quickbooks/consent-urlGet OAuth consent screen URL.
POST/v1/io/oauth/quickbooks/revokeRevoke OAuth token.
GET/v1/io/oauth/zoho/callbackProcess authentication callback.
GET/v1/io/oauth/zoho/callback/custom-appRedirect to custom app OAuth screen.
GET/v1/io/oauth/zoho/metadataGet ZOHO connector metadata.
GET/v1/salesforce/callbackProcess authentication callback.
GET/v1/salesforce/metadataGet salesforce connector metadata.
POST/v1/salesforce/revokeRevoke OAuth token.

Single sign-on 15 endpoints

SAML and OpenID Connect sign-in and the social sign-in providers. These are browser redirect flows and take no bearer token.

MethodPathDescription
POST/v1/social-auth/exchangeExchange a completed social sign-in for a token.
POST/v1/social-auth/linkLink a social sign-in to an existing account.
GET/v1/social-auth/pending/{ticket}State of a social sign-in in progress.
POST/v1/social-auth/signupSign up with a social account.
GET/v1/social-auth/{provider}/callbackSocial sign-in callback from the provider.
GET/v1/social-auth/{provider}/startStart social sign-in with a provider.
GET/v1/sso/callbackSSO callback from the identity provider.
POST/v1/sso/callbackSSO callback where the identity provider posts its token.
POST/v1/sso/exchangeExchange a one-time SSO ticket for a session.
GET/v1/sso/logoutFinish an SSO logout.
GET/v1/sso/logout/startStart logout using the provider which is enabled now.
GET/v1/sso/oidc/callbackProcess the direct OpenID Connect callback.
GET/v1/sso/oidc/logoutFinish the local session at the provider when RP-initiated logout is available.
GET/v1/sso/oidc/startStart a direct OpenID Connect authorization-code flow.
GET/v1/sso/pending/{ticket}Details shown before exchanging an SSO ticket.

Sign-up and passwords 9 endpoints

Account sign-up, accepting an invitation, and password reset by emailed link. No bearer token, except changing your own password.

MethodPathDescription
POST/v1/passresetSet a new password with a reset token.
POST/v1/passreset/tokenCheck a password reset token.
POST/v1/passreset/{email}Request a password reset email.
POST/v1/passupdateChange your own password.
GET/v1/signupCheck if signup is allowed and get login page config.
POST/v1/signupSign up a new tenant and its administrator.
GET/v1/signup/inviteGet the user invite for a given token.
POST/v1/signup/inviteFinish user setup for a given invite.
GET/v1/signup/metadataGet the signup metadata.

Agent protocol 14 endpoints

How an Integration Agent talks to the application: configuration, polling for actions, uploading results, logs and dbt artifacts. The Agent authenticates with its own credentials in Authorization and identifies the connection with X-Agent-Session, not with a user token. Listed for completeness; manage Agents with the Agents endpoints instead.

MethodPathDescription
POST/v1/agents/socket/{agentId}Agent fetches its configuration.
GET/v1/agents/socket/{agentId}/actionsAgent polls for pending actions.
POST/v1/agents/socket/{agentId}/actions/{actionId}Agent reports the result of an action.
GET/v1/agents/socket/{agentId}/actions/{actionId}/download/{fileUuid}Agent downloads a file for an action.
POST/v1/agents/socket/{agentId}/auditAgent uploads flow execution statistics.
POST/v1/agents/socket/{agentId}/audit/{auditId}Agent uploads an execution log.
POST/v1/agents/socket/{agentId}/audit/{auditId}/dbt/artifactAgent uploads a dbt artifact.
POST/v1/agents/socket/{agentId}/audit/{auditId}/dbt/finalizeAgent finishes a dbt artifact upload.
GET/v1/agents/socket/{agentId}/dbt/input/{token}Agent downloads the input of a dbt run.
POST/v1/agents/socket/{agentId}/explorer-data-logs/{executionId}Agent uploads an Explorer data log.
POST/v1/agents/socket/{agentId}/notifyAgent asks the application to send an email.
POST/v1/agents/socket/{agentId}/pingAgent heartbeat with metrics.
POST/v1/agents/socket/{agentId}/updater-pingAgent updater heartbeat.
POST/v1/agents/socket/{agentId}/updater-statusAgent updater reports its status.

Cluster coordination 13 endpoints

Draining, replacing and reconciling application nodes in a managed cluster. Used by the cluster tooling and the host CLI during upgrades; Super Admin.

MethodPathDescription
POST/v1/system/member/bootstrapBootstrap a managed cluster member.
GET/v1/system/member/drainDrain status of this node.
POST/v1/system/member/drainDrain this node: stop taking new work.
GET/v1/system/member/drain-plan/{operation}Inspect a drain plan.
POST/v1/system/member/drain-plan/{operation}Prepare a drain plan.
POST/v1/system/member/drain-plan/{operation}/advanceAdvance a drain plan to its next step.
POST/v1/system/member/flows/{flowId}Run a flow on this node.
GET/v1/system/member/identityManaged identity of this node.
POST/v1/system/member/identity/adoptAdopt a managed identity.
POST/v1/system/member/lostConfirm a cluster member is lost.
POST/v1/system/member/reconcileReconcile this node with the cluster.
GET/v1/system/member/replacements/{item}Receipt of a node replacement.
POST/v1/system/member/replacements/{item}Accept a node replacement.

Internal 3 endpoints

Calls from the ETL engine back into the application, for example when a flow runs an application-side step. Authenticated with an internal token, not a user token.

MethodPathDescription
POST/v1/internal/app-flows/cancelCancel an application-side flow step.
POST/v1/internal/app-flows/invokeRun an application-side flow step for the engine.
POST/v1/internal/app-flows/statusStatus of an application-side flow step.

Website and support desk 11 endpoints

Endpoints behind the etlworks.com website (the public chat and the contact forms) and the support-desk integration. No bearer token.

MethodPathDescription
POST/v1/ai-agent/zendesk/ticket-webhookReceive a new support ticket for an AI-drafted answer.
POST/v1/mailer/salesSend email to sales.
POST/v1/mailer/sales-jsonSend arbitrary email to sales.
POST/v1/mailer/supportSend email to support.
POST/v1/mailer/support-jsonSend arbitrary email to support.
GET/v1/public/agent/infoConfiguration of the website chat.
POST/v1/public/agent/sessionsStart a website chat session.
DELETE/v1/public/agent/sessions/{id}End a website chat session.
POST/v1/public/agent/sessions/{id}/chat/streamSend a website chat message; the reply streams as Server-Sent Events.
GET/v1/public/zendesk/solveConfirmation page for solving a support ticket from an emailed link.
POST/v1/public/zendesk/solveSolve a support ticket from an emailed link.

The AI agent (Simba) has its own API surface, distinct from the platform CRUD endpoints. Documented separately:


About the “Not for automation” groups

This reference lists every REST endpoint of the application. The groups under Not for automation (billing, OAuth and SSO redirects, sign-up and password reset, the Integration Agent protocol, cluster coordination, internal calls, and the etlworks.com website) exist and can be called, but they are meant for the browser, the Agent or the platform itself, and each group says who calls it. The AI Agent API and the MCP server have their own documentation. Endpoints that mainly serve the application’s screens (recent lists, editor helpers, dashboard widgets) change more often than the rest. Missing something? Email product@etlworks.com.