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:
/v1 is the canonical path. Each nesting route is also still served unversioned (e.g. /nesting), frozen as the implicit v1 so existing integrations keep working. New code should use /v1; that is what the API Reference documents.

Common request fields

The DXF, geometry, and parametric requests share three top-level fields:

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 /v1/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:

Job status

GET /v1/nesting/status?RequestId=… reports where a job has got to, and the ResultIdentity once one is available:

Exporting

Once complete, generate production output from the nest: See export types for details.

Errors