# 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.