Skip to main content
← CutOptim Engine API

API reference

Base URL https://api.cutoptim.com · contract version v1

Create a key on your dashboard, then send it as Authorization: Bearer <key>.

▶ Try the API live — no sign-upUses a public demo key — rate-limited, small jobs only, never billed.

Integrations

Configurator API reference →Merchant API of the CutOptim Configurator: embed calls, quote verification on your server, signed order webhooks, the order.v1 document and errors.

Endpoints

MethodPathDescription
POST/v1/optimize/2d2D panel optimization
POST/v1/optimize/1d1D / linear optimization (bars, profiles, tube)
POST/v1/optimize/woodtimber optimization — 1D with cross-section matching
POST/v1/optimize/nesttrue-shape nesting — irregular polygons on fixed sheets, with exclusion zones (laser / plasma / waterjet)
POST/v1/validate/2dvalidate a request without solving — free, no key, no quota (2d / 1d / wood / nest)
POST/v1/validate/1dvalidate a request without solving — free, no key, no quota (2d / 1d / wood / nest)
POST/v1/validate/woodvalidate a request without solving — free, no key, no quota (2d / 1d / wood / nest)
POST/v1/validate/nestvalidate a request without solving — free, no key, no quota (2d / 1d / wood / nest)
GET/v1/jobs/{id}poll an async max-engine job — returns its status and, once finished, the plan (no quota; your own jobs only)
POST/v1/import/nestread part outlines out of an SVG or DXF file — needs a key, spends no quota
GET/v1/usagethe ACCOUNT's current-month usage and quota (all keys share one)
GET/v1/healthliveness — no key, no rate limit, no database

POST /v1/validate/{2d,1d,wood,nest} — response

The request is well-formed. No solve ran and no quota was spent.

FieldTypeDescription
validbooleanAlways true on a 200 — a malformed request is a 400 with the exact bad field path (details.path) instead. The body is the SAME one the matching optimize endpoint takes.
mode"2d" | "1d" | "wood" | "nest"The endpoint you called.
contractVersionstringShape version. Currently "1".
engineEnabledbooleanNest only — whether the nesting engine is built into this deployment. Absent for the rectangular modes.
parts{ rows, total }Part rows sent, and the total quantity after qty expansion. Check it against the part cap before you spend a call.
parts.rowsintegerNumber of part rows sent.
parts.totalintegerTotal quantity across all part rows (Σ qty).
stock{ rows, total }The same for stock.
stock.rowsintegerNumber of stock rows sent.
stock.totalintegerTotal quantity across all stock rows (Σ qty).
warningsstring[]Approximate, solve-free feasibility notes — e.g. a part that fits no stock (2D and nest: by bounding box; wood: no matching section long enough). Empty ⇒ every part fits some stock. Ignores trim/kerf/material (a shape check, not a solve).

OpenAPI specification

A machine-readable OpenAPI 3.1 document describes all twelve endpoints, every request body, every response shape and every error. Point your client generator at it instead of transcribing this page. The document itself is English only: it is made of contract tokens, and OpenAPI has no localization mechanism.

curl -s https://cutoptim.com/engine/openapi.json > cutoptim-engine.json

Open the OpenAPI 3.1 document →

Downloadable resource
Engine API one-pager

A two-page summary of the Engine API — the four modes (2D, 1D, wood and true-shape nest), a request and response, determinism and pricing. Print-ready, with a QR back to the docs.

PDF2 pagesFree
Download the PDF