Sari la conținutul principal
PENTRU DEZVOLTATORI

CutOptim Engine API

Un API de optimizare a tăierii: trimiți piesele și materialul — plăci 2D, bare 1D, lemn sau nesting true-shape pentru piese neregulate — și primești înapoi layoutul, planul de tăiere și utilizarea materialului. Implicit, aceeași cerere returnează întotdeauna același plan.

Vezi benchmarkul complet → · Măsurat, nu pretins

POST /v1/optimize/nest
{
  "parts": [
    { "name": "bracket", "polygon": […], "qty": 12, … },
    { "name": "gusset", "polygon": […], "qty": 14, … },
    { "name": "plate", "polygon": […], "holes": […], "qty": 12, … },
    { "name": "flange", "source": { … }, "qty": 10, … }
  ],
  "stock": [{ "w": 2500, "h": 1250, "exclusions": […], … }],
  "options": { "minSeparation": 5, "edgeClearance": 10 }
}
200 sheets[0] · 2500 × 1250
1 sheetCount48/48 placed0.5632 density110 pierces
Un apel real la POST /v1/optimize/nest: cererea și foaia primită, desenată din coordonatele din răspuns.

De ce să construiești pe el

DETERMINIST

Aceeași intrare returnează întotdeauna același rezultat — fără aleatoriu, fără ceas în algoritm. Poți pune rezultatele în cache și le poți compara în teste. Singura excepție opțională, căutarea max pentru nesting, limitată în timp, o spune ea însăși în fiecare răspuns (deterministic: false).

UN PLAN DE TĂIERE REAL

Nu doar dreptunghiuri: secvența de tăiere ghilotină, linii de tăiere față de treceri de ferăstrău, lungimea tăiată și un indicator care îți spune dacă poate fi produs pe un ferăstrău pentru panouri.

PENTRU FERĂSTRAIE DE PANOURI

Kerf, tolerance, tăiere de margine pe fiecare latură, mod cost, direcția fibrei și potrivirea fibrei, număr maxim de etape de tăiere, minimizarea rotirii — aceleași opțiuni pe care le oferă și aplicația.

Îl construiești sau îl apelezi

Un optimizator de tăiere pare un proiect de weekend și se transformă într-un șir lung de cazuri speciale: aritmetica kerf-ului și a tăierii de margine, materialul care se termină, regulile de rotire și de fibră, aranjamente care trebuie să fie tăiabile de la o margine la alta, poligoane cu holes — și o suită de regresie care demonstrează că o modificare nu înrăutățește niciodată un plan. Engine API este exact această muncă, deja făcută și măsurată.

CE EVIȚI

Scrierea și validarea a patru optimizatoare — panouri ghilotină 2D, material liniar 1D, lemn pe secțiune și nesting true-shape — și menținerea lor corecte pe măsură ce cerințele tale cresc. Echipa ta integrează un singur contract HTTP în loc de toate acestea.

CE POȚI VERIFICA

Calitatea planurilor este publicată, nu doar afirmată: benchmarkul deschis rulează motorul pe seturi de instanțe academice publice și pe lucrări generate, cu metoda și rezultatele brute disponibile pentru descărcare. Rulează aceleași instanțe și pe orice altă soluție pe care o iei în considerare.

CE ÎȚI TREBUIE CA SĂ ÎNCEPI

Un preț afișat pe pagină, o perioadă de probă de 14 zile și o cheie din dashboardul tău — fără apel de vânzări și fără negociere de licență înainte de a putea testa. Endpointurile validate nu cer deloc o cheie.

CE RĂMÂNE AL TĂU

Modelul tău de date, interfața ta și regulile tale de preț. Apelurile sincrone nu stochează nimic; o lucrare max asincronă își păstrează rezultatul doar pentru o fereastră scurtă de reținere, cât să-l poți interoga. Un obiect meta atașat oricărei piese sau plăci revine identic, așa că planul se reconciliază cu evidențele tale.

Vezi benchmarkul complet →

Aveți nevoie de un ecran de comandă gata făcut în loc să-l construiți?

CutOptim Configurator rulează pe acest motor →Conectați magazinul sau ERP-ul propriu →

Prețuri

Studio
€49/lună
3,000 cereri / lună — plafon strict, fără depășiri, fără facturi surpriză
Perioadă de probă de 14 zile · facturare în EUR · odată atins plafonul, apelurile returnează 402 până la începutul lunii următoare
Scale
€149/lună
10,000 cereri / lună — plafon strict, fără depășiri, fără facturi surpriză
Fără perioadă de probă · facturare în EUR · schimbi planul din panou

Fiecare cerere contează la fel — nesting inclus · Vă trimitem un e-mail la 90% din cotă și când aceasta se epuizează.

Încercați gratuit: o cheie demo publică în documentația API și chei de test cu 1,000 cereri pe lună, care nu se facturează niciodată

Volume mai mari. Cele 10,000 cereri pe lună sunt planul standard, nu un plafon al a ceea ce putem rula. Dacă ai nevoie de mai mult — volum mai mare, chei separate pentru staging și producție sau o înțelegere dedicată — spune-ne cifrele tale și îl tarifăm individual. Spune-ne volumul tău →

Prin abonare accepți: Engine API Service Terms (în engleză).

Planurile obișnuite CutOptim (Gratuit / Pro / Atelier) nu au legătură cu API-ul — optimizatorul din aplicație rămâne inclus în ele. Vezi prețurile aplicației →

Ce intră, ce iese

O lucrare reală pentru fiecare mod: sus corpul cererii, dedesubt planul primit, desenat direct din răspuns.

IntrăPOST /v1/optimize/2d
{
  "parts": [
    { "name": "Side", "w": 720, "h": 560, "qty": 6 },
    { "name": "Bottom", "w": 764, "h": 560, "qty": 3 },
    { "name": "Top", "w": 764, "h": 560, "qty": 3 },
    { "name": "Shelf", "w": 762, "h": 520, "qty": 3 },
    { "name": "Rail", "w": 764, "h": 100, "qty": 6 },
    { "name": "Plinth", "w": 764, "h": 120, "qty": 6 },
    { "name": "Door", "w": 397, "h": 716, "qty": 6, "rotatable": false },
    { "name": "Drawer front", "w": 796, "h": 176, "qty": 3 }
  ],
  "stock": [
    { "w": 2800, "h": 2070, "qty": 5, "price": 38.5 }
  ],
  "options": { "kerf": 4, "trim": { "left": 10, "right": 10, "top": 10, "bottom": 10 } }
}
Folosește o cheie demo publică — limitată, doar lucrări mici, nu se facturează niciodată.
Iese200 · sheets[].parts
Plăci
2
sheetCount
Randament
80,31 %
yieldPct
Piese plasate
36 / 36
placed
Linii de tăiere
39
cutLines
Cost material
77
totalPrice

Un șir de corpuri de bază din PAL standard. Ușile își păstrează fibra (rotatable: false); toate celelalte piese se pot roti.

Vrei imaginea direct de la API? La 2D și nesting adaugă "svg" în include și răspunsul conține desenul.

Fiecare desen este făcut din coordonatele din răspuns — nimic nu este așezat de mână. Cele patru lucrări sunt rezolvate de același motor care rulează în spatele API-ului, iar testele noastre le rezolvă din nou ca cifrele să rămână adevărate.

Ce face API-ul

Patru moduri de tăiere

Câte un apel pentru panouri 2D, material liniar 1D, lemn cu potrivire de secțiune și nesting true-shape al poligoanelor neregulate — POST /v1/optimize/2d, /1d, /wood și /nest.

Nesting true-shape

POST /v1/optimize/nest împachetează poligoane arbitrare (cu holes) pe plăci fixe, întrepătrunzând piesele în buzunarele concave ale celorlalte — 6 sheets acolo unde aceleași piese după bounding box au nevoie de 9. Pentru laser, plasmă și jet de apă. Zonele de excludere per placă (un defect, o clemă) vin la pachet.

Conștient de material

Etichetează piesele și stocul cu un material, iar optimizatorul împarte lucrarea: fiecare material este tăiat doar din propriul stoc. Pe fiecare mod; se întoarce un rezumat pe material.

Aplicare cant

Denumește un tip de cant per muchie (2D), iar răspunsul totalizează metrii liniari pe tip — pe piesă și pe comandă. Metadate: nu mută niciodată o piesă.

Potrivirea fibrei

Numește piesele al căror desen trebuie să continue — un front de sertar deasupra a două uși — într-un set (matchedSets, 2D), iar ele sunt tăiate una lângă alta dintr-o singură bucată de placă, la un kerf distanță. Fiecare membru revine cu setul și poziția lui, iar exporturile CSV, SVG și DXF le marchează și ele.

Export inline (SVG · DXF · CSV)

Cere include:["svg","csv","dxf"], iar răspunsul poartă layoutul ca fișier gata făcut, inline — un desen SVG 2D de sine stătător, un DXF R12/AC1009 sau o listă de tăiere CSV. Fără stocare, fără un al doilea apel.

Transmiterea metadatelor

Atașează un obiect meta — numărul de articol din ERP-ul tău, id-ul liniei de comandă, referința clientului — oricărei piese sau oricărui rând de material, iar el revine identic pe fiecare piesă plasată și pe fiecare placă/bară, astfel încât planul să se reconcilieze cu sistemul tău.

Validare gratuită

POST /v1/validate/{2d,1d,wood} validează schema aceluiași corp fără să-l rezolve — fără cheie, fără cotă. Verifică dacă un payload nu va fi respins și primește avertismente de fezabilitate înainte de a consuma un apel.

Cost sau deșeu

minimizeCost ordonează după factura totală cea mai mică între dimensiunile de stoc cu preț, amestecând formatele; implicit se minimizează materialul. Ambele rulează același algoritm guillotine.

Prioritate de stoc și stoc limitat

Marchează stocul care se consumă primul, tratează cantitățile ca plafon strict cu respectStock și marchează piesele obligatoriu de tăiat, care câștigă spațiul pe placă atunci când materialul este insuficient.

Un plan de tăiere real

Nu doar dreptunghiuri: secvența de tăiere guillotine cu pozițiile opritorului pe fiecare pas, linii de tăiere față de treceri de ferăstrău, lungimea tăiată și un indicator de fabricabilitate pe ferăstrău pentru panouri.

Parametri de ferăstrău pentru panouri

kerf, tăiere de margine pe fiecare latură, toleranță, direcția fibrei, seturi potrivite (matched sets), maxCutStages și minimizarea rotirii — aceleași opțiuni pe care le oferă aplicația.

Determinist & OpenAPI

Aceeași intrare returnează întotdeauna același rezultat — pune-l în cache și compară-l (căutarea opțională max pentru nesting, limitată în timp, raportează deterministic: false). O versiune de motor fixabilă și un document OpenAPI 3.1 descriu întregul contract.

Piese din fișiere CAD

Trimite un SVG sau un DXF în loc de coordonate: parts[].source citește conturul și găurile din desen, iar POST /v1/import/nest împarte întâi un fișier cu mai multe piese. Nimic nu se stochează — fișierul este prelucrat în memorie și dispare odată cu răspunsul.

Server MCP pentru asistenți AI

Claude Code, Cursor, VS Code și Claude Desktop apelează motorul ca unelte prin https://api.cutoptim.com/mcp, cu aceeași cheie API și aceeași cotă ca REST. Rulează și local, ca pachetul npm @cutoptim/mcp.

Ghidul MCP →EN

Două viteze: ofertă acum, material economisit mai târziu

Majoritatea integrărilor au nevoie de amândouă — un răspuns cât timp așteaptă clientul, și un plan mai strâns când lucrarea ajunge la mașină. Alegi per apel.

INSTANT

Motoarele sincrone — heuristic pentru 2D, 1D și lemn, lbf pentru nesting — răspund în interiorul cererii HTTP, determinist, așa că planul din spatele unei oferte este planul din spatele comenzii.

MAX

Trimite lucrarea cu engine: "max" și interoghează GET /v1/jobs/{id} pentru rezultat. La panouri 2D caută spre optimul demonstrat; la nesting true-shape cheltuiește un buget de timp (options.timeBudgetMs) căutând mai puține plăci și nu returnează niciodată mai multe decât răspunsul instant.

Răspunsul are aceeași structură în ambele cazuri. La 2D, motorul max acceptă un set mai restrâns de opțiuni decât heuristic (documentația le listează), iar o lucrare de nesting cu zone de excludere este deservită tot de lbf.

Care motor deservește care mod

Endpointul către care faci POST alege modul; parametrul engine alege algoritmul. Motorul implicit heuristic deservește 2D, 1D și lemnul; balanced este doar 2D; motorul asincron max deservește panourile 2D și nestingul true-shape; iar implicit pentru nesting este propriul motor lbf. Același motor ca în aplicație, prin HTTP.

Mod · endpointMotor · algoritmPanouri 2D/v1/optimize/2dLiniar 1D/v1/optimize/1dLemn · secțiune transversală/v1/optimize/woodNesting true-shape/v1/optimize/nestheuristicimplicit · sincronbalancedopțional · doar 2Dmaxasincron · 2D + nestlbfnesting · implicitPe 1D și lemn, balanced este pur și simplu un alias pentru heuristic (răspunsul o spune).
  • heuristic — Implicit — un packer guillotine cu strategii multiple. Randament maxim, fiecare layout poate fi tăiat cu ferăstrăul și returnează întotdeauna un plan de tăiere. Deservește 2D, 1D și lemnul.
  • balanced — Un free-nester MaxRects opțional pentru 2D. Mult mai rapid pe lucrări foarte mari, cu un randament ușor mai mic, dar layouturile lui adesea nu pot fi tăiate cu ferăstrăul dintr-o margine în alta, așa că nu poartă niciun plan de tăiere.
  • max — Nivelul asincron: trimiți lucrarea și interoghezi GET /v1/jobs/{id} pentru rezultat. La 2D este o căutare arborescentă care atinge optimul demonstrat pe mult mai multe lucrări, în câteva secunde până la un minut per rezolvare — rămâne determinist și tăiabil cu ferăstrăul. La nesting true-shape rulează întâi lbf, apoi cheltuiește un buget de timp căutând un aranjament cu mai puține plăci și nu returnează niciodată mai multe; această căutare este limitată în timp, așa că nesturile ei spun deterministic: false.
  • lbf — Motorul implicit de nesting true-shape. Împachetează poligoane neregulate în buzunarele unora în ale altora, pentru laser, plasmă și jet de apă — instantaneu și determinist. max (mai sus) poate apoi căuta aceeași lucrare pentru mai puține plăci.

Care endpoint pentru care material: plăci plane — placaj, MDF, sticlă, acril, tablă — merg la /v1/optimize/2d; bare, tuburi, țevi și profile la /v1/optimize/1d; lemn structural (un 50×150 doar dintr-un 50×150) la /v1/optimize/wood; poligoane neregulate pentru laser, plasmă și jet de apă la /v1/optimize/nest.

Un singur apel, un plan complet

curl https://api.cutoptim.com/v1/optimize/2d \
  -H "Authorization: Bearer co_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "parts": [
      { "name": "Door",    "w": 600, "h": 400, "qty": 4 },
      { "name": "Shelf",   "w": 800, "h": 300, "qty": 6 }
    ],
    "stock":   [{ "w": 2440, "h": 1220, "price": 42 }],
    "options": { "kerf": 3, "effort": "balanced" },
    "engine":  "heuristic"
  }'

Răspunsul primit:

{
  "metrics": { "sheetCount": 1, "yieldPct": 80.62, "placed": 10, "total": 10,
               "cutLines": 10, "sawPasses": 13, "cutLength": 10720, "totalPrice": 42 },
  "sheets":  [ … ],
  "cutPlan": [{ "sheet": 0, "step": 1, "axis": "h", "pos": 400, "length": 2440, "stage": 1 }, … ],
  "guillotineValid": true,
  "engineVersion": "1.0.0+10e0c941",
  "deterministic": true
}

