ARCNM

API reference

Nesting

The Nesting API reads your organization's sheet-nesting potential over the last 90 days and how many job-nest runs this month's allowance has used and left.

The Nesting API reads your organization's sheet-nesting potential over the last 90 days and how many job-nest runs this month's allowance has used and left.

Auto-generated from the public OpenAPI spec — this page never drifts from the running API. Base URL https://api.arcnm.io. Authenticate with the X-API-Key header (see Authentication).

What nesting orders together would save, last 90 days

GET /api/v1/nesting/potential

The organization's sheet quotes in the fixed 90-day window.

Request

curl -X GET https://api.arcnm.io/api/v1/nesting/potential \
  -H "X-API-Key: $ARCNM_API_KEY"
import requests

resp = requests.get(
    "https://api.arcnm.io/api/v1/nesting/potential",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/nesting/potential", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.ARCNM_API_KEY!,
  },
})
const data = await resp.json()

Responses

Status Description
200 Successful Response
422 Validation Error

Errors

Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.

Status Code When
401 invalid_api_key Missing, malformed, or revoked API key.
403 insufficient_scope The key is valid but lacks a scope this endpoint requires.
429 rate_limited Per-key or per-org rate limit exceeded — back off with jitter and retry.

Response body 200

Field Type Description
addon boolean Whether the organization has the Nesting add-on.
combining_basis string
combining_bound string
count integer Sheet quotes in the window the figure reads.
currency string
saving_eur_min number A lower bound on nesting the quotes' leftover copies together on shared sheets, against each part on its own sheet as its quote priced it. Without the Nesting add-on it is floored to steps of 10 EUR, from five quotes on, and 0 below that.
window_days integer
window_end string Last UTC date of the window, inclusive.
window_start string First UTC date of the window, inclusive.

Example response

{
  "addon": true,
  "combining_basis": "compared_with_each_part_alone",
  "combining_bound": "at_least",
  "count": 0,
  "currency": "EUR",
  "saving_eur_min": 0,
  "window_days": 0,
  "window_end": "string",
  "window_start": "string"
}

What nesting a selection together would save

POST /api/v1/nesting/potential

The same figure, limited to the given quotes. Needs the Nesting add-on.

Request body (application/json)

Field Type Required Description
calculation_ids string[] yes Sheet quotes to include. Rows the caller cannot read are absent.

Request

curl -X POST https://api.arcnm.io/api/v1/nesting/potential \
  -H "X-API-Key: $ARCNM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "calculation_ids": [
      "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    ]
  }'
import requests

resp = requests.post(
    "https://api.arcnm.io/api/v1/nesting/potential",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "calculation_ids": [
            "3fa85f64-5717-4562-b3fc-2c963f66afa6"
        ]
    },
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/nesting/potential", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.ARCNM_API_KEY!,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "calculation_ids": [
      "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    ]
  }),
})
const data = await resp.json()

Responses

Status Description
200 Successful Response
422 Validation Error

Errors

Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.

Status Code When
401 invalid_api_key Missing, malformed, or revoked API key.
403 insufficient_scope The key is valid but lacks a scope this endpoint requires.
409 conflict A conflicting change, or an Idempotency-Key reused with a different body.
429 rate_limited Per-key or per-org rate limit exceeded — back off with jitter and retry.

Response body 200

Field Type Description
addon boolean Whether the organization has the Nesting add-on.
combining_basis string
combining_bound string
count integer Sheet quotes in the window the figure reads.
currency string
saving_eur_min number A lower bound on nesting the quotes' leftover copies together on shared sheets, against each part on its own sheet as its quote priced it. Without the Nesting add-on it is floored to steps of 10 EUR, from five quotes on, and 0 below that.
window_days integer
window_end string Last UTC date of the window, inclusive.
window_start string First UTC date of the window, inclusive.

Example response

{
  "addon": true,
  "combining_basis": "compared_with_each_part_alone",
  "combining_bound": "at_least",
  "count": 0,
  "currency": "EUR",
  "saving_eur_min": 0,
  "window_days": 0,
  "window_end": "string",
  "window_start": "string"
}

Nesting runs used and remaining

GET /api/v1/nesting/runs

How many nesting runs this organization has used in the current window, and how many remain.

The count is this organization's own. It is not a price and it carries no layout. Without the Nesting add-on no run is included, and both the allowance and what remains of it are 0.

Request

curl -X GET https://api.arcnm.io/api/v1/nesting/runs \
  -H "X-API-Key: $ARCNM_API_KEY"
import requests

resp = requests.get(
    "https://api.arcnm.io/api/v1/nesting/runs",
    headers={"X-API-Key": "YOUR_API_KEY"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.arcnm.io/api/v1/nesting/runs", {
  method: "GET",
  headers: {
    "X-API-Key": process.env.ARCNM_API_KEY!,
  },
})
const data = await resp.json()

Responses

Status Description
200 Successful Response
422 Validation Error

Errors

Standard error responses — see the Errors catalog for the full envelope, request_id, and retry-safety table.

Status Code When
401 invalid_api_key Missing, malformed, or revoked API key.
403 insufficient_scope The key is valid but lacks a scope this endpoint requires.
429 rate_limited Per-key or per-org rate limit exceeded — back off with jitter and retry.

Response body 200

Field Type Description
runs_left integer Nesting runs still available in the current window. 0 without the Nesting add-on.
runs_per_month integer Nesting runs included in the current window. 0 without the Nesting add-on: no run starts without it.
runs_reset_on string UTC date the next window starts and the runs are available again. Windows are monthly, also on an annual plan.
runs_used integer Nesting runs already used in the current window.

Example response

{
  "runs_left": 0,
  "runs_per_month": 0,
  "runs_reset_on": "string",
  "runs_used": 0
}