Zum Hauptinhalt springen
Auf dieser Seite

Engine API

Wenn Sie einfach Platten zuschneiden, brauchen Sie diese Seite nicht. Der Optimierer in CutOptim macht bereits alles, was hier beschrieben wird. Die Engine API ist dieselbe Engine, nur ohne Bildschirm — für den Fall, dass andere Software Schnittpläne benötigt, ohne dass eine Person die App öffnet.

Alles, was CutOptim in Ihrem Browser tut, beginnt mit einer einzigen Berechnung: Wie schneidet man diese Teile aus diesem Ausgangsmaterial am besten zu? Die Engine API stellt genau diese Berechnung über das Internet bereit, sodass ein anderes Programm die Frage stellen und die Antwort zurückbekommen kann — kein Browser, kein Klicken, niemand angemeldet.

Das ist die ganze Idee. Es ist kein neuer Optimierer, kein besserer Optimierer und kein größerer Tarif. Es ist dieselbe Engine, erreichbar für Software statt für einen Menschen.


Ist das etwas für mich?

Für die überwältigende Mehrheit der CutOptim-Nutzer lautet die ehrliche Antwort nein. Wenn Ihr Arbeitstag darin besteht, CutOptim zu öffnen, Teile und Ausgangsmaterial einzutippen und den Plan zu drucken oder zu exportieren, dann ist die App das Produkt, und diese Seite ist für Sie ohne Belang.

Die Engine API ist für eine Situation gedacht: Schnittpläne sollen in Software erscheinen, die Sie bereits nutzen, ohne dass jemand CutOptim aufruft. In der Praxis heißt das eine von zwei Personen:

  • Sie betreiben schon Software, in die der Schnittplan gehört. Ein ERP, das Ihre Aufträge führt, eine Angebotssoftware, die Aufträge kalkuliert, oder die Software einer Maschine. Anstatt dass eine Bedienerin oder ein Bediener dieselbe Teileliste erneut in CutOptim eintippt, fragt dieses Programm die Engine direkt und zeigt den Plan dort, wo die Arbeit ohnehin stattfindet.
  • Sie lassen sich Software bauen. Von einem eigenen Entwickler, einem örtlichen Softwarehaus oder dem Lieferanten Ihrer Maschine. Die Engine API ist das, womit diese sich verbinden.

Die Engine API zu nutzen bedeutet, dass jemand Software dafür schreibt. Es gibt keine Oberfläche, keine Tabelle zum Ausfüllen und nichts zu installieren — sie ist ein Dienst für Programme, und die Arbeit erledigt derjenige, der dieses Programm schreibt. Wenn auf Ihrer Seite niemand Code schreibt, ist die App das, was Sie möchten.

Wenn Sie nicht sicher sind, auf welcher Seite dieser Linie Sie stehen, hilft ein guter Test: Könnte der Plan entstehen, ohne dass ihn jemand anfordert? Wenn ja, ist die API relevant. Wenn immer ein Mensch entscheidet, einen Schnittplan zu erstellen, ist die App bereits das richtige Werkzeug.


Was sie leistet

Ihre Software sendet dieselben zwei Dinge, die Sie auch in der App eintippen würden — eine Liste von Teilen und eine Liste von Ausgangsmaterial — als JSON. Die Engine sendet eine vollständige Antwort zurück:

  • Das komplette Layout. Jedes Teil, positioniert auf einer bestimmten Platte oder einem bestimmten Stab, inklusive der Angabe, ob es gedreht wurde.
  • Einen Schnittplan. Nicht bloß ein Bild aus Rechtecken: die tatsächliche Guillotine-Schnittsequenz in der richtigen Reihenfolge, damit sich der Plan auf einer Plattensäge ausführen lässt.
  • Die Zahlen. Wie viele Platten oder Stäbe der Auftrag braucht, die Auslastung in Prozent, wie viele Schnitte nötig sind und den Gesamtpreis des verwendeten Materials. Für Platten erhalten Sie zusätzlich die zwei ehrlichen Schnittzählungen — Schnittlinien, die Schnitte mit derselben Anschlagseinstellung zusammenfasst, und Sägedurchgänge, die jeden Durchgang zählt — sowie die gesamte gesägte Länge.
  • Optional die Zeichnung. Fordern Sie include: ["svg","csv","dxf"] an, und die Antwort trägt das Layout zusätzlich als fertige Datei mit — eine eigenständige 2D-SVG-Zeichnung, ein DXF (R12/AC1009) oder eine CSV-Schnittliste — inline im JSON, ohne Speicherung und ohne zweiten Aufruf. (SVG nur in 2D.)
  • Ihre eigenen Kennungen, zurückgegeben. Hängen Sie an jedes Teil oder jede Materialzeile ein meta-Objekt — eine Artikelnummer, eine Auftragsposition, eine Kundenreferenz — und es kommt bei jedem platzierten Stück und jeder Platte bzw. jedem Stab unverändert zurück, sodass der Plan mit Ihrem eigenen System zusammenpasst. Genau dieses Feld nehmen Sie, wenn Sie Ihr gesamtes Ausgangsmaterial senden, jede Zeile mit Ihrem eigenen Code kennzeichnen und zurücklesen möchten, welche Platte der Optimierer gewählt hat: Der Code gehört in stock[].meta und kommt auf sheets[].meta zurück. Auf die Platzierung wirkt er sich nie aus. Nutzen Sie zur Kennzeichnung nicht das Feld material: material ist eine harte Trennung — ein Teil wird ausschließlich aus Ausgangsmaterial desselben Materials geschnitten. Kennzeichnen Sie also jede stock-Zeile mit einem material, lassen die Teile aber ungekennzeichnet, kommt jedes Teil als unmatched zurück und das Ergebnis bleibt leer.

Es gibt vier Optimierungsmodi, alle entsprechen der App — einen für 2D-Platten, einen für 1D-Linearmaterial wie Stäbe, Profile und Rohre, einen für Holz, dessen Material einen Querschnitt hat, und True-Shape-Nesting (POST /v1/optimize/nest), das beliebige Polygone für Laser-, Plasma- und Wasserstrahlschneiden verschachtelt (der Nesting-Modus der App). Jeder Optimize-Endpoint hat außerdem einen kostenlosen Validierungs-Endpoint, der eine Anfrage prüft, ohne sie zu lösen (siehe unten).

Endpoints

Die Basis-URL ist https://api.cutoptim.com. Die Optimize- und Usage-Endpoints führen einen Schlüssel im Header Authorization: Bearer <key> mit; die Validate- und Health-Endpoints benötigen keinen Schlüssel.

Endpoint Was er tut
POST /v1/optimize/2d 2D-Plattenoptimierung
POST /v1/optimize/1d 1D-/Linearoptimierung — Stäbe, Profile, Rohre
POST /v1/optimize/wood Holzoptimierung — 1D mit Querschnitts-Zuordnung
POST /v1/optimize/nest True-Shape-Nesting — unregelmäßige Polygone für Laser, Plasma und Wasserstrahl
POST /v1/validate/2d · /1d · /wood · /nest Eine Anfrage prüfen, ohne zu rechnen — kostenlos, kein Schlüssel, kein Kontingent
GET /v1/jobs/{id} Einen asynchronen Job der max-Engine abfragen — nur Ihre eigenen Jobs, kein Kontingent
POST /v1/import/nest Teileumrisse aus einer SVG- oder DXF-Datei lesen — Schlüssel erforderlich, verbraucht kein Kontingent
GET /v1/usage Verbrauch und Kontingent des KONTOS im laufenden Monat (alle Schlüssel teilen sich eines)
GET /v1/health Liveness-Prüfung — benötigt keinen Schlüssel

Die meisten Aufrufe werden direkt mit dem fertigen Ergebnis beantwortet. Die einzige Ausnahme ist die asynchrone Engine max (siehe Drei Engines weiter unten): Eine max-Übermittlung gibt eine Job-ID zurück, und Sie fragen GET /v1/jobs/{id} ab, bis der Plan fertig ist.