Structura completă a cererii și a răspunsului, fiecare opțiune, toate codurile de eroare și toate motoarele:Documentația API → · Ghid de integrare →

Fast sau dens? Alege cu o singură opțiune

Opțiunea effort echilibrează timpul de calcul cu utilizarea. Iată acest compromis, măsurat pe o lucrare solicitantă — fiecare cifră provine din packerul real.

Comutatorul effort: utilizarea materialului vs timpul de calculComutatorul effort: utilizarea materialului vs timpul de calcul. fast: 350 plăci · 76.2% · ≈1.9 s. balanced: 330 plăci · 80.8% · ≈4.8 s. max: rezervat — mai dens = căutare mai lentă. La majoritatea lucrărilor (mai mici) cele două sunt identice; diferența apare doar la lucrările mari ca aceasta. balanced este valoarea implicită și nu este niciodată mai dens decât poate atinge fast.Comutatorul effort: utilizarea materialului vs timpul de calculO lucrare solicitantă — circa 1.550 de piese pe o placă de 2,07 × 5,6 m. Fiecare cifră măsurată pe packerul real.74%76%78%80%82%84%02 s4 s6 stimp de calcul · mai rapid →utilizarea materialului · mai dens ↑⇄ comutatorul effort+4,6 pp utilizare · −20 plăci−5,7% material · ≈2,5× mai lentfast350 plăci · 76.2% · ≈1.9 s★ balanced · implicit330 plăci · 80.8% · ≈4.8 smaxrezervatmai dens =căutare mai lentă
La majoritatea lucrărilor (mai mici) cele două sunt identice; diferența apare doar la lucrările mari ca aceasta. balanced este valoarea implicită și nu este niciodată mai dens decât poate atinge fast.

Și oricum este rapid: chiar și cele mai mari lucrări de producție — 2.000 de piese și mai mult — se rezolvă în câteva secunde pe motorul implicit, confortabil în bugetul de timp al API-ului.

Soluții pe industrie

Același motor, poziționat pentru felul în care taie fiecare meserie. Fiecare pagină arată endpointul, o cerere și un răspuns, și câmpurile care contează pentru acel material.

Motorul lucrează cu geometrie, nu cu un catalog de materiale: tablă și plăci metalice, panouri pe bază de lemn, sticlă, plastice și acril, compozite, spumă, carton și hârtie trec toate prin aceleași endpointuri. Materialul schimbă doar numerele pe care le trimiți — kerf-ul sau distanța dintre piese, marginea liberă, dimensiunile materialului de bază.

Resursă descărcabilă
Engine API one-pager

The why, what and how of the CutOptim Engine API on two pages — the four modes, a real request and its plan, how to try it free, and the two plans. Print-ready, with a QR back to this page.

PDF2 pagesFree
Descarcă PDF-ul

Întrebări frecvente

