CutOptim Engine API
API za optimizaciju rezanja: pošaljite dijelove i zalihu — 2D ploče, 1D šipke, drvo ili true-shape ugnježđivanje nepravilnih dijelova — i dobijte natrag raspored, plan rezanja i iskoristivost. Prema zadanim postavkama isti zahtjev uvijek vraća isti plan.
Pogledaj cijelo mjerilo → · Izmjereno, ne tvrđeno
{
"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 }
}Zašto graditi na tome
Isti ulaz uvijek vraća isti izlaz — bez slučajnosti, bez sata u algoritmu. Rezultate možete predmemorirati i uspoređivati u testovima. Jedina opcionalna iznimka, vremenski ograničena pretraga max za ugnježđivanje, to navodi u svakom odgovoru (deterministic: false).
Ne samo pravokutnici: giljotinski slijed rezanja, linije reza naspram prolaza pile, ispiljena duljina i oznaka koja vam govori može li se izraditi na pili za ploče.
Širina reza, obrez po strani, tolerancija, način troška, smjer žice i usklađivanje žice, maksimalne faze rezanja, minimiziranje rotacija — iste opcije koje nudi i aplikacija.
Izgradite ga sami ili ga pozovite
Optimizator rezanja djeluje kao vikend-projekt, a onda postane dugačak niz rubnih slučajeva: računanje širine reza i obreza, zaliha koja ponestaje, pravila rotacije i žice, rasporedi koji moraju biti izrezivi od ruba do ruba, poligoni s rupama — i paket regresijskih testova koji dokazuje da promjena nikad ne pogorša plan. Engine API je taj posao, već obavljen i izmjeren.
Pisanje i validaciju četiri optimizatora — 2D giljotinske ploče, 1D linearnu zalihu, drvo po presjeku i true-shape ugnježđivanje — te održavanje njihove ispravnosti kako rastu vaši zahtjevi. Vaš tim umjesto toga ugrađuje jedan HTTP ugovor.
Kvaliteta plana je objavljena, a ne tvrđena: otvoreni benchmark pokreće motor na javnim akademskim skupovima primjera i generiranim poslovima, s dostupnom metodom i sirovim rezultatima za preuzimanje. Pokrenite iste primjere na bilo čemu drugom što razmatrate.
Cijena na stranici, 14-dnevna proba i ključ s vaše nadzorne ploče — bez prodajnog poziva i bez pregovora o licenci prije nego što možete testirati. Krajnje točke validate ne trebaju čak ni ključ.
Vaš podatkovni model, vaše sučelje i vaša pravila određivanja cijena. Sinkroni pozivi ništa ne pohranjuju; asinkroni max posao čuva svoj rezultat samo kratko, u prozoru zadržavanja, kako biste ga mogli dohvatiti. Objekt meta na bilo kojem dijelu ili ploči vraća se doslovno, pa se plan usklađuje s vašom evidencijom.
Trebate gotov zaslon za narudžbe umjesto da ga sami gradite?
CutOptim Configurator radi na ovom motoru →Povežite vlastiti web shop ili ERP →Cijene
Svaki zahtjev vrijedi jednako — i ugnježđivanje · Šaljemo vam e-poštu kad potrošite 90 % kvote i kad se potroši u cijelosti.
Isprobajte besplatno: javni demo ključ u API referenci i testni ključevi s 1,000 zahtjeva mjesečno koji se nikad ne naplaćuju
Veći volumeni. 10,000 zahtjeva mjesečno standardni je plan, a ne gornja granica onoga što možemo pokrenuti. Ako trebate više — veći volumen, odvojene ključeve za staging i produkciju ili namjensko rješenje — recite nam svoje brojke i cijenu određujemo pojedinačno. Recite nam svoj volumen →
Pretplatom prihvaćaš: Engine API Service Terms (na engleskom).
Uobičajeni CutOptim planovi (Besplatno / Pro / Radionica) nisu povezani s API-jem — optimizator u aplikaciji ostaje u njima uključen. Pogledajte cijene aplikacije →
Što ulazi, što izlazi
Jedan stvarni posao po načinu rada: gore tijelo zahtjeva, ispod vraćeni plan, nacrtan izravno iz odgovora.
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 } }
}200 · sheets[].parts- Ploče
- 2
- sheetCount
- Iskoristivost
- 80,31 %
- yieldPct
- Postavljeni dijelovi
- 36 / 36
- placed
- Linije reza
- 39
- cutLines
- Trošak materijala
- 77
- totalPrice
Niz donjih kuhinjskih elemenata od standardne iverice. Vrata zadržavaju smjer godova (rotatable: false), svi ostali dijelovi smiju se okretati.
Želite sliku izravno od API-ja? Za 2D i nesting dodajte "svg" u include i odgovor sadrži crtež.
POST /v1/optimize/1d{
"parts": [
{ "name": "Post", "length": 2400, "qty": 4 },
{ "name": "Rail", "length": 1750, "qty": 6 },
{ "name": "Brace", "length": 940, "qty": 8 },
{ "name": "Cross", "length": 620, "qty": 10 }
],
"stock": [
{ "length": 6000, "qty": 10, "price": 24.9 }
],
"options": { "kerf": 3, "trim": { "start": 10 } }
}200 · rods[].parts- Šipke
- 6
- rodCount
- Iskoristivost
- 93,94 %
- yieldPct
- Postavljeni dijelovi
- 28 / 28
- placed
- Rezovi
- 28
- cuts
- Trošak materijala
- 149,4
- totalPrice
Popis rezanja čeličnog okvira iz cijelih šipki. Svaka šipka pokazuje gdje počinju dijelovi (pos) i koliko ostaje (remaining).
POST /v1/optimize/wood{
"parts": [
{ "name": "Stud", "sw": 45, "sh": 95, "length": 2350, "qty": 6 },
{ "name": "Nogging", "sw": 45, "sh": 95, "length": 555, "qty": 12 },
{ "name": "Joist", "sw": 45, "sh": 145, "length": 3600, "qty": 3 },
{ "name": "Blocking", "sw": 45, "sh": 145, "length": 1150, "qty": 3 }
],
"stock": [
{ "name": "C24 45x95", "sw": 45, "sh": 95, "length": 4800, "qty": 10, "price": 9.8 },
{ "name": "C24 45x145", "sw": 45, "sh": 145, "length": 4800, "qty": 6, "price": 14.6 }
],
"options": { "kerf": 3 }
}200 · sections[].rods[].parts- Presjeci
- 2
- sectionCount
- Šipke
- 8
- rodCount
- Iskoristivost
- 91,17 %
- yieldPct
- Postavljeni dijelovi
- 24 / 24
- placed
- Trošak materijala
- 92,8
- totalPrice
Konstrukcijsko drvo u dva presjeka. Svaki presjek reže se samo iz vlastitog materijala i vraća se s vlastitim zbrojevima.
POST /v1/optimize/nest{
"parts": [
{ "name": "bracket", "polygon": [[0,0], [300,0], [300,100], [100,100], [100,300], [0,300]], "qty": 12, "allowedRotations": [0,90,180,270] },
{ "name": "gusset", "polygon": [[0,0], [250,0], [0,250]], "qty": 14, "allowedRotations": [0,90,180,270] },
{ "name": "plate", "polygon": [[0,0], [240,0], [240,160], [0,160]], "holes": [[[60,65], [180,65], [180,95], [60,95]]], "qty": 12, "allowedRotations": [0,90] },
{ "name": "flange", "source": { "content": "<svg xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"90\" cy=\"90\" r=\"90\"/><circle cx=\"90\" cy=\"90\" r=\"32\"/><circle cx=\"90\" cy=\"30\" r=\"9\"/><circle cx=\"150\" cy=\"90\" r=\"9\"/><circle cx=\"90\" cy=\"150\" r=\"9\"/><circle cx=\"30\" cy=\"90\" r=\"9\"/></svg>", "filename": "flange.svg" }, "qty": 10, "allowedRotations": [0] }
],
"stock": [
{ "w": 2500, "h": 1250, "qty": 3, "price": 96, "exclusions": [{ "polygon": [[1150,0], [1350,0], [1350,70], [1150,70]], "quality": 0 }] }
],
"options": { "minSeparation": 5, "edgeClearance": 10 }
}Nesting nije dio javnog demoa — pokrenite ovaj primjer s besplatnim testnim ključem. Izradite besplatni testni ključ
200 · sheets[].parts- Ploče
- 1
- sheetCount
- Popunjenost
- 56,32 %
- density
- Postavljeni dijelovi
- 48 / 48
- placed
- Duljina reza
- 49.463
- cutLength
- Probijanja
- 110
- pierces
Čelični dijelovi rezani laserom: tri poslana kao koordinate, prirubnica kao SVG datoteka (source). Nijedan dio ne ulazi u zonu stezanja (exclusions) i svi drže traženi razmak (minSeparation).
Želite sliku izravno od API-ja? Za 2D i nesting dodajte "svg" u include i odgovor sadrži crtež.
Svaki crtež nastaje iz koordinata u odgovoru — ništa nije raspoređeno ručno. Četiri posla rješava isti motor koji radi iza API-ja, a naši testovi ih ponovno rješavaju kako bi brojke ostale točne.
Što API radi
Po jedan poziv za 2D ploče, 1D linearni materijal, drvo s podudaranjem presjeka i true-shape ugnježđivanje nepravilnih poligona — POST /v1/optimize/2d, /1d, /wood i /nest.
POST /v1/optimize/nest pakira proizvoljne poligone (s rupama) na fiksne ploče, uklapajući dijelove jedne u konkavne džepove drugih — 6 ploča ondje gdje isti dijelovi prema graničnom okviru trebaju 9. Za laser, plazmu i vodeni mlaz. Uz to dolaze i zone isključenja po ploči (defekt, stezaljka).
Označite dijelove i zalihu s material oznakom i optimizator dijeli posao: svaki material reže se samo iz vlastite zalihe. Na svakom načinu rada; vraća se sažetak po material.
Imenujte vrstu ruba po bridu (2D) i odgovor zbraja tekuće metre po vrsti — po dijelu i po narudžbi. Metapodatak: nikada ne pomiče dio.
Imenujte dijelove čiji se uzorak mora nastaviti — frontu ladice iznad dvaju vrata — u usklađenom setu (matchedSets, 2D) i režu se jedan uz drugi iz istog komada ploče, razmaknuti za jedan kerf. Svaki član vraća se sa svojim setom i pozicijom, a CSV, SVG i DXF izvozi ih također označavaju.
Zatražite include:["svg","csv","dxf"] i odgovor nosi raspored kao gotovu datoteku, ugrađenu — samostalni 2D SVG crtež, R12/AC1009 DXF ili CSV popis rezanja. Bez pohrane, bez drugog poziva.
Priložite meta objekt — broj artikla iz vašeg ERP-a, id retka narudžbe, referencu kupca — bilo kojem retku dijela ili zalihe i vraća se doslovno na svakom postavljenom komadu i svakoj ploči/šipki, pa se plan usklađuje s vašim sustavom.
POST /v1/validate/{2d,1d,wood} shema-validira isto tijelo bez rješavanja — bez ključa, bez kvote. Provjerite da payload neće biti odbijen i dobijte upozorenja o izvedivosti prije nego što potrošite poziv.
minimizeCost rangira prema najnižem ukupnom računu među zalihama s cijenom, miješajući formate; zadano se minimizira materijal. Oba izvode isti guillotine algoritam.
Označite zalihu koju treba prvo potrošiti, tretirajte količine kao čvrsto ograničenje uz respectStock i označite dijelove koji se obavezno režu i osvajaju mjesto na ploči kad materijala nedostaje.
Ne samo pravokutnici: giljotinski slijed rezanja s pozicijama graničnika po koraku, linije reza naspram prolaza pile, ispiljena duljina i oznaka izradivosti na pili za ploče.
kerf, obrez po strani, tolerancija, smjer žice, matched sets, maxCutStages i minimiziranje rotacija — iste opcije koje nudi aplikacija.
Isti ulaz uvijek vraća isti izlaz — predmemorirajte ga i usporedite (opcionalna, vremenski ograničena pretraga max za ugnježđivanje prijavljuje deterministic: false). Učvrstiva verzija motora i OpenAPI 3.1 dokument opisuju cijeli ugovor.
Pošaljite SVG ili DXF umjesto koordinata: parts[].source čita obris i njegove rupe iz crteža, a POST /v1/import/nest prvo razdvaja datoteku s više dijelova. Ništa se ne pohranjuje — datoteka se obrađuje u memoriji i nestaje s odgovorom.
Claude Code, Cursor, VS Code i Claude Desktop pozivaju motor kao alate preko https://api.cutoptim.com/mcp — s istim API ključem i kvotom kao REST. Lokalno radi i kao npm paket @cutoptim/mcp.
Dvije brzine: ponuda odmah, ušteda materijala kasnije
Većini integracija treba oboje — odgovor dok kupac čeka, i tješnji plan kad posao ide na stroj. Birate po pozivu.
Sinkroni motori — heuristic za 2D, 1D i drvo, lbf za ugnježđivanje — odgovaraju unutar HTTP zahtjeva, deterministički, pa je plan iza ponude isti plan koji stoji iza narudžbe.
Pošaljite posao s engine: "max" i pozivom GET /v1/jobs/{id} dohvatite rezultat. Na 2D pločama traži prema dokazanom optimumu; kod true-shape ugnježđivanja troši vremenski proračun (options.timeBudgetMs) tražeći manje ploča i nikad ne vraća više nego trenutačni odgovor.
Odgovor ima isti oblik u oba slučaja. Na 2D-u max motor prihvaća uži skup opcija nego heuristic (referenca ih navodi), a posao ugnježđivanja sa zonama isključenja i dalje opslužuje lbf.
Koji motor pokriva koji način rada
Krajnja točka na koju šaljete POST bira način rada; parametar engine bira algoritam. Zadani heuristic motor pokriva 2D, 1D i drvo; balanced radi samo za 2D; asinkroni max motor pokriva 2D ploče i true-shape ugnježđivanje; a zadani motor za ugnježđivanje je vlastiti lbf motor. Isti motor kao aplikacija, preko HTTP-a.
- heuristic — Zadano — giljotinski višestrateški paker. Najveći iskoristak, svaki raspored može se rezati pilom i uvijek vraća plan rezanja. Pokriva 2D, 1D i drvo.
- balanced — MaxRects slobodni nester za 2D na zahtjev. Znatno brži na vrlo velikim poslovima uz malo manji iskoristak, no njegovi rasporedi često se ne mogu rezati pilom od ruba do ruba, pa ne nose plan rezanja.
- max — Asinkroni sloj: pošaljete posao i pozivom GET /v1/jobs/{id} dohvaćate rezultat. Kod 2D-a riječ je o pretrazi stabla koja doseže dokazani optimum na mnogo više poslova, uz nekoliko sekundi do minute po rješavanju — i dalje determinističko i može se rezati pilom. Kod true-shape ugnježđivanja prvo pokreće lbf, a zatim troši vremenski proračun tražeći raspored s manje ploča i nikad ne vraća više; ta je pretraga vremenski ograničena, pa njegovi rasporedi prijavljuju deterministic: false.
- lbf — Zadani motor za true-shape ugnježđivanje. Pakira nepravilne poligone u međusobne džepove za laser, plazmu i vodeni mlaz — trenutačno i deterministički. max (gore) zatim može pretražiti isti posao tražeći manje ploča.
Koja krajnja točka za koji materijal: ravne ploče — šperploča, MDF, staklo, akril, lim — idu na /v1/optimize/2d; šipke, cijevi i profili na /v1/optimize/1d; konstrukcijsko drvo (50×150 samo iz 50×150) na /v1/optimize/wood; nepravilni poligoni za laser, plazmu i vodeni mlaz na /v1/optimize/nest.
Jedan poziv, potpuni plan
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"
}'Vraća se kao:
{
"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
}Potpuna struktura zahtjeva i odgovora, sve opcije, svi kodovi grešaka i svi motori:API referenca → · Vodič za integraciju →
Fast ili gusto? Odaberite jednom opcijom
Opcija effort odmjerava vrijeme izračuna naspram iskoristivosti. Evo tog kompromisa, izmjerenog na jednom zahtjevnom zadatku — svaka brojka dolazi iz stvarnog packera.
I ionako je brzo: čak i najveći proizvodni poslovi — 2.000 dijelova i više — rješavaju se u nekoliko sekundi na zadanom motoru, ugodno unutar vremenskog proračuna API-ja.
Rješenja po industriji
Isti motor, prilagođen načinu na koji svaka struka reže. Svaka stranica prikazuje krajnju točku, zahtjev i odgovor, te polja koja su bitna za taj materijal.
Motor radi s geometrijom, ne s katalogom materijala: lim i ploče, ploče na bazi drva, staklo, plastika i akril, kompoziti, pjena, karton i papir prolaze kroz iste krajnje točke. Materijal mijenja samo brojke koje šaljete — širinu reza ili razmak dijelova, razmak od ruba, veličine zalihe.
Nesting po stvarnom obliku preko REST-a: poligoni ili DXF/SVG dijelovi na ulazu, položaji i DXF/SVG raspored na izlazu. POST /v1/optimize/nest
1D rezanje po duljini za cijevi, šuplje profile i cijevne šipke. POST /v1/optimize/1d
1D rezanje po duljini za čelične i aluminijske profile, šipke i nosače, s načinom troška. POST /v1/optimize/1d
2D giljotina, zarezivanje i lomljenje bez širine reza za float, kaljeno i zrcalno staklo. POST /v1/optimize/2d
1D rezanje po duljini za konstrukcijsku građu s podudaranjem poprečnog presjeka. POST /v1/optimize/wood
Nesting nepravilnih poligona po stvarnom obliku, sa zonama isključenja. POST /v1/optimize/nest
Nesting po stvarnom obliku na ploče lima za laser, plazmu ili vodeni mlaz. POST /v1/optimize/nest
Optimizacija specifikacije savijanja šipki za armaturni čelik. · traže se partneri za razvoj
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.