Die Validate-Endpoints nehmen denselben Body wie der jeweils passende Optimize-Endpoint entgegen und prüfen ihn, ohne die Berechnung auszuführen: Eine fehlerhafte Anfrage kommt als 400 zurück und benennt genau das fehlerhafte Feld, eine wohlgeformte liefert valid: true samt Machbarkeitswarnungen (etwa ein Teil, das in kein Ausgangsmaterial passt). Sie kosten nichts und brauchen keinen Schlüssel, sodass Sie Ihre Payloads schon während des Aufbaus der Anbindung validieren können — noch bevor Sie überhaupt einen Schlüssel besitzen — und sicherstellen, dass eine Anfrage nicht abgewiesen wird, ohne einen Ihrer monatlichen Aufrufe zu verbrauchen.

Warum Holz einen eigenen Endpoint hat

Linearmaterial kennt nur eine Dimension, seine Länge — also kann jeder Stab jedes Teil liefern. Bei Holz ist das nicht so: Ein Teil 50×150 lässt sich aus einem Stab 50×100 nicht herausschneiden, wie viel Länge auch übrig bleibt. Der Holz-Endpoint nimmt deshalb bei jedem Teil und jeder Materialzeile beide Querschnittsseiten entgegen, teilt den Auftrag nach Querschnitt auf, ordnet jedem Abschnitt sein eigenes Material zu und gibt die Abschnitte getrennt zurück — jeden mit eigenen Stäben und eigenen Summen, neben den Zahlen für den gesamten Auftrag.

Zwei Details, die man vor der Anbindung kennen sollte:

  • Die beiden Querschnittsseiten dürfen in beliebiger Reihenfolge kommen. 50×100 und 100×50 sind derselbe umgedrehte Balken und werden als ein Abschnitt behandelt. Ein Unterschied darin, wie Ihre Daten nun einmal erfasst sind, kann also kein Material verschwinden lassen.

  • „Kein Material dieses Querschnitts“ und „hat nicht gepasst“ werden getrennt gemeldet. Das erste ist eine Materialmeldung, das zweite ein Kapazitätsproblem, und beide verlangen eine andere Lösung — in einer Liste vermischt schicken sie Ihren Anwender an die falsche Stelle.

Sie könnten das mit mehreren eigenen 1d-Aufrufen annähern, indem Sie die Teile selbst gruppieren. Das kostet pro Querschnitt eine Anfrage aus Ihrem Kontingent statt einer für den Auftrag, verlagert die Materialzuordnung in Ihren Code und liefert eine Auftragssumme, die Sie selbst zusammensetzen müssten — und die nicht zwangsläufig mit dem übereinstimmt, was die CutOptim-App für denselben Auftrag anzeigt.


Teile aus einer CAD-Datei

Der Nesting-Endpoint nimmt nicht nur Koordinaten entgegen. Ein Teil darf stattdessen ein source tragen — ein SVG- oder DXF-Dokument —, und der Server liest dessen Umriss samt aller Löcher aus der Datei heraus. Es ist derselbe Leser, den die App verwendet, wenn Sie eine Zeichnung auf ihren Nesting-Modus ziehen; eine Teilebibliothek, die bereits als CAD-Dateien vorliegt, muss also nicht erst in Koordinatenlisten umgeschrieben werden.

Die Datei ersetzt nur die Geometrie. Menge, Material, erlaubte Drehungen und Ihre eigenen Metadaten bleiben gewöhnliche Felder der Teilezeile, genau wie beim Senden von Koordinaten. Eine Datei beschreibt ein Teil; enthält eine einzelne Zeichnung mehrere getrennte Bauteile, zerlegt POST /v1/import/nest sie zuerst in fertige Teilezeilen — und dieser Aufruf braucht einen Schlüssel, verbraucht aber keine Anfrage aus Ihrem Monatskontingent.

Nichts wird gespeichert. Die Datei existiert ausschließlich als die Anfrage selbst: sie wird im Arbeitsspeicher gelesen und ist fort, sobald die Antwort geschrieben ist. Es bleibt keine Kopie auf einer Festplatte oder in einer Datenbank, nichts landet in einem Log, und es gibt hinterher nichts zu löschen. Mit Einheiten verfahren wir ebenso — eine DXF-Datei kann Millimeter oder Zoll angeben, und wir melden, was sie sagte, rechnen Koordinaten aber nie um, denn kein Wert in dieser API trägt eine Einheit.

Jedes Mal dieselbe Antwort

Die Engine ist deterministisch: Dieselbe Eingabe liefert immer dieselbe Ausgabe. Es gibt keinen Zufall und keine Uhr im Algorithmus.

Das klingt akademisch, ist aber der praktische Grund, darauf aufzubauen. Es bedeutet, dass Ergebnisse gecacht werden können — wenn Sie genau diesen Auftrag schon einmal gefragt haben, können Sie die Antwort bedenkenlos wiederverwenden, statt erneut zu fragen. Es bedeutet außerdem, dass sich die Anbindung testen lässt: Ein Plan kann mit einem als korrekt bekannten Ergebnis verglichen werden, und ein Unterschied ist ein echter Unterschied, kein Rauschen. Software, die einem Kunden am Montag einen Preis nennt, nennt am Freitag denselben Preis.


Drei Engines

Die API bietet die Wahl zwischen dreien — zwei synchronen und einer asynchronen —, und der Unterschied ist keine Frage der Qualität: Er ist ein Kompromiss zwischen Geschwindigkeit und der Frage, ob sich das Ergebnis auf einer Plattensäge schneiden lässt.

  • heuristic ist der Standard und dieselbe Engine, die auch die App verwendet. Sie erzeugt Guillotine-Layouts: höchste Auslastung, jedes Layout auf der Plattensäge schneidbar und immer ein vollständiger Schnittplan. Synchron.
  • balanced ist optional und muss ausdrücklich angefordert werden. Sie nutzt stattdessen freie Verschachtelung, was bei sehr großen Aufträgen dramatisch schneller ist — gemessen rund 25× schneller bei einem Auftrag mit 2.000 Teilen — auf Kosten einer geringfügig niedrigeren Auslastung. Der wichtige Haken: Ihre Layouts lassen sich häufig nicht von Kante zu Kante schneiden, und für diese gibt sie überhaupt keinen Schnittplan zurück. Synchron.
  • max ist optional und nur 2D. Es ist eine serverseitige Baumsuche, die das bewiesene Optimum bei weit mehr Aufträgen erreicht als der Standard, und ihre Layouts lassen sich weiterhin auf einer Plattensäge schneiden. Der Preis ist Zeit: Eine max-Berechnung dauert Sekunden bis zu einer Minute, sie antwortet also nicht in der Response. Stattdessen gibt POST /v1/optimize/2d mit engine: "max" eine Job-ID zurück, und Sie fragen GET /v1/jobs/{id} ab, bis sie fertig ist. Es ist weiterhin deterministisch. Greifen Sie dazu, wenn bei einem großen, wertvollen Auftrag das Warten auf die letzten paar Platten sich lohnt. Sie modelliert ein Bestandsformat in voller Plattengröße mit unbegrenztem Vorrat. Enthält die Anfrage zusätzlich ein zweites Bestandsformat, seitenweisen trim, begrenzten Bestand (respectStock), Materialien oder Faserrichtungsgruppen, wird sie vorab mit einem 400 abgelehnt, das genau benennt, was sie nicht kann — bevor ein Aufruf berechnet wird. Schicken Sie solche Aufträge an heuristic, das alles davon abbildet.

balanced bedeutet nicht „bessere Ergebnisse”. Sie ist schneller und erreicht eine etwas geringere Auslastung, und wenn ihr Layout nicht guillotine-schneidbar ist, gibt es keinen Schnittplan, den man einer Sägebedienung in die Hand geben kann. Wählen Sie sie nur, wenn Geschwindigkeit bei einem sehr großen Auftrag wichtiger ist als ein sägefertiger Plan. Wenn Sie unsicher sind, bleiben Sie beim Standard.


