📘 Public beta · Endpoints are stable; OpenAPI specs and SDKs ship monthly. See changelog →
Products
AI Automation
Overview
AI Automation

AI Automation

LLM-driven flows, agentic conversations, scheduled jobs. Bring your own DAG, plug in Quantum AI for reasoning + sibling services as tools.

Branded as Quantum AI. Internal model stack is not exposed via this docs surface.

What it does

CapabilityAPI
Flows (LLM DAGs)Visual builder + REST API. Supports llm_step nodes alongside service_call.
TriggersAPI call, public HMAC-signed webhook, or cron schedule.
Agents + conversationsReusable system-prompt + tool sets; multi-turn chat with tool use.
Service connectionsSame shape as Orchestration — register sibling products + custom HTTP.
Approval gatesLLM proposes action, human approves before execution.
Watchers + incidentsConditional rules over events/checks; stateful, dedup'd incidents with ack/resolve/escalate.
DigestsCron-scheduled, LLM-summarized reports to email · Slack · PDF.
EvalsRun a prompt against a labeled input set; pass/fail metrics for prompt CI.
Outbound webhooksSubscribe to flow runs, conversations, incidents, digests, evals.
Audit + immutabilityPostgres-trigger-enforced.

When to use it

AI Automation is right when you want:

  • Summarisation of a customer's history before an analyst makes a decision.
  • Classification of a free-text complaint into a routing bucket.
  • Structured extraction from a conversation (e.g. dispute claims).
  • Agentic workflows — LLM iteratively uses tools until it reaches a goal.
  • LLM-in-the-loop with human approval — model drafts, human signs off.

Use Orchestration instead when the flow is fully deterministic and you don't need an LLM step. Use both when you want a deterministic spine with LLM-augmented leaves.

Core concepts

ConceptWhat it is
FlowA versioned DAG. Like Orchestration's workflow, with extra node types: llm_step, http_request, http_sink, webhook_emit.
RunOne execution of a flow. Has trigger source (API/webhook/cron), inputs, steps[], status.
AgentReusable LLM character: system prompt + tool set + model choice.
ConversationMulti-turn chat session with an agent. Supports streaming.
ToolA callable function exposed to an agent: a sibling endpoint, your HTTP service, or built-in.
TriggerHow a run starts: API call, public webhook (HMAC-verified), or cron schedule.

Node types

In addition to all of Orchestration's node types (service_call, decision, transform, wait, webhook_emit, human_approval), AI Automation adds:

TypeWhat it does
llm_stepLLM completion. Templated prompt, structured output via JSON schema, optional tool use.
http_requestOutbound HTTP to any URL (not just registered services). For ad-hoc integrations.
http_sinkPosts the step's input to a configured URL. Convenience wrapper for "send to my service".

Triggers

TriggerUse for
apiYour service explicitly calls POST /api/flows/{id}/execute.
webhookA public URL (/api/triggers/wh/<token>) accepts HMAC-signed POSTs. Use for partner-triggered flows.
cronStandard 5-field cron expression. Runs on schedule with 60-second tick resolution.

Common integration shape

Customer complaint triage (cron-triggered every 15 min)

  1. 1
    Trigger
    Cron tick.
    Every 15 minutes.
  2. 2
    `service_call` (your CRM).
    GET `/api/tickets?status=new&since=last_seen`.
  3. 3
    `llm_step` (Quantum AI) — classify the ticket.
    Output schema: `{ category: enum, urgency: 1–5, summary: string }`.
  4. 4
    `decision` — branch on urgency.
    If `urgency >= 4` → page on-call. Else → tag ticket and continue.
  5. 5
    `service_call` (your CRM).
    PATCH `/api/tickets/{id}` with classification fields.

Scope naming

AI Automation scopes use a colon separator (flows:write, incidents:read) — different from AML / Identity / Anti-Fraud, which use a dot (sar.write). Both formats are accepted suite-wide for backwards compatibility, but new keys should use the form documented per-product. Mixed-format keys are fine; the gateway normalizes on parse.

Endpoints at a glance

GroupEndpoints
FlowsGET/POST /api/flows · GET/PATCH/DELETE /api/flows/{id} · POST /api/flows/{id}/execute · POST /api/flows/{id}/rotate-webhook-secret · GET /api/flows/{id}/runs
TriggersPOST /api/triggers/wh/{token} (public, HMAC-signed)
RunsGET /api/runs/{id} · POST /api/runs/{id}/approve · POST /api/runs/{id}/reject
AgentsGET/POST /api/agents
ConversationsGET/POST /api/conversations · GET /api/conversations/{id} · POST /api/conversations/{id}/messages
WatchersGET/POST /api/watchers · GET/PATCH/DELETE /api/watchers/{id} · POST /api/watchers/{id}/test
IncidentsGET /api/incidents · GET /api/incidents/{id} · POST /api/incidents/{id}/ack · /resolve · /escalate · /comments
DigestsGET/POST /api/digests · GET/PATCH/DELETE /api/digests/{id} · POST /api/digests/{id}/run-now
EvalsGET/POST /api/evals · GET /api/evals/{id}
Service connectionsGET/POST /api/service-connections
Cron previewGET /api/cron-preview?expression=...
WebhooksGET/POST /api/webhooks
API keysGET/POST /api/api-keys

Production considerations

A short list of things every regulated-finance client asks before going live.

ConcernAnswer
Data residency for LLMAll inference runs inside our Indonesia VPC (id-jkt-1). Customer payloads sent to the LLM never leave the region and are never used to train models. Full posture: Data residency →.
Model tierOne tier today: quantum-ai:default. ~8K-token context, schema-constrained JSON output, p95 inference ~2s. A :fast (cheaper, smaller) and :large (longer context) tier are on the 2026 Q4 roadmap.
Prompt + body limitsRequest body capped at 1 MB. Per-llm_step prompt + completion cannot exceed the model's context window — outputSchema enforcement may retry up to 3× on parse failure.
Rate limitsPer-org default: 1,000 flow executions/min, 200 LLM inferences/min, 50 webhook trigger requests/sec. Inference quota is also enforced daily by tier — see Rate limits →.
IdempotencyPOST /api/flows/{id}/execute accepts an idempotencyKey (any string, ≤ 256 chars). Repeated calls within 24h return the original runId instead of starting a new run.
AuditEvery flow execute, run approve/reject, watcher fire, digest send, eval start, conversation message is audit-logged with actor + timestamp + before/after. Retention 7 years.
Webhook signaturesIncoming trigger webhooks AND outgoing event webhooks both use X-Quantum-Signature: sha256=.... They use different secrets: the trigger's webhookSecret (per-flow) for inbound, the subscription's bearer secret (qe_whsec_...) for outbound. Don't reuse secret material between them.

Read next