CutOptim Engine API
API pro optimalizaci řezání: pošlete díly a materiál — 2D desky, 1D tyče, dřevo nebo nesting nepravidelných dílů podle skutečného tvaru — a zpátky dostanete rozvržení, plán řezání a využití. Ve výchozím nastavení vrací stejný požadavek vždy stejný plán.
Zobrazit celý benchmark → · Naměřeno, ne tvrzeno
{
"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 }
}Proč na tom stavět
Stejný vstup vrací vždy stejný výstup — žádná náhoda, žádné hodiny v algoritmu. Výsledky můžete cachovat a v testech je porovnávat. Jedinou výjimkou, kterou si sami zapnete, je časově omezené hledání jádra max pro nesting — v každé odpovědi to hlásí (deterministic: false).
Nejen obdélníky: gilotinová sekvence řezů, řezy versus průjezdy pily, délka řezu a příznak, který říká, zda je plán vyrobitelný na formátovací pile.
Šířka řezu (kerf), ořez po jednotlivých hranách, tolerance, režim nákladů, směr vláken a shoda vzoru dřeva, limit fází řezání, minimalizace otáčení — stejné volby, jaké nabízí aplikace.
Napsat, nebo zavolat
Vlastní optimalizátor řezání vypadá jako projekt na víkend, ale promění se v dlouhý ocas okrajových případů: výpočty šířky řezu a ořezu, docházející zásoba, pravidla otáčení a vzoru dřeva, rozvržení, která musí jít rozřezat od kraje ke kraji, polygony s otvory — a sada regresních testů, která dokazuje, že žádná změna plán nezhorší. Engine API je přesně tato práce, už hotová a změřená.
Psaní a validaci čtyř optimalizátorů — 2D gilotinových desek, 1D lineární zásoby, dřeva podle průřezu a nestingu podle skutečného tvaru — a udržování jejich správnosti s rostoucími požadavky. Váš tým místo toho integruje jeden HTTP kontrakt.
Kvalita plánů je publikovaná, ne jen tvrzená: otevřený benchmark spouští jádro na veřejných akademických sadách úloh a generovaných zakázkách, metoda i surové výsledky jsou ke stažení. Spusťte stejné úlohy proti čemukoli jinému, co zvažujete.
Cenu na stránce, zkušební období (14 dní) a klíč z vašeho dashboardu — žádný obchodní hovor a žádné vyjednávání o licenci, než to budete moct vyzkoušet. Endpointy validate nepotřebují klíč vůbec.
Váš datový model, vaše rozhraní a vaše cenová pravidla. Synchronní volání nic neukládají; asynchronní úloha max si uchovává výsledek jen po krátkou dobu, aby se dal dotázat. Objekt meta u libovolného dílu nebo desky se vrátí doslovně, takže plán sedí s vašimi záznamy.
Chcete hotovou objednávkovou obrazovku místo vlastního vývoje?
CutOptim Configurator běží na tomto enginu →Napojení vlastního e-shopu nebo ERP →Ceník
Každý požadavek se počítá stejně — nesting včetně · Při 90 % kvóty a po jejím vyčerpání vám pošleme e-mail.
Vyzkoušejte zdarma: veřejný demo klíč v referenci API a testovací klíče s 1,000 požadavky měsíčně, které se nikdy neúčtují
Větší objemy. 10,000 požadavků za měsíc je standardní tarif, ne strop toho, co dokážeme provozovat. Pokud potřebujete více — vyšší objem, oddělené klíče pro staging a produkci nebo individuální řešení — napište nám svá čísla a naceníme to individuálně. Napište nám svůj objem →
Předplatným přijímáte: Engine API Service Terms (anglicky).
Běžné tarify CutOptim (Zdarma / Pro / Dílna) s API nijak nesouvisejí — optimalizátor v aplikaci v nich zůstává zahrnutý. Ceník aplikace →
Co jde dovnitř, co vyjde ven
Jedna skutečná zakázka na každý režim: nahoře tělo požadavku, pod ním vrácený plán nakreslený přímo z odpovědi.
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- Desky
- 2
- sheetCount
- Výtěžnost
- 80,31 %
- yieldPct
- Umístěné díly
- 36 / 36
- placed
- Řezné linie
- 39
- cutLines
- Cena materiálu
- 77
- totalPrice
Řada spodních skříněk ze standardní dřevotřísky. Dvířka drží směr vláken (rotatable: false), ostatní díly se smějí otáčet.
Chcete obrázek přímo z API? U 2D a nestingu přidejte "svg" do include a odpověď nese nákres.
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- Tyče
- 6
- rodCount
- Výtěžnost
- 93,94 %
- yieldPct
- Umístěné díly
- 28 / 28
- placed
- Řezy
- 28
- cuts
- Cena materiálu
- 149,4
- totalPrice
Řezný plán ocelového rámu z celých tyčí. U každé tyče je vidět, kde díly začínají (pos) a kolik zbude (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- Průřezy
- 2
- sectionCount
- Tyče
- 8
- rodCount
- Výtěžnost
- 91,17 %
- yieldPct
- Umístěné díly
- 24 / 24
- placed
- Cena materiálu
- 92,8
- totalPrice
Konstrukční řezivo ve dvou průřezech. Každý průřez se řeže jen z vlastního materiálu a vrací se s vlastními součty.
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 není součástí veřejného dema — spusťte tento příklad s bezplatným testovacím klíčem. Vytvořit bezplatný testovací klíč
200 · sheets[].parts- Desky
- 1
- sheetCount
- Zaplnění
- 56,32 %
- density
- Umístěné díly
- 48 / 48
- placed
- Délka řezu
- 49 463
- cutLength
- Propaly
- 110
- pierces
Ocelové díly řezané laserem: tři poslané jako souřadnice, příruba jako soubor SVG (source). Žádný díl nezasahuje do upínací zóny (exclusions) a všechny drží požadovaný odstup (minSeparation).
Chcete obrázek přímo z API? U 2D a nestingu přidejte "svg" do include a odpověď nese nákres.
Každý nákres vzniká ze souřadnic v odpovědi — nic není rozmístěno ručně. Čtyři zakázky řeší stejný motor, který běží za API, a naše testy je znovu přepočítávají, aby čísla zůstala pravdivá.
Co API dělá
Po jednom volání pro 2D desky, 1D lineární materiál, dřevo s párováním průřezu a nesting nepravidelných polygonů podle skutečného tvaru — POST /v1/optimize/2d, /1d, /wood a /nest.
POST /v1/optimize/nest rozmisťuje libovolné polygony (i s otvory) na pevné desky a zaklesává díly do vzájemných konkávních kapes — 6 desek tam, kde tytéž díly podle opsaného obdélníku potřebují 9. Pro řezání laserem, plazmou a vodním paprskem. Součástí jsou i vyloučené zóny po jednotlivých deskách (vada, upínka).
Označte díly a zásobu štítkem material a optimalizátor rozdělí úlohu: každý material se řeže jen z vlastní zásoby. V každém režimu; vrací se souhrn podle material.
Pojmenujte typ hrany pro každou hranu (2D) a odpověď sečte běžné metry podle typu — na díl a na zakázku. Metadata: díl nikdy neposune.
Pojmenujte díly, jejichž kresba musí pokračovat — čelo zásuvky nad dvěma dvířky — v sadě (matchedSets, 2D) a nařežou se vedle sebe z jednoho kusu desky, o jeden kerf od sebe. Každý člen se vrací se svou sadou a pozicí a exporty CSV, SVG a DXF je také značí.
Požádejte o include:["svg","csv","dxf"] a odpověď ponese rozvržení jako hotový soubor, přímo v ní — samostatný 2D výkres SVG, DXF ve formátu R12/AC1009 nebo seznam řezů v CSV. Žádné úložiště, žádné druhé volání.
Připojte objekt meta — číslo artiklu z vašeho ERP, id řádku zakázky, referenci zákazníka — k jakémukoli dílu nebo řádku materiálu a vrátí se doslovně u každého umístěného kusu i u každé desky/tyče, takže plán sedí s vaším systémem.
POST /v1/validate/{2d,1d,wood} zvaliduje stejné tělo vůči schématu bez výpočtu — bez klíče, bez kvóty. Ověřte, že požadavek nebude odmítnut, a získejte upozornění na proveditelnost dřív, než utratíte volání.
minimizeCost řadí podle nejnižší celkové ceny napříč naceněnými velikostmi zásoby a mísí formáty; výchozí nastavení minimalizuje materiál. Oba spouštějí stejný guillotine algoritmus.
Označte zásobu, která se spotřebuje jako první, považujte množství za tvrdý limit pomocí respectStock a označte díly nutné k řezání, které při nedostatku materiálu získají místo na desce.
Nejen obdélníky: gilotinová sekvence řezů s pozicemi dorazu pro každý krok, řezy versus průjezdy pily, délka řezu a příznak vyrobitelnosti na formátovací pile.
kerf, ořez po jednotlivých hranách, tolerance, směr vláken, sady shody vzoru dřeva (matched sets), maxCutStages a minimalizace otáčení — stejné volby, jaké nabízí aplikace.
Stejný vstup vrací vždy stejný výstup — cachujte jej a porovnávejte (volitelné, časově omezené hledání jádra max pro nesting hlásí deterministic: false). Připnutelná verze enginu a dokument OpenAPI 3.1 popisují celý kontrakt.
Pošlete SVG nebo DXF místo souřadnic: parts[].source načte obrys a jeho otvory z výkresu a POST /v1/import/nest nejprve rozdělí soubor s více díly. Nic se neukládá — soubor se zpracuje v paměti a zmizí spolu s odpovědí.
Claude Code, Cursor, VS Code a Claude Desktop volají engine jako nástroje přes https://api.cutoptim.com/mcp — se stejným API klíčem a kvótou jako REST. Lokálně běží i jako npm balíček @cutoptim/mcp.
Dvě rychlosti: nabídka hned, úspora materiálu později
Většina integrací potřebuje obojí — odpověď, zatímco zákazník čeká, a přesnější plán, když úloha jde na stroj. Vybíráte si u každého volání.
Synchronní jádra — heuristic pro 2D, 1D a dřevo, lbf pro nesting — odpovídají v rámci HTTP požadavku, deterministicky, takže plán za nabídkou je stejný jako plán za objednávkou.
Pošlete úlohu s engine: "max" a výsledek získejte dotazováním GET /v1/jobs/{id}. U 2D desek hledá směrem k prokazatelnému optimu; u nestingu podle skutečného tvaru stráví časový rozpočet (options.timeBudgetMs) hledáním menšího počtu desek a nikdy nevrátí víc, než je okamžitá odpověď.
Odpověď má v obou případech stejnou podobu. U 2D přijímá engine max užší sadu voleb než heuristic (reference je vyjmenovává) a úlohu nestingu s vyloučenými zónami stále obsluhuje lbf.
Který engine obsluhuje který režim
Endpoint, na který posíláte POST, určuje režim; parametr engine určuje algoritmus. Výchozí engine heuristic obsluhuje 2D, 1D i dřevo; balanced je pouze pro 2D; asynchronní engine max obsluhuje 2D desky i nesting podle skutečného tvaru; a výchozím enginem nestingu je jeho vlastní lbf. Stejný engine jako v aplikaci, přes HTTP.
- heuristic — Výchozí — gilotinový packer s více strategiemi. Nejvyšší výtěžnost, každé rozvržení je řezatelné na pile a vždy vrací plán řezání. Obsluhuje 2D, 1D i dřevo.
- balanced — Volitelný MaxRects free-nester pro 2D. U velmi velkých úloh výrazně rychlejší za mírně nižší výtěžnost, jeho rozvržení však často nelze rozřezat od kraje ke kraji, takže neobsahují plán řezání.
- max — Asynchronní vrstva: úlohu odešlete a výsledek získáte dotazováním GET /v1/jobs/{id}. U 2D je to stromové prohledávání, které dosahuje prokazatelného optima u mnohem více úloh, za několik sekund až minutu na výpočet — stále deterministické a řezatelné na pile. U nestingu podle skutečného tvaru nejdřív spustí lbf, pak stráví časový rozpočet hledáním rozvržení s menším počtem desek a nikdy nevrátí víc; toto hledání je časově omezené, takže jeho nesty hlásí deterministic: false.
- lbf — Výchozí engine nestingu podle skutečného tvaru. Zaklesává nepravidelné polygony do vzájemných kapes pro laser, plazmu a vodní paprsek — okamžitě a deterministicky. max (výše) může pak stejnou úlohu prohledat kvůli menšímu počtu desek.
Který endpoint pro který materiál: ploché desky — překližka, MDF, sklo, akrylát, plech — jdou na /v1/optimize/2d; tyče, trubky, roury a profily na /v1/optimize/1d; konstrukční dřevo (50×150 jen z 50×150) na /v1/optimize/wood; nepravidelné polygony pro laser, plazmu a vodní paprsek na /v1/optimize/nest.
Jedno volání, celý plán
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"
}'Vrátí se:
{
"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
}Kompletní podoba požadavku a odpovědi, všechny volby, všechny chybové kódy a všechna jádra:Reference API → · Průvodce integrací →
Fast, nebo hustě? Vyberte jednou volbou
Volba effort vyvažuje čas výpočtu proti využití. Tady je ten kompromis, změřený na jedné náročné zakázce — každé číslo pochází ze skutečného packeru.
A tak jako tak je to rychlé: i největší výrobní zakázky — 2000 dílů a více — se na výchozím enginu vyřeší v řádu sekund, pohodlně v časovém rozpočtu API.
Řešení podle oboru
Stejné jádro, představené pro způsob řezání v konkrétním oboru. Každá stránka ukazuje endpoint, požadavek a odpověď a pole, na kterých u daného materiálu záleží.
Jádro pracuje s geometrií, ne s katalogem materiálů: plech a plát, deskové materiály na bázi dřeva, sklo, plasty a akrylát, kompozity, pěna, karton i papír procházejí stejnými endpointy. Materiál mění jen čísla, která posíláte — šířku řezu nebo rozestup dílů, odstup od hrany, velikosti zásoby.
Tvarový nesting přes REST: na vstupu polygony nebo díly DXF/SVG, na výstupu rozmístění a rozložení DXF/SVG. POST /v1/optimize/nest
1D řezání na délku pro trubky, roury a uzavřené profily. POST /v1/optimize/1d
1D řezání na délku pro ocelové a hliníkové profily, tyče a průřezy, s režimem nákladů. POST /v1/optimize/1d
2D gilotinové řezání, naříznutí a odlomení bez šířky řezu pro plavené, kalené a zrcadlové sklo. POST /v1/optimize/2d
1D řezání konstrukčního dřeva na délku s přiřazením průřezu. POST /v1/optimize/wood
Nesting nepravidelných polygonů podle skutečného tvaru, s vyloučenými zónami. POST /v1/optimize/nest
Nesting podle skutečného tvaru na tabule plechu pro laser, plazmu nebo vodní paprsek. POST /v1/optimize/nest
Optimalizace výpisu ohýbání betonářské oceli. · hledáme pilotní partnery
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.