Skip to main content
POST
Create workflow

Authorizations

api_key
string
header
required

Personal API key.

Path Parameters

app_id
string
required

ID of the app whose workflows you want to work with.

Body

application/json
name
string
required

Name for the workflow. Must be unique among the app's workflows that are not archived.

Example:

"Email me new signups"

definition
Definition · object
required

The steps to run, as a CNCF Serverless Workflow v1.0 document. Check it with Validate a workflow definition first.

Example:
trigger
Trigger · object
required

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.

Example:
description
string | null

What the workflow is for, in your own words.

Example:

"Sends an email whenever a User record is created."

change_summary
string | null

Note describing this version, kept in the workflow's version history.

Example:

"Initial version"

Response

The created workflow.

id
string
required

ID of the workflow.

Example:

"68b1c0d4e7b91d003c45a1f2"

app_id
string
required

ID of the app the workflow belongs to.

Example:

"6820f3a4e7b91d003c45a1f2"

name
string
required

Name of the workflow.

Example:

"Email me new signups"

status
string
required

Whether the workflow runs: active, inactive, or archived.

Example:

"active"

file_key
string | null

Name of the workflow's file in the app's code. null on workflows saved before files were kept.

Example:

"email-me-new-signups"

description
string | null

What the workflow is for.

Example:

"Sends an email whenever a User record is created."

status_reason
string | null

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.

Example:

"consecutive_failures"

current_version_id
string | null

Version the workflow runs today, as the SHA-256 hash of that definition. null until a definition is saved.

Example:

"9f2c1a7b3e5d84f60c1b2a9e7d4f8c3b6a5e2d1f0c9b8a7e6d5c4b3a2f1e0d9c"

trigger
Trigger · object

What starts the workflow. The trigger sits under config, keyed by trigger_type.

Example:
app_type_context
App Type Context · object | null

Which app surface the workflow was authored against.

Example:
last_run_at
string<date-time> | null

When the workflow last started running. null before its first run.

Example:

"2026-08-25T09:12:44Z"

last_run_status
string | null

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.

Example:

"success"

consecutive_failures
integer
default:0

Runs that have failed in a row. Resets on the next success.

Example:

0

total_runs
integer
default:0

Runs the workflow has started, ever.

Example:

48

successful_runs
integer
default:0

Runs that finished successfully, ever.

Example:

44

failed_runs
integer
default:0

Runs that ended in an error, ever.

Example:

3

created_date
string<date-time> | null

When the workflow was created.

Example:

"2026-07-02T11:04:00Z"

updated_date
string<date-time> | null

When the workflow was last changed.

Example:

"2026-08-20T16:31:00Z"

created_by
string | null

Email of whoever created the workflow.

Example:

"you@example.com"

definition
Definition · object | null

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.

Example: