Skip to main content
← 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.

FieldTypeDescription
jobIdstringThe 202 body's id. Poll GET /v1/jobs/{id}.
statusstringqueued → running → succeeded | failed.
mode · enginestring"2d" (submitted to POST /v1/optimize/2d) or "nest" (submitted to POST /v1/optimize/nest), and always "max".
pollAfterMsinteger202 only — suggested delay before the first poll.
resultobjectPresent once succeeded — the same shape as the synchronous response of that mode: a 2D plan, or a nest.
errorstringPresent once failed — the reason.
quotaobject202 only — reserved, used and limit: the one call metered at submission, and where the ACCOUNT stands this month.
createdAtstringPoll only — when the job was submitted (ISO-8601).
finishedAtstring | nullPoll only — when the worker finished; null while queued or running.