Are CutOptim un API?
Da — API-ul CutOptim Engine expune același motor de debitare prin HTTP, pentru un ERP, un instrument de ofertare sau software de mașină, în toate cele trei moduri ale aplicației: panouri 2D, liniar 1D și lemn cu potrivire de secțiune.
Există un API pentru tăiere cu laser, plasmă sau jet de apă?
Da — nesting-ul true-shape al poligoanelor neregulate este al patrulea mod al API-ului Engine, POST /v1/optimize/nest. Trimiți fiecare piesă ca un contur poligonal (cu găuri opționale) împreună cu plăcile din stoc; motorul îmbină piesele în buzunarele concave ale celorlalte și returnează amplasarea fiecărei copii, astfel încât o lucrare cu laser, plasmă sau jet de apă se cuibărește mult mai strâns decât un dreptunghi de încadrare — pe o lucrare reprezentativă de 272 de piese, 6 plăci acolo unde aceleași piese după dreptunghiul de încadrare au nevoie de 9. Zone de excludere pe placă (un defect, o menghină) și rotație continuă sunt incluse; spațierea dintre piese (minSeparation) și distanța la marginea plăcii (edgeClearance) se setează separat, iar răspunsul totalizează plăcile folosite pe dimensiune de material de bază — amestecând dimensiunile atunci când este mai ieftin — și indică lungimea de tăiere și numărul de străpungeri ale fiecărei plăci, precum și lățimea și înălțimea utilizate din colțul plăcii (pentru facturarea unei părți de placă; placa cea mai puțin umplută este compactată în acel colț). Aplicația oferă același nesting în propriul ei mod Nesting.
Este API-ul Engine determinist?
Da. Aceeași intrare returnează aceeași ieșire, deci răspunsurile sunt cache-abile și testabile, iar versiunea motorului poate fi fixată pentru rezultate reproductibile. Singura excepție opțională este motorul max pentru nesting: căutarea sa este limitată în timp, așa că raportează deterministic: false în fiecare răspuns.
Ce conține un răspuns de optimizare?
Aranjamentul complet, un plan de debitare ghilotină cu poziții de oprire pe pas și metricile (număr de plăci, randament, linii de tăiere, treceri de fierăstrău, lungime tăiată). Endpointul 2D returnează și metrii de cant pe tip, iar fiecare endpoint acceptă o etichetă de material și returnează un sumar pe material. Poți cere aranjamentul și ca SVG, DXF sau CSV inline și poți atașa un obiect meta la piese și la stoc, returnat identic.
Poate API-ul să îmi dea un desen, nu doar coordonate?
Da. Adaugă include:["svg","csv","dxf"] la o cerere de optimizare, iar răspunsul poartă aranjamentul ca fișier gata făcut, inline: un desen SVG 2D autonom, un DXF R12/AC1009 sau o listă de debitare CSV. Fără stocare și fără un al doilea apel. SVG este doar 2D; o cerere 1D sau lemn returnează în schimb un avertisment.
Pot atașa propriile ID-uri la piese și să le citesc înapoi?
Da. Orice rând de piesă sau de stoc poate purta un obiect meta — numărul tău de articol ERP, id-ul liniei de comandă sau referința clientului —, și revine identic pe fiecare piesă plasată și fiecare placă sau bară, astfel încât planul de debitare se reconciliază cu propriul tău sistem. Nu afectează niciodată aranjamentul.
Pot verifica o cerere fără să consum un apel?
Da. POST /v1/validate/2d, /1d sau /wood validează după schemă același corp pe care îl acceptă endpointul de optimizare corespunzător, fără a rezolva — fără cheie și fără cotă. Un 400 numește exact câmpul greșit, iar tu primești avertismente de fezabilitate (o piesă care nu încape în niciun stoc) înainte să consumi un apel real.
Există SDK-uri, webhook-uri sau job-uri asincrone?
Da. SDK-uri oficiale pentru TypeScript (npm @cutoptim/engine), Python (PyPI cutoptim) și PHP (Composer cutoptim/engine) sunt open source pe github.com/cutoptim, generate din specificația OpenAPI 3.1 — pentru orice alt limbaj, poți îndrepta un generator de cod către același document. Majoritatea apelurilor de optimizare sunt HTTP sincron simplu care returnează direct planul finalizat. Singura excepție este motorul asincron max, pentru panouri 2D și pentru nesting true-shape: POST /v1/optimize/2d sau /v1/optimize/nest cu engine:"max" returnează 202 Accepted cu un jobId, iar tu interoghezi GET /v1/jobs/{id} până se termină — pentru când un plan mai bun merită de la câteva secunde la câteva minute de calcul. În loc să interoghezi, înregistrează un webhook în dashboard: trimite un POST semnat când jobul se termină.
Care sunt limitele cererii?
Până la 2.000 de piese, 50 de rânduri de stoc și un corp al cererii de 1 MB per apel. Chiar și cele mai mari lucrări se rezolvă în câteva secunde, confortabil în bugetul de timp.
Gestionează cheile API