EIGENN.
docsguidesapichangelogpricingsign in
EIGENN.

Workflows API

Start a workflow run from the API, send a chat turn, and poll the run for its status and steps.

Summary

The public API can start a run of a published workflow and report what that run did. It cannot create, edit, or deploy a workflow. Build workflows in the Workflows product area, then start them from your own systems.

Starting a run is asynchronous; reading its status is a normal request. A workflow can pause at an approval step, so the start response cannot promise a completion time. Poll using the returned execution ID.

Capabilities

Not in the public API

The public contract has no operation that:

  • lists or searches workflow definitions
  • creates, updates, or deletes a workflow
  • deploys or promotes a version
  • lists execution history across runs
  • resumes or cancels a workflow pause

Use the Workflows product area for those tasks. Do not call private browser requests from an external integration.

Prerequisites

Scopes

OperationRequired scope
POST /workflows/{id}/executeworkflows.write
POST /workflows/{id}/chatworkflows.write
GET /workflows/runs/{executionId}workflows.read

Both OAuth tokens and API keys are accepted. Your effective role must retain the required scope. Starting a run also requires write access to its workflow namespace, an active workflow, a valid promoted definition, and API execution enabled. See Authentication.

Concepts

MCP boundary

The remote MCP endpoint includes workflow listing, run-status lookup, and execution tools. It does not provide a workflow builder or a history-list operation. Its execution tool requires both workflows.read and workflows.write; its accepted trigger types differ from REST. See MCP workflows.

Workflow

Start a run

POST /workflows/{id}/execute

The path id is the workflow UUID. The run uses the promoted version, not the draft.

Request

FieldTypeDefaultDescription
triggerTypeinvoice_overdue, manual, webhook, payment_failed, or customer_segment_enteredmanualThe trigger that this call asserts. It must match a trigger that the workflow declares.
triggerDataobject{}Data that the run starts with.
idempotencyKeystring, 1 to 255 charactersnoneReuses a matching retained job/execution for this team and workflow.

Record identifiers inside triggerData resolve against your team only. A request that names another team's record is rejected.

Supply a body idempotencyKey when a caller may retry. Without it, a retry can start another run. The key is shared across execute, chat, and MCP starts for the same team and workflow; it does not compare request bodies or caller identities. Use a different key for a different intended run. Reuse still passes workflow access and readiness checks.

This body key is separate from the optional HTTP Idempotency-Key header described in Errors and Safe Retries. Neither replaces idempotency for external effects performed by workflow steps.

curl --request POST \
  --url https://api.eigenn.io/v1/workflows/9c1e4c2a-0000-4000-8000-000000000000/execute \
  --header "Authorization: Bearer ${EIGENN_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "triggerType": "invoice_overdue",
    "triggerData": { "invoiceId": "3f2b1c4d-0000-4000-8000-000000000000" },
    "idempotencyKey": "invoice-chase-example"
  }'

Response

{
  "executionId": "0b8f0000-0000-4000-8000-000000000001",
  "runId": "7123",
  "queuedAt": "2026-07-11T14:02:11.000Z",
  "status": "queued"
}

The start response uses HTTP 200 and status: queued. It can also refer to an existing execution found through the body key. Read the execution to learn its current state; this acknowledgment does not prove a fresh queue entry or a completed step.

Use executionId to poll the run. Use runId to correlate the run with worker logs when you contact support.

Send a chat turn

POST /workflows/{id}/chat

A chat turn starts a run from a conversational message. The workflow must declare a manual trigger. A workflow configured for a webhook or a schedule is refused.

Request

FieldTypeRequiredDescription
messagestring, 1 to 8,000 charactersYesThe user's turn. The workflow receives it as trigger data under message.
conversationIdstring, 1 to 255 charactersNoAn identifier echoed in the response and passed to the workflow. It does not automatically restore earlier messages or resume a run.
triggerDataobjectNoExtra context merged alongside the message. Top-level message and, when supplied, conversationId take precedence.
idempotencyKeystring, 1 to 255 charactersNoUses the same team/workflow key space as execute and MCP.

Response

{
  "executionId": "0b8f0000-0000-4000-8000-000000000001",
  "conversationId": "conv-7f3a",
  "queuedAt": "2026-07-11T14:02:11.000Z",
  "status": "queued"
}

Each accepted chat request starts or reuses an execution; it is not a synchronous chat-completion API. The start response and run-status endpoint do not return generated reply text or step outputs. Check the output destination configured by the workflow.

When the top-level conversationId is omitted, the response returns null. A value inside triggerData can still reach the workflow, so use the top-level field when you need a consistent echoed identifier.

Poll a run

GET /workflows/runs/{executionId}

Returns the run, its current node, and recorded step summaries for an execution in your team. The path requires an execution UUID. It does not return step inputs, outputs, or a generated chat reply.

FieldDescription
executionIdThe run
workflowIdThe workflow that produced the run
statuspending, running, waiting, completed, failed, or canceled
currentNodeIdThe node the run is at, or null
triggerTypeThe trigger that started the run
createdAt, completedAtTimestamps, or null
stepsEach step with its id, nodeId, status, startedAt, completedAt, and errorMessage

waiting means the run is paused, most often for a person to approve a customer-facing action. It does not mean the run is stuck. Use Workflow Pauses to resolve the checkpoint.

Poll with backoff. A run that waits for a person can stay in waiting for as long as the approval takes.