Limits

Jede Anfrage ist begrenzt, damit ein aus dem Ruder gelaufener Auftrag klar fehlschlägt statt hängen zu bleiben:

Limit Wert
Teile pro Anfrage 2.000
Materialzeilen pro Anfrage 50
Größe des Request-Bodys 1 MB
Größe des Anfragerumpfs — nest-Pfade, die eine Zeichnung tragen können 10 MB
Aktive Schlüssel pro Konto 10
Schlüssellose validate-Aufrufe je Adresse 120 / Minute
Gleichzeitig queued/running max-Jobs je Konto 5

Zugang erhalten

Beginnen Sie auf der Engine-API-Seite. Die Engine API wird getrennt von den App-Tarifen abgerechnet, und kein Tarif-Upgrade schaltet sie frei.

  1. Abonnieren oder anfragen. Der Abschluss auf der Engine-API-Seite ist der schnellste Weg — sie läuft mit einer Testphase, und der Zugang landet von selbst auf Ihrem Konto. Möchten Sie Ihre Anbindung lieber vorher beschreiben oder brauchen Sie ein Volumen über dem Standardtarif, nehmen Sie stattdessen Kontakt auf und sagen Sie, was Sie anbinden möchten und wie viele Schnittpläne pro Monat das ungefähr braucht.
  2. Der Zugang wird Ihrem Konto hinzugefügt. Sonst ändert sich an Ihrem Konto nichts.
  3. Legen Sie einen Schlüssel an. Sobald Ihr Konto API-Zugang hat, erscheint in Ihrem Dashboard eine Karte API-Schlüssel. Dort erstellen, benennen und löschen Sie Schlüssel selbst.
  4. Kopieren Sie den Schlüssel sofort. Der vollständige Schlüssel wird genau ein einziges Mal angezeigt, in dem Moment, in dem Sie ihn erstellen.

Ein Schlüssel wird nur ein einziges Mal angezeigt. CutOptim speichert nur einen sha256-Hash davon, nie den Schlüssel selbst — er lässt sich später also nicht wieder auslesen, weder von Ihnen noch von uns. Übertragen Sie ihn beim Erstellen direkt in die Konfiguration Ihrer Software. Wenn Sie einen Schlüssel verlieren, löschen Sie ihn und legen einen neuen an; sollte ein Schlüssel jemals nach außen gelangen, löschen Sie ihn — die Aufrufe funktionieren dann sofort nicht mehr.

Behandeln Sie einen Schlüssel wie ein Passwort: Er gehört in die Konfiguration Ihrer Software, nicht in eine E-Mail, eine Tabelle oder einen Screenshot.

Was die API-Schlüssel-Karte im Dashboard tut

Drei Bedienelemente — und es lohnt sich, genau zu sagen, was jedes bewirkt, besonders das letzte, von dem viele annehmen, es berühre die Abrechnung. Tut es nicht.

  • Schlüssel erstellen. Erzeugt einen neuen Schlüssel und zeigt ihn einmal an, direkt dort. Der Name (ERP-Anbindung, Staging) dient nur dazu, die Schlüssel später auseinanderzuhalten. Bis zu 10 aktive Schlüssel pro Konto.
  • Der Verbrauchsbalken. Zwei Zahlen: der Gesamtverbrauch Ihres Kontos im Kalendermonat gegenüber dem Kontingent, und je Schlüssel, wie viel dieser verbraucht hat. Die Zahl pro Schlüssel beantwortet, welche Anbindung das Kontingent aufbraucht — sie ist kein eigenes Budget.
  • Widerrufen. Setzt genau diesen Schlüssel ab dem nächsten Aufruf außer Kraft. Die Zeile bleibt sichtbar, damit die Historie nicht verloren geht.

