---
title: "Manually start a workflow run"
method: POST
path: "/v1/workflows/{workflowId}/executions"
tags: ["Workflows"]
---

# Manually start a workflow run

`POST /v1/workflows/{workflowId}/executions`

Kick off a run without waiting for an inbound message (useful for testing). Target an existing conversation by `conversationId`, or — WhatsApp only — a phone number via `to` (a conversation is found or created). `text` seeds the run's `lastMessage` variable. The graph must be runnable.

## Path parameters

- `workflowId` string, required

## Request body

- object — Provide either `to` (WhatsApp phone) or `conversationId`.
  - `to` string — Recipient phone (WhatsApp only)
  - `conversationId` string — An existing conversation to run in (required for non-WhatsApp workflows)
  - `text` string — Simulated inbound text, seeded as the run's lastMessage variable

## Response `200`

Run started

- object
  - `success` boolean
  - `execution` object, nullable
    - `id` string
    - `status` string
    - `currentNodeId` string
    - `waitingFor` object, nullable
    - `variables` object
    - `conversationId` string

## Other responses

- `400` — Missing target, invalid graph, or `to` used on a non-WhatsApp workflow
- `401` — Unauthorized
- `404` — Resource not found

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
