Back to Mastra

Running Workflows Programmatically

docs/src/course/04-workflows/08-running-workflows-programmatically.md

2025-12-182.0 KB
Original Source

Running Workflows Programmatically

Learn how to execute your workflows from code, which is essential for integrating them into applications.

Creating a Workflow Runner

Create a new file to test programmatic execution:

typescript
// src/run-workflow.ts
import { mastra } from './mastra'

async function runContentWorkflow() {
  console.log('🚀 Running workflow programmatically...\n')

  try {
    // Get the workflow instance
    const workflow = mastra.getWorkflow('contentWorkflow')

    if (!workflow) {
      throw new Error('Workflow not found')
    }

    // Create a run instance
    const run = await workflow.createRun()

    // Execute with test data
    const result = await run.start({
      inputData: {
        content:
          'Climate change is one of the most pressing challenges of our time, requiring immediate action from governments, businesses, and individuals worldwide.',
        type: 'blog',
      },
    })

    if (result.status === 'success') {
      console.log('✅ Success!')
      console.log('📊 Reading time:', result.result.metadata.readingTime, 'minutes')
      console.log('🎯 Difficulty:', result.result.metadata.difficulty)
      console.log('📅 Processed at:', result.result.metadata.processedAt)
    }
  } catch (error) {
    console.error('❌ Error:', (error as Error).message)
  }
}

// Run the workflow
runContentWorkflow()

Running the Code

Execute your workflow runner:

bash
npx tsx src/run-workflow.ts

Key Methods

  • mastra.getWorkflow(id): Gets a registered workflow by ID
  • workflow.createRun(): Creates a new execution instance
  • run.start(inputData): Executes the workflow with provided data

Return Value

The start() method returns:

  • success: Boolean indicating if workflow completed successfully
  • result: The final output from the workflow
  • executionTime: How long the workflow took to run

Your workflow can now be run from anywhere in your application! Next, you'll learn about error handling.