Create workflow
Creates a workflow and starts it running.
The new workflow is active immediately, so a scheduled trigger begins firing on its schedule and an event trigger starts listening as soon as this returns. Create it, then call Toggle workflow status if you want it paused instead.
Names are unique per app across everything that is not archived. Reusing a name returns a 409, so update the existing workflow with Update workflow rather than creating a second one. Saving also writes a matching file into the app’s code, so the workflow shows up in the editor alongside everything else.
This endpoint is limited to 20 requests per minute.
Authorizations
Personal API key.
Path Parameters
ID of the app whose workflows you want to work with.
Body
Name for the workflow. Must be unique among the app's workflows that are not archived.
"Email me new signups"
The steps to run, as a CNCF Serverless Workflow v1.0 document. Check it with Validate a workflow definition first.
What starts the workflow. The trigger goes inside config, whose trigger_type picks the kind and whose remaining fields configure it. Add a top-level condition to skip a dispatch unless a jq expression over the payload is truthy.
What the workflow is for, in your own words.
"Sends an email whenever a User record is created."
Note describing this version, kept in the workflow's version history.
"Initial version"
Response
The created workflow.
ID of the workflow.
"68b1c0d4e7b91d003c45a1f2"
ID of the app the workflow belongs to.
"6820f3a4e7b91d003c45a1f2"
Name of the workflow.
"Email me new signups"
Whether the workflow runs: active, inactive, or archived.
"active"
Name of the workflow's file in the app's code. null on workflows saved before files were kept.
"email-me-new-signups"
What the workflow is for.
"Sends an email whenever a User record is created."
Why Base44 stopped the workflow itself, as a fixed code: consecutive_failures, end_condition_reached, migration_activation_failed, or workflows_not_available. null when you set the status yourself.
"consecutive_failures"
Version the workflow runs today, as the SHA-256 hash of that definition. null until a definition is saved.
"9f2c1a7b3e5d84f60c1b2a9e7d4f8c3b6a5e2d1f0c9b8a7e6d5c4b3a2f1e0d9c"
What starts the workflow. The trigger sits under config, keyed by trigger_type.
Which app surface the workflow was authored against.
When the workflow last started running. null before its first run.
"2026-08-25T09:12:44Z"
How that run ended: success, failed, or cancelled. null before the first run. Note this is a different set of values from a run's own status, which reports completed rather than success.
"success"
Runs that have failed in a row. Resets on the next success.
0
Runs the workflow has started, ever.
48
Runs that finished successfully, ever.
44
Runs that ended in an error, ever.
3
When the workflow was created.
"2026-07-02T11:04:00Z"
When the workflow was last changed.
"2026-08-20T16:31:00Z"
Email of whoever created the workflow.
"you@example.com"
The steps the workflow runs, as a CNCF Serverless Workflow v1.0 document. null when no version has been saved yet. Only this endpoint returns it; the list endpoint does not.