Every nest has limits on its size and its time, so one very large request can't hold up everyone else's. This page lists the ones you can run into and what happens when you do.
Nesting API limits#
A request to the nesting API runs sync (the answer comes back in the same response) or async (it is queued as a job you poll). Each mode has its own limits:
| Limit | Sync | Async | Error when exceeded |
|---|---|---|---|
| Time limit (s) | 10 | 120 | The time limit is above the maximum for this mode. |
| Pieces | 1,000 | 4,000 | Too many pieces (after quantities and panelling). |
| Distinct parts | 500 | 2,000 | Too many distinct parts. |
| Points per outline | 2,000 | 2,000 | An outline has too many points; simplify it. |
| Outline points in total | 200,000 | 200,000 | Too many outline points in total; simplify the outlines. |
| Outline points in the response | 400,000 | 1,000,000 | The response would carry too many outline points; ask for fewer layouts, simpler outlines or include=["transform"] only. |
| Raster grid cells | 50,000,000 | 50,000,000 | The container is too large for the raster grid. |
| Layouts per request | 5 | 5 | Too many layouts requested. |
| Queued or running jobs per team | – | 2 | More async jobs than this at once are refused until one finishes. |
- Pieces count every copy, after quantities, and every panel of a split part.
- Outline points in the response count the outline points of every piece in every layout you ask for, once for each geometry you include. Ask for fewer layouts, simpler outlines, or transforms only to stay under it.
- Raster grid cells: very large sheets or rolls hit this first. Use a smaller container, or send the job async.
A request body can be at most 5 MB of JSON, and any length or coordinate at most 100,000 in.
/a/{team_slug}/nesting/api/v1/limits/
The effective limits (`sync`, `async`), free sync slots in this process and the team's active jobs.
nesting_limits ·
View in API reference
The limits call returns your team's limits and how many background jobs are running, so you can check before you send a large request.
Sync or async#
With mode set to auto (the default), a request runs sync when it fits the sync limits and the server has room for
it, and is queued as an async job otherwise. sync never queues and async always does. Starting nests is rate
limited to 60 requests a minute per user; polling a job isn't.
When a limit is hit#
| Response | When | What to do |
|---|---|---|
| 413 | A request is over a limit of its mode. The body names it: {"detail", "limit", "value", "maximum"}. Size limits are checked before any nesting work starts. |
Reduce the request, or send it async. |
| 429 | The team already has the most async jobs queued or running, a sync request found the server busy, or the rate limit was reached. | Retry when a job finishes, or later. A busy sync request can be resent as async. |
| 422 | No valid layout was found. The body carries the warnings. | Check that the parts fit the container in an allowed rotation. |
Imposition#
| Limit | Value |
|---|---|
| Time limit of a run | 1 to 600 seconds (30 by default) |
| Artworks in an offset run | at most 40 |
| Quantity of an artwork | 1 to 100,000 |
| Max sheets | 0 (no limit) to 500 |
Estimating#
| Limit | Value |
|---|---|
| Time budget of an automatic nest | 1 to 10 seconds (2 by default) |
| Optimize | 10 seconds |
| Parts and dimension lines in an estimate | 2,000 |
| Points in one polygon | 500 |
| Uploaded file | 50 MB |
More on the takeoff limits on Takeoff: tracing parts.