Einen Schlüssel zu widerrufen hat nichts mit Ihrem Abo zu tun. Es kündigt nichts, erstattet nichts und gibt kein Kontingent frei — der Tarif läuft weiter und das Kontingent bleibt bestehen, Sie besitzen lediglich diesen einen Schlüssel nicht mehr. Widerrufen Sie, wenn ein Schlüssel offengelegt wurde oder eine Anbindung stillgelegt wird. Um die Abrechnung zu beenden, kündigen Sie stattdessen das Abo; der Zugang läuft dann bis zum Ende des bereits bezahlten Zeitraums, danach funktionieren auch bestehende Schlüssel nicht mehr.

Ein Kontingent für das Konto, nicht eines je Schlüssel

Jeder aktive Schlüssel Ihres Kontos schöpft aus demselben monatlichen Kontingent. Ein zweiter Schlüssel schafft kein zweites Kontingent — Schlüssel gibt es, damit Sie Staging von Produktion trennen, jeder Anbindung ein eigenes Zugangsmittel geben und einen davon widerrufen können, ohne die anderen zu stören.

GET /v1/usage meldet den Stand des Kontos (used, limit, remaining) und beantwortet damit die Frage, die Sie tatsächlich haben — wie viel bleibt, bevor Aufrufe fehlschlagen — unabhängig davon, mit welchem Schlüssel Sie gefragt haben. Ist das Kontingent aufgebraucht, antwortet jeder Schlüssel mit 402, nicht nur der, der es verbraucht hat.


Preis und Kontingent

Die Engine API wird getrennt von den App-Tarifen abgerechnet, mit einer festen Anzahl von Anfragen pro Monat. Der aktuelle Preis, das monatliche Anfragekontingent und die Länge der Testphase stehen alle auf der Engine-API-Seite — diese Seite liest sie aus unserer Preiskonfiguration, es ist also immer die zutreffende Zahl.

Für die technischen Details — die genaue Struktur von Request und Response, jede Option, alle Fehlercodes und wie die Versionierung funktioniert — siehe die API-Referenz.


Was sich dadurch nicht ändert

Das sei ausdrücklich gesagt, denn die Engine API wird leicht als Änderung am Produkt missverstanden:

  • Der Optimierer in der App ist unverändert. Er läuft weiterhin in Ihrem Browser, genau wie bisher.
  • Free, Pro und Werkstatt sind unberührt. Sie enthalten weiterhin den Optimierer in der App, mit denselben Limits wie bisher. Es wurde nichts hinter die API verlegt.
  • Nichts, was Sie in der App tun, verbraucht API-Anfragen. Das monatliche API-Kontingent wird ausschließlich von Aufrufen berührt, die Ihre eigene Software macht.

Die Engine API ist eine Ergänzung für Menschen, die CutOptim in andere Software einbinden. Wenn Sie das nicht sind, hat sich nichts geändert.

FAQ

