Skip to content
Developers

Send cutting jobs from your own systems.

One endpoint puts a job — DXF parts, material and quantity — in the same job list your Zorocut Nest reads, and webhooks tell your system when it is cut. Use it from a web shop, an ERP, a quoting form or a script. There is no commission and no separate plan for the API beyond the one your account is on.

Preview. The public API is being rebuilt for cutting jobs. The endpoints below describe the planned version and are not live yet. Write to [email protected] to be told when they are.

Get a key

Open your account, confirm it is you, then create a key under API & webhooks. The key is shown once. Send it as a bearer token on every request; anything else gets 401.

Create a job

Send each part as a DXF file (a base64 data URL) with the quantity you need, and the material and thickness the job is cut from. Zorocut Nest reads the geometry straight from the DXF, so send it at 1:1 scale, in millimetres, with closed contours.

curl -X POST https://api.zorocut.com/v1/jobs \
  -H "authorization: Bearer zc_live_…" \
  -H "content-type: application/json" \
  -d '{
    "customer": "Ana Popescu",
    "reference": "WC-1042",
    "dueAt": "2026-09-22T10:00:00Z",
    "rush": false,
    "source": "woocommerce",
    "material": { "name": "S235 mild steel", "thicknessMm": 3 },
    "parts": [
      { "name": "bracket.dxf", "dxf": "data:application/dxf;base64,MAo…", "quantity": 20 }
    ]
  }'

parts — up to 200, each with name, dxf (a base64 data URL of the DXF file) and quantity. material — its name and thicknessMm. Everything else is optional: title, customer, reference (your own order number, kept in the notes), notes, dueAt, rush and sheet (the sheet format). The whole request may be up to 64 MB.

A deadline is worth sending: Zorocut Nest builds its next nest from the most urgent jobs in the same material and thickness, so dueAt is what lets it combine yours well.

Read and cancel

GET  https://api.zorocut.com/v1/jobs?status=queued&limit=25
GET  https://api.zorocut.com/v1/jobs/<id>
POST https://api.zorocut.com/v1/jobs/<id>/cancel     # only while it is still queued

A job is queued until Zorocut Nest takes it, then cutting, then done. The DXF files are never sent back.

Webhooks

Add an https endpoint in your account and we POST to it on job.created, job.cutting, job.done and job.canceled. Verify the signature before trusting the body.

// Node — the header is: t=<unix seconds>,v1=<hex hmac-sha256 of "<t>.<raw body>">
import { createHmac, timingSafeEqual } from "node:crypto";

function verify(secret, rawBody, header) {
  const p = Object.fromEntries(header.split(",").map((x) => x.split("=", 2)));
  if (Math.abs(Math.floor(Date.now() / 1000) - Number(p.t)) > 300) return false;  // replayed
  const want = Buffer.from(createHmac("sha256", secret).update(p.t + "." + rawBody).digest("hex"));
  const got = Buffer.from(String(p.v1 ?? ""));
  return want.length === got.length && timingSafeEqual(want, got);
}

Verify against the raw request body, before any JSON parsing. Delivery is one attempt with a five second timeout; failures are shown on your account page. If you need certainty, poll GET /v1/jobs as well.

Limits and errors

120 requests a minute per key. Errors are JSON with a stable code: unauthorized (401), validation (400), not_found (404), already_taken (409), too_large (413), rate_limited (429). Revoking a key takes effect immediately.

Building a plugin or an integration? Tell us what you need at [email protected] — we would rather fix the API than have you work around it.