Errors and limits#
A refused request answers an HTTP status and {"code", "message",
"detail"}; match on code. The format is in the
API Reference overview.
Workflows and executions#
| Code | Status | Meaning |
|---|---|---|
INVALID_FLOW |
400 | The specification is invalid, or an execution's inputs or event are (a required input missing, an event over 128 KiB). POST /flow-checks lists every finding of a specification. |
FLOW_NOT_FOUND, FLOW_VERSION_NOT_FOUND, FLOW_EXECUTION_NOT_FOUND |
404 | — |
FLOW_ALREADY_EXISTS |
409 | — |
FLOW_CONFLICT |
409 | Not possible in the execution's or box's present state; the message says why. |
FLOW_BUSY |
429 | The workflow runs as many executions as its concurrency.max, and drops what comes then. |
Addresses#
What a call to an HTTP trigger's address may be answered:
| Code | Status | Meaning |
|---|---|---|
HOOK_UNAUTHORIZED |
401 | The call does not prove it may as the trigger's auth says: no secret, an old one, the wrong header, a signature of other bytes. |
HOOK_OWNER_GONE |
403 | Whoever made the address no longer reaches the workspace. Someone who does makes a new secret. |
HOOK_OWNER_NOT_ALLOWED |
403 | Whoever made the address may no longer start the workflow (flows:trigger). |
HOOK_NOT_FOUND |
404 | No such address: removed, or mistyped. |
HOOK_FLOW_GONE |
404 | The workflow is not there any more (deleted). |
HOOK_CLUSTER_UNREACHABLE |
503 | The workflow's cluster did not answer; try again shortly. |
HOOK_TRIGGER_GONE |
404 | The workflow's current version has no HTTP trigger of that id. |
HOOK_METHOD |
400 | A GET, and the trigger does not allow_get. |
HOOK_BODY_TOO_LARGE |
400 | The body is over 128 KiB. |
HOOK_BODY |
400 | The body says it is JSON and is not. |
HOOK_RATE_LIMITED |
429 | More calls in the last minute than the trigger's per_minute. |
WORKFLOW_FAILED |
502 | A sync call's execution failed or was cancelled; the body names it. |
INVALID_FLOW, FLOW_BUSY, … |
400, 404, 409, 429 | The workflow refused to start, as above. Anything else from its cluster answers 503. |
Making an address: FLOW_TRIGGER_NOT_FOUND (404) when the workflow's
current version has no HTTP trigger of that id.
Limits#
| Limit | Value |
|---|---|
| Workflow name | [a-z][a-z0-9_-]*, 40 characters |
| Boxes | 64 per workflow; an id 40 characters |
| Sub-workflows | 3 levels deep |
| Retries | 2 by default, at most 10; back-off at most a day |
| Repeats | 20 |
| A box's time limit | 1 s to 30 days; by default 360 s for model and classify, 60 s for function, none for the rest |
| An execution's time limit | 60 s to 30 days; none by default |
| Waking a deployment at zero | up to 5 minutes, asked every 5 s |
| A light box's outputs | 16 KiB together; a model's text cut at 16 KiB, its JSON at most 8 KiB; a function's result cut at 8 KiB |
| A run's outputs | 64 pairs, 4 KiB together |
| Images per model or classify box | 8 |
max_tokens |
1 to 32 768 |
| Classify labels | 2 to 20; min_confidence 0.6 by default |
| Condition cases | 1 to 20 |
| A notice | title 300 characters, message 2 000 |
| Approval wait | a day by default; 60 s to 7 days |
| Sleep | 1 s to 7 days |
| Inputs | a name 64 characters; a value or a default 64 KiB |
| Event | 128 KiB |
Event sent to a wait_event box |
4 KiB |
| Expressions and templates | 16 KiB each |
| Triggers | 10 per workflow |
| HTTP trigger | a body 128 KiB; 60 calls a minute by default, at most 600; repeats remembered 60 s by default, at most a day; sync waits 60 s by default, at most 90 |
| An address's calls | kept 30 days; the last 100 listed |
| Schedule | every 5 to 1 440 minutes, or at HH:MM; a missed time fired up to 1 hour late |
| Executions at once | concurrency.max 1 to 100; no limit by default |
Starting with wait_seconds |
at most 90 s |
GET …/flow-executions/{name}?wait= |
at most 30 s |