Brauche ich die Engine API?
Mit sehr großer Wahrscheinlichkeit nicht. Wenn Sie Platten oder Stäbe zuschneiden, indem Sie CutOptim im Browser öffnen, macht die App bereits alles, was die API macht — die API ist dieselbe Engine, nur ohne Bildschirm. Sie existiert für genau eine Situation: Andere Software benötigt Schnittpläne, ohne dass eine Person die App öffnet. Wenn bei Ihnen niemand Software gegen CutOptim schreibt, können Sie sie ignorieren.
Für wen ist die Engine API tatsächlich gedacht?
Für zwei Arten von Kunden: für jemanden, der bereits Software betreibt, in der der Schnittplan eigentlich zu Hause wäre — ein ERP, eine Angebots- oder Auftragserfassungssoftware, die Software einer Maschine —, und für jemanden, der sich solche Software gerade bauen lässt, von einem eigenen Entwickler oder einer Agentur. In beiden Fällen erledigt die Arbeit derjenige, der diese Software schreibt, nicht Sie in der CutOptim-Oberfläche.
Wie erhalte ich Zugang zur Engine API?
Auf der Engine-API-Seite können Sie direkt abschließen — sie läuft mit einer Testphase, und der Zugang landet danach von selbst auf Ihrem Konto. Das ist der schnellste Weg. Möchten Sie Ihre Anbindung lieber vorher beschreiben oder brauchen Sie ein Volumen über dem Standardtarif, nehmen Sie stattdessen Kontakt auf. So oder so erscheint danach in Ihrem Dashboard eine Karte API-Schlüssel, und Sie legen die Schlüssel dort selbst an. Die Engine API wird getrennt von den App-Tarifen abgerechnet, und kein Tarif-Upgrade schaltet sie frei.
Kann die Engine API auch Holz zuschneiden oder nur Platten und Stäbe?
Alle drei Modi, die auch die App hat, Holz eingeschlossen. Der Holz-Endpoint kennt den Querschnitt: Teile und Material führen beide Querschnittsseiten, sodass ein Teil 50×150 nur aus Material 50×150 geschnitten wird. Der Auftrag wird nach Querschnitt aufgeteilt und jeder Abschnitt kommt mit eigenen Stäben und Summen zurück; Bedarf, für dessen Querschnitt gar kein Material vorhanden ist, wird getrennt von Teilen gemeldet, die Material hatten und nicht gepasst haben.
Ändert die Engine API etwas an meinem Free-, Pro- oder Werkstatt-Tarif?
Nein. Die Engine API ist ein separates Zusatzmodul und ändert an den regulären Tarifen nichts. Der Optimierer in der App ist unverändert, läuft weiterhin in Ihrem Browser und ist weiterhin genau wie bisher in Free, Pro und Werkstatt enthalten. Nichts, was Sie in der App tun, verbraucht API-Anfragen.
Gibt es ein SDK oder eine Client-Bibliothek für die Engine API?
Nein. Es gibt kein SDK, keine Client-Bibliothek und kein Plugin — die API ist einfaches HTTPS mit JSON in Request und Response, was sich aus jeder Programmiersprache ohne CutOptim-spezifisches Paket aufrufen lässt. Es gibt außerdem keine Webhooks. Die meisten Aufrufe werden direkt mit dem fertigen Ergebnis beantwortet; die einzige Ausnahme ist die asynchrone Engine max (nur 2D), bei der POST /v1/optimize/2d mit engine "max" eine Job-ID zurückgibt, die Sie mit GET /v1/jobs/{id} abfragen, bis der Plan fertig ist.
Ist die Engine balanced besser als die Standard-Engine?
Nein — sie ist ein Kompromiss, kein Upgrade. Die Standard-Engine heuristic liefert die höchste Auslastung, und jedes Layout, das sie erzeugt, lässt sich auf einer Plattensäge schneiden, deshalb gibt sie immer einen Schnittplan zurück. Die Engine balanced ist bei sehr großen Aufträgen deutlich schneller, erreicht aber eine etwas geringere Auslastung, und ihre Layouts lassen sich häufig nicht von Kante zu Kante schneiden — dann gibt sie überhaupt keinen Schnittplan zurück. Setzen Sie sie nur ein, wenn Geschwindigkeit bei einem großen Auftrag wichtiger ist als ein sägefertiger Plan.
Warum wird mein API-Schlüssel nur ein einziges Mal angezeigt?
Weil CutOptim den Schlüssel selbst nie speichert — nur einen sha256-Hash davon. Damit kann niemand, auch wir nicht, Ihren Schlüssel wieder aus der Datenbank auslesen; er lässt sich also nur in dem Moment anzeigen, in dem er erstellt wird. Übertragen Sie ihn sofort in die Konfiguration Ihrer Software; wenn Sie ihn verlieren, löschen Sie den Schlüssel und legen einen neuen an.
Was passiert, wenn ich einen API-Schlüssel widerrufe — bekomme ich Geld zurück?
Nein, und es kündigt auch nichts. Ein Widerruf setzt genau diesen einen Schlüssel ab dem nächsten Aufruf außer Kraft; Ihr Abo läuft weiter und das monatliche Kontingent bleibt bestehen. Widerrufen Sie einen Schlüssel, wenn er offengelegt wurde oder eine Anbindung stillgelegt wird, und legen Sie einen Ersatz an. Um die Abrechnung zu beenden, kündigen Sie stattdessen das Abo — der Zugang läuft dann bis zum Ende des bereits bezahlten Zeitraums, danach funktionieren auch bestehende Schlüssel nicht mehr.
Bekomme ich mehr Anfragen, wenn ich mehr API-Schlüssel anlege?
Nein. Das monatliche Kontingent gehört zum Konto, und jeder aktive Schlüssel schöpft aus demselben Vorrat — ein zweiter Schlüssel bringt kein zweites Kontingent. Schlüssel gibt es, damit Sie Staging von Produktion trennen, jeder Anbindung ein eigenes Zugangsmittel geben und einen davon widerrufen können, ohne die anderen zu stören. Ist der Vorrat aufgebraucht, antwortet jeder Schlüssel mit 402, nicht nur der, der ihn verbraucht hat. GET /v1/usage meldet den Stand des Kontos, egal mit welchem Schlüssel Sie fragen.
Kann die Engine API eine Zeichnung zurückgeben, nicht nur Koordinaten?
Ja. Fügen Sie einer Optimize-Anfrage include: ["svg","csv","dxf"] hinzu, und die Antwort trägt das Layout als fertige Datei mit, inline im JSON: eine eigenständige 2D-SVG-Zeichnung, ein DXF (R12/AC1009) auf den Layern STOCK/PARTS/LABELS oder eine CSV-Schnittliste. Es gibt keine Speicherung und keinen zweiten Aufruf. SVG nur in 2D; eine 1D- oder Holz-Anfrage liefert stattdessen eine Warnung. Sie können außerdem an jedes Teil oder jede Materialzeile ein meta-Objekt hängen (Ihre ERP-Artikelnummer, Auftragspositions-ID oder Kundenreferenz), und es kommt wortgetreu in der Ausgabe zurück, sodass der Plan mit Ihrem System übereinstimmt. meta ist auch das Feld, mit dem Sie zurücklesen, welche Platte der Optimierer gewählt hat: Schicken Sie Ihr gesamtes Ausgangsmaterial, setzen Sie Ihren Code in stock[].meta, und er kommt auf sheets[].meta zurück, ohne die Platzierung zu beeinflussen. Nehmen Sie zur Kennzeichnung nicht das Feld material — material ist eine harte Trennung, ein Teil wird nur aus Ausgangsmaterial desselben Materials geschnitten. Kennzeichnen Sie also jede stock-Zeile mit einem material und lassen die Teile ungekennzeichnet, kommt jedes Teil als unmatched zurück und das Ergebnis bleibt leer.
Kann ich eine Anfrage prüfen, ohne einen meiner monatlichen Aufrufe zu verbrauchen?
Ja. POST /v1/validate/2d, /v1/validate/1d, /v1/validate/wood oder /v1/validate/nest nimmt denselben Body wie der jeweils passende Optimize-Endpoint entgegen und prüft ihn, ohne zu rechnen — kostenlos, ohne API-Schlüssel und ohne verbrauchtes Kontingent. Eine fehlerhafte Anfrage kommt als 400 zurück und benennt genau das fehlerhafte Feld, eine wohlgeformte liefert valid: true samt Machbarkeitswarnungen (etwa ein Teil, das in kein Ausgangsmaterial passt). Nutzen Sie es, um Ihre Payloads schon während des Aufbaus der Anbindung zu validieren, noch bevor Sie überhaupt einen Schlüssel besitzen.
Was passiert mit einer SVG- oder DXF-Datei, die ich an die API sende?
Es bleibt nichts davon. Die Datei reist als Anfragerumpf, wird im Arbeitsspeicher gelesen, um den Teileumriss zu gewinnen, und ist fort, sobald die Antwort geschrieben ist — keine Kopie auf der Festplatte, keine Kopie in einer Datenbank, kein Logeintrag, der sie enthält, also hinterher nichts zu löschen und keine Aufbewahrungsfrist, nach der man fragen müsste. Das ist dieselbe Zustandslosigkeit, die die übrige API einhält: Auch Ihre Schnittpläne behalten wir nicht länger als die Anfrage, die sie erzeugt hat.

Aktualisiert: 2. September 2026