> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encrata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Run Workflow

> Trigger a manual workflow execution with optional input data.

## Authentication

Requires a JWT token or API key in the `Authorization` header.

```bash theme={"dark"}
Authorization: Bearer YOUR_TOKEN
```

## Request

<ParamField path="id" type="string" required>
  The workflow ID to execute.
</ParamField>

<ParamField body="input" type="object">
  Input data passed to the first step of the workflow.
</ParamField>

<ParamField header="Idempotency-Key" type="string">
  Optional. Prevents duplicate runs if the same key is sent again within 24 hours.
</ParamField>

### Example request

<CodeGroup>
  ```bash cURL theme={"dark"}
  curl -X POST "https://encrata.com/api/workflows/wf_abc123/run" \
    -H "Authorization: Bearer YOUR_TOKEN" \
    -H "Idempotency-Key: run-20260601-001" \
    -H "Content-Type: application/json" \
    -d '{ "input": { "email": "jane@company.com" } }'
  ```

  ```python Python theme={"dark"}
  import requests

  resp = requests.post(
      "https://encrata.com/api/workflows/wf_abc123/run",
      headers={
          "Authorization": "Bearer YOUR_TOKEN",
          "Idempotency-Key": "run-20260601-001",
      },
      json={"input": {"email": "jane@company.com"}},
  )
  print(resp.json())
  ```
</CodeGroup>

## Response

Returns the created run object.

```json theme={"dark"}
{
  "id": "run_def456",
  "workflow_id": "wf_abc123",
  "status": "running",
  "input": { "email": "jane@company.com" },
  "started_at": "2026-06-01T10:00:00Z"
}
```

## Rate Limits

Workflow runs are limited to **60 per minute** per user. Exceeding this returns `429 Too Many Requests`.

## Credits

Each enrichment step consumes credits at the standard API rate. Non-enrichment steps (condition, delay, webhook, transform) are free.
