← API reference
Async max jobs
The slower search tier, submitted and then polled.
Async jobs (engine = max)
A max solve takes seconds to a minute, so POST /v1/optimize/2d or /v1/optimize/nest with engine:"max" does not return a result — it returns 202 Accepted with a jobId, and the call is metered at submission. Poll GET /v1/jobs/{id} until status is "succeeded" (result holds the same response a synchronous solve of that mode returns — a 2D plan or a nest; mode tells you which) or "failed" (error holds the message).
Polling spends no quota; you see only your own jobs. Where the tier is not enabled on a deployment, engine:"max" fails closed with 503.
| Field | Type | Description |
|---|---|---|
jobId | string | The 202 body's id. Poll GET /v1/jobs/{id}. |
status | string | queued → running → succeeded | failed. |
mode · engine | string | "2d" (submitted to POST /v1/optimize/2d) or "nest" (submitted to POST /v1/optimize/nest), and always "max". |
pollAfterMs | integer | 202 only — suggested delay before the first poll. |
result | object | Present once succeeded — the same shape as the synchronous response of that mode: a 2D plan, or a nest. |
error | string | Present once failed — the reason. |
quota | object | 202 only — reserved, used and limit: the one call metered at submission, and where the ACCOUNT stands this month. |
createdAt | string | Poll only — when the job was submitted (ISO-8601). |
finishedAt | string | null | Poll only — when the worker finished; null while queued or running. |