start()
Start/enqueue a new workflow run.
import { start } from 'workflow/api';
import { myWorkflow } from './workflows/my-workflow';
const run = await start(myWorkflow); API Signature
Parameters
This function has multiple signatures.
Signature 1
| Name | Type | Description |
|---|---|---|
workflow | WorkflowFunction<TArgs, TResult> | WorkflowMetadata | The imported workflow function to start. |
args | TArgs | The arguments to pass to the workflow (optional). |
options | StartOptions | The options for the workflow run (optional). |
Signature 2
| Name | Type | Description |
|---|---|---|
workflow | WorkflowMetadata | WorkflowFunction<[], TResult> | |
options | StartOptions |
StartOptions
| Name | Type | Description |
|---|---|---|
deploymentId | string | The deployment ID to use for the workflow run. **Deprecated**: This property should not be set in user code under normal circumstances. It is automatically inferred from environment variables when deploying to Vercel. Only set this if you are doing something advanced and know what you are doing. |
Returns
Returns a Run object:
| Name | Type | Description |
|---|---|---|
runId | string | The ID of the workflow run. |
cancel | () => Promise<void> | Cancels the workflow run. |
status | Promise<"pending" | "running" | "completed" | "failed" | "paused" | "cancelled"> | The status of the workflow run. |
returnValue | Promise<TResult> | The return value of the workflow run. Polls the workflow return value until it is completed. |
workflowName | Promise<string> | The name of the workflow. |
createdAt | Promise<Date> | The timestamp when the workflow run was created. |
startedAt | Promise<Date | undefined> | The timestamp when the workflow run started execution. Returns undefined if the workflow has not started yet. |
completedAt | Promise<Date | undefined> | The timestamp when the workflow run completed. Returns undefined if the workflow has not completed yet. |
readable | ReadableStream<any> | The readable stream of the workflow run. |
getReadable | <R = any>(options?: WorkflowReadableStreamOptions | undefined) => ReadableStream<R> | Retrieves the workflow run's default readable stream, which reads chunks written to the corresponding writable stream getWritable . |
Learn more about WorkflowReadableStreamOptions.
Good to Know
- The
start()function is used in runtime/non-workflow contexts to programmatically trigger workflow executions. - This is different from calling workflow functions directly, which is the typical pattern in Next.js applications.
- The function returns immediately after enqueuing the workflow - it doesn't wait for the workflow to complete.
- All arguments must be serializable.
Examples
With Arguments
import { start } from 'workflow/api';
import { userSignupWorkflow } from './workflows/user-signup';
const run = await start(userSignupWorkflow, ['user@example.com']); With StartOptions
import { start } from 'workflow/api';
import { myWorkflow } from './workflows/my-workflow';
const run = await start(myWorkflow, ['arg1', 'arg2'], {
deploymentId: 'custom-deployment-id'
});