Skip to main content
Nesting is asynchronous. You submit a request, get a RequestId back immediately, and receive the finished layout later — either pushed to your webhook or streamed over SignalR. This page explains the full lifecycle and the two ways to receive results.

The lifecycle

1

Submit

POST to a nesting endpoint with your parts, sheets, settings, and a ResultsWebhookUri. The API validates the request and returns a RequestId.
2

Nest

The job is queued and processed by a nester. Compute time scales with part count and complexity — from seconds to minutes.
3

Deliver

On completion the ApiNestingResult is delivered to your webhook (and/or streamed over SignalR). You can also poll for it with the RequestId.

Choosing an endpoint

All nesting endpoints share the same async model; they differ in how you describe the parts:
EndpointInputUse when
POST /nestingBase64-encoded DXF filesYou have DXF geometry
POST /nesting/geometryEncoded geometry (from the importer or SimpleGeometry)You already have geometry, not files
POST /nesting/parametricParametric part definitionsParts are defined by parameters
POST /nesting/mynestingMyNesting XMLYou have a MyNesting document
POST /nesting/quotenestingDXF, quote modeYou need a fast quote, not production output
POST /nesting/geometryquotenestingGeometry, quote modeQuoting from geometry
POST /nesting/1D1D / linear stockCutting bar, tube, or profile
Every route is also exposed additively under /v1 (e.g. /v1/nesting). The /v1 path is the documented, canonical one; the unversioned path is kept and frozen as the implicit v1 for existing callers. See the reference for the request body of each.

Common request fields

The DXF, geometry, and parametric requests share three top-level fields:
FieldTypeNotes
RequestobjectThe payload: parts, sheets, and settings. Shape depends on the endpoint.
ResultsWebhookUriURIWhere the result is POSTed on completion.
AutomaticallyStartNestingbooleantrue (default): start immediately. false: wait for a delayed start (see below).

Receiving results — two options

Option A: Webhook (simplest)

Set AutomaticallyStartNesting: true and provide ResultsWebhookUri. When the nest finishes, NestAPI POSTs the ApiNestingResult to that URL. This is the recommended default for server-to-server integrations. See Webhooks.

Option B: SignalR + delayed start (live progress)

To show live progress, connect before the nest runs:
1

Submit with start disabled

Send your request with AutomaticallyStartNesting: false. You receive a RequestId, but nesting does not begin yet.
2

Connect to SignalR

Open a SignalR connection and subscribe using the RequestId, so no progress events are missed.
3

Start the nest

Call POST /nesting/delayedstart (ReadyForNesting) with the RequestId. The nester begins and streams progress over your SignalR connection.
Delayed start exists to close the race where a fast nest could complete before your client finished connecting. Use it whenever you rely on live progress.

Fetching results and status

Even with webhooks you can query a job by RequestId:
EndpointReturns
POST /nesting/result/The ApiNestingResult for a completed job
GET /nesting/render/A rendered image of the nest
GET /nesting/successesRecently successful nests
GET /nesting/failuresRecently failed nests

Exporting

Once complete, generate production output from the nest:
EndpointOutput
GET /nesting/exportStandard nest export (DXF + reports)
GET /nesting/exportquotenestExport for a quote nest
See export types for details.

Errors

StatusMeaning
400Invalid request — check file encoding and required fields.
401API key missing or invalid.
200Request accepted; RequestId returned for tracking.