Your account must be approved and your API key must be active before you can call this endpoint. See Authentication for key setup and capability details.
Endpoint
Authentication
Requires a key with capabilityworkflow:run (any of your workflows) OR workflow:<slug>:run (the specific slug only — useful for least-privilege CI keys). Pass your API key in the x-api-key header.
Rate limits
Limits depend on your tier (independent of capabilities):| Tier | Limit |
|---|---|
| Pro | 100 req/min |
| Business | 1,000 req/min |
| Enterprise | unlimited |
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the current window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix epoch second when the window resets |
429 response, an additional Retry-After header tells you how many seconds to wait before retrying.
Path parameters
The workflow’s URL slug — the identifier that appears in the editor URL when you open the workflow (for example,
my-thumbnail-pipeline). Slugs are lowercase letters, digits, and hyphens. A workflow’s slug never changes after it is created.Request body
Key/value pairs matching the workflow’s Request Input fields. The accepted keys and value types depend on how the workflow author configured the Request Input node. Use
GET /api/workflows/:slug/schema to discover the exact field names and types before scripting calls.Response (sync — 200)
A200 response means the workflow ran to completion and all output nodes produced results.
Always
true on a 200 response.The workflow’s output. The exact shape depends on the Response Output node type configured in the workflow. Common shapes include:
Credits consumed by this run. The amount reflects your tier’s pricing and any markup applied. A value of
0 means the run consumed a trial grant rather than deducting from your credit balance.Total execution time in milliseconds, measured from the moment the server received the request to the moment all nodes completed.
Async opt-in (?async=true)
For long-running pipelines you can append ?async=true to submit the workflow without blocking. The response returns in under 500ms with an executionId; poll GET /api/executions/:id or receive a webhook callback when the run completes.
400 ASYNC_NOT_SUPPORTED. See Async executions for the full lifecycle.
Errors
| Status | Code | Meaning |
|---|---|---|
400 | INVALID_INPUTS | The inputs field is missing, not an object, or contains values that fail validation. |
400 | ASYNC_NOT_SUPPORTED | ?async=true on a provider that doesn’t support polling. Use sync mode. |
402 | INSUFFICIENT_CREDITS | Your account does not have enough credits to run the workflow. |
402 | grant_exhausted | Your trial grant for a model in this workflow has been used up. Upgrade your plan to continue. |
403 | CAPABILITY_DENIED | Your key lacks workflow:run (or the per-slug workflow:<slug>:run). Response includes required. |
403 | MODEL_TIER_REQUIRED | The workflow contains a model that requires a higher plan tier than your account holds. |
404 | — | No workflow exists with the provided slug, or it does not belong to your account. |
429 | RATE_LIMIT_EXCEEDED | You have exceeded the per-minute limit for your tier. Check the Retry-After header. |
500 | EXECUTION_FAILED | A provider call inside the pipeline failed. The error field describes the cause. |