Behavior specification

Errors

The following outcomes depend on the stage at which a request is refused:

StatusCommon cause
400Trigger dispatch is invalid, or referenced trigger data cannot be loaded for this team
401Credentials are absent, invalid, or have no effective scopes
403Required scope or namespace write access is missing, or API execution is disabled
404The workflow or execution does not exist in your team
409The workflow is inactive, has no promoted version, has a malformed promoted definition, or has no trigger
422Request schema validation failed; this is not the specific cross-team-record response
429A rate limit applied; respect Retry-After
500An unexpected server failure occurred

Request parsing can also return 400. If you opt into the shared HTTP idempotency header, its guard can return 409 while a matching request is running or 503 when that guard is unavailable. A repeated workflow body key does not itself mean a conflict.

See Errors and Safe Retries and Rate Limits.

Diagrams

Workflow Run API Interaction

Rendering diagram…

Screenshots

Not applicable: this page describes an API or a non-visual workflow rather than an application screen.

Verification

These are acceptance checks to run with an isolated team, a promoted synthetic workflow, and intercepted external actions. This copy review does not record a successful run.

  1. Start a run using the execute endpoint with a supported trigger and trigger data. Expect a response containing executionId and a status of queued.
  2. Send a chat turn to a workflow with a manual trigger and receive a response containing executionId, conversationId, and a status of queued.
  3. Poll a run using its execution ID and observe its status and step history, expecting statuses like pending, running, waiting, completed, failed, or canceled.
  4. Submit requests with missing scopes or improper input and confirm expected error responses, such as 403 or 400.
  5. Retry a retained execution with the same body key and confirm the same execution ID. Use a new key for a different intended run; do not change inputs under an existing key.
  6. Check inactive, unpromoted, API-disabled, namespace-denied, trigger-mismatch, and cross-team input cases against the error table.
  7. Confirm run polling contains status and step summaries but no generated reply or step output.

Related

Related Pages

  • Workflows
  • Workflow Executions
  • Workflow Pauses
  • Workflow Outcomes
  • MCP
  • API Reference

Webhooks API Status

Separate provider callback endpoints from the outbound subscription API that public v1 does not include now.

Migrate Data Into Eigenn

Connect source systems and backfill transaction history, but do not use Eigenn as a replacement general ledger.

On this page

SummaryCapabilitiesNot in the public APIPrerequisitesScopesConceptsMCP boundaryWorkflowStart a runRequestResponseSend a chat turnRequestResponsePoll a runBehavior specificationErrorsDiagramsScreenshotsVerificationRelatedRelated Pages

Eigenn docs

current product

Overview
Overview
OverviewAccount PreferencesApproval PoliciesAssistant AutomationAssistant Command CenterAssistant Workspace and Saved WorkBank ConnectionsBilling and UsageBudgets and ForecastCommand CenterCustomer FieldsCustomer LifecycleCustomer RecordsCustomersDeveloper PlatformDocument Processing and ExtractionFiles and Document VaultFinancial Analytics and ReportsFinancial OverviewInbox and ApprovalsInvoice InsightsInvoice ProductsInvoicesMarketplace IntegrationsNotifications and BrandingOnboarding and SupportOverviewPlanning Data and DimensionsPlanning Models and FormulasPlanning Time and ActualsPlanning UncertaintyPlanning Versions and CollaborationPlanning Views and ExportsPlans and AdjustmentsReceivablesReceivables AnalyticsReceivables ControlsRolling Budget CloseScenario PlanningSecurity and AccessSettings OverviewStress TestsTeams and OrganizationsTone Profiles and ExperimentsTransaction Categories and RulesTransaction CodingTransactionsWeekly Finance RitualWorkflow ExecutionsWorkflow OutcomesWorkflow PausesWorkflows
OverviewBuild a Driver-Based Planning ModelBuild and Review a ForecastBuild Your First WorkflowCollaborate on a Planning ModelCompare and Share Planning ScenariosConfigure Approval PoliciesConfigure Assistant OperationsConfigure Customer FieldsConfigure Notifications and BrandingConfigure Planning Time and ActualsConfigure Receivables ControlsConnect Planning Data and ActualsConnect Transaction RecordsCreate and Manage CustomersCreate and Send InvoicesCreate Your First Planning ModelDeveloper API SetupFirst Cash ReviewInvoice Collection WorkflowMaintain Transaction RulesManage Security and BillingManage Team AccessManage the Invoice LifecycleMCP WorkflowsMonitor and Recover WorkflowsOrganize and Share DocumentsProcess Inbox ItemsReconcile and Categorize TransactionsReview a Customer Finance RecordReview, Restore, and Export a Planning ModelRun a Finance Operating ReviewRun a Receivables Tone ExperimentRun a Runway Stress TestRun Planning Uncertainty AnalysisRun Your First Command Center ReviewSave and Share Assistant WorkSet Up a WorkspaceTroubleshoot Account AccessWebhook DeliveryWeekly CFO Review
OverviewIntegrationsMCPSDKsWebhooks
OverviewAuthenticationBank Accounts APICustomers APIErrorsForecasts and Stress Tests APIInvoice Payments APIInvoices APIPaginationRate LimitsRemote Tracker API StatusTracker Categories APITracker Entries and Timers APITracker Projects APITransactions APIWebhooks API StatusWorkflows API
Overview
Overview