Aller au contenu principal
POUR LES DÉVELOPPEURS

CutOptim Engine API

Un moteur d'optimisation de découpe déterministe, appelable en HTTP : la même requête renvoie toujours le même plan de découpe — vous pouvez donc l'auditer, en tirer un devis, régler un litige avec lui, et relancer la commande de l'an dernier pour retrouver le plan de l'an dernier. C'est le même moteur que celui de CutOptim, sur les trois modes rectangulaires (panneaux 2D, 1D linéaire et bois avec correspondance de section), plus l'imbrication à forme réelle pour les pièces polygonales irrégulières — POST /v1/optimize/nest, pour le laser, le plasma et le jet d'eau. Envoyez les pièces et le stock, récupérez la disposition complète, le plan de découpe et l'utilisation — prêt à intégrer dans un ERP, un outil de devis ou le logiciel propre à une machine.

Voir le benchmark complet → · Mesuré, pas revendiqué

Lire la documentation de l'API →

Pourquoi construire dessus

DÉTERMINISTE

Une même entrée renvoie toujours le même résultat — aucun aléatoire, aucune horloge dans l'algorithme. Vous pouvez mettre les résultats en cache et les comparer dans vos tests.

UN VRAI PLAN DE DÉCOUPE

Pas seulement des rectangles : la séquence de coupes guillotine, les lignes de coupe face aux passes de scie, la longueur sciée, et un indicateur qui dit si le plan est réalisable sur une scie à panneaux.

PENSÉ POUR LA SCIE À PANNEAUX

Trait de scie, délignage par côté, tolérance, mode coût, groupes de grain, nombre maximal de phases de coupe, minimisation des rotations — les mêmes options que celles de l'application.

Ce que fait l'API

Quatre modes de découpe

Un appel pour chacun : panneaux 2D, barres 1D, bois avec correspondance de section, et imbrication à forme réelle de polygones irréguliers — POST /v1/optimize/2d, /1d, /wood et /nest.

Imbrication à forme réelle

POST /v1/optimize/nest place des polygones arbitraires (avec trous) sur des feuilles fixes, en imbriquant les pièces dans les poches concaves les unes des autres — 6 feuilles là où les mêmes pièces en rectangle englobant en exigent 9. Pour le laser, le plasma et le jet d'eau. Avec, en prime, des zones d'exclusion par feuille (un défaut, une bride).

Conscient du matériau

Étiquetez les pièces et le stock avec un material et l'optimiseur partitionne le travail : chaque material n'est découpé que dans son propre stock. Sur chaque mode ; un récapitulatif par material est renvoyé.

Placage de chant

Nommez un type de chant par arête (2D) et la réponse totalise les mètres linéaires par type — par pièce et par commande. Métadonnée : cela ne déplace jamais une pièce.

Export en ligne (SVG · DXF · CSV)

Demandez include:["svg","csv","dxf"] et la réponse porte la disposition sous forme de fichier prêt à l'emploi, en ligne — un dessin SVG 2D autonome, un DXF R12/AC1009 ou une liste de coupe CSV. Aucun stockage, aucun second appel.

Transfert de métadonnées

Attachez un objet meta — votre numéro d'article ERP, un identifiant de ligne de commande, une référence client — à toute pièce ou ligne de stock, et il revient à l'identique sur chaque pièce placée et chaque panneau/barre, pour que le plan se réconcilie avec votre système.

Validation gratuite

POST /v1/validate/{2d,1d,wood} valide le schéma du même corps sans le résoudre — sans clé, sans quota. Vérifiez qu'une charge utile ne sera pas rejetée et obtenez des avertissements de faisabilité avant de dépenser un appel.

Coût ou chute

minimizeCost classe selon la facture totale la plus basse sur les formats de stock tarifés, en les mélangeant ; par défaut, c'est le matériau qui est minimisé. Les deux exécutent le même algorithme guillotine.

Priorité de stock et stock limité

Marquez le stock à épuiser en premier, traitez les quantités comme un plafond strict avec respectStock, et signalez les pièces à découper impérativement, qui gagnent la place sur la plaque quand le matériau manque.

Un vrai plan de découpe

Pas seulement des rectangles : la séquence de coupes guillotine avec les positions de butée par étape, les lignes de coupe face aux passes de scie, la longueur sciée, et un indicateur de faisabilité sur scie à panneaux.

Paramètres de scie à panneaux

kerf, délignage par côté, tolérance, grain groups, maxCutStages et minimisation des rotations — les mêmes options que celles de l'application.

Déterministe & OpenAPI

Une même entrée renvoie toujours le même résultat — mettez-le en cache et comparez-le. Une version de moteur épinglable et un document OpenAPI 3.1 décrivent tout le contrat.

Des pièces depuis des fichiers CAO

Envoyez un SVG ou un DXF au lieu de coordonnées : parts[].source lit le contour et ses trous dans le dessin, et POST /v1/import/nest découpe d'abord un fichier multi-pièces. Rien n'est conservé — le fichier est analysé en mémoire et disparaît avec la réponse.

Quel moteur sert quel mode

L'endpoint que vous appelez en POST choisit le mode ; le paramètre engine choisit l'algorithme. Le moteur heuristic par défaut sert le 2D, le 1D et le bois ; balanced et le moteur asynchrone max sont réservés au 2D ; et l'imbrication à forme réelle tourne sur son propre moteur lbf. Le même moteur que l'application, en HTTP.

Mode · endpointMoteur · algorithmePanneaux 2D/v1/optimize/2d1D linéaire/v1/optimize/1dBois · section/v1/optimize/woodImbrication à forme réelle/v1/optimize/nestheuristicpar défaut · synchronebalancedsur option · 2D uniquementmaxasynchrone · 2D uniquementlbfimbrication · sparrow prévuEn 1D et en bois, balanced est simplement un alias de heuristic (la réponse le précise).
  • heuristic — Le moteur par défaut — un packer guillotine multi-stratégies. Rendement maximal, chaque disposition est sciable, et il renvoie toujours un plan de découpe. Il sert le 2D, le 1D et le bois.
  • balanced — Un free-nester MaxRects en option pour le 2D. Bien plus rapide sur les très gros travaux pour un rendement légèrement moindre, mais ses dispositions ne peuvent souvent pas être sciées de bord à bord, elles ne portent donc aucun plan de découpe.
  • max — Une recherche arborescente asynchrone pour le 2D. Elle atteint l'optimum prouvé sur bien plus de travaux, en quelques secondes à une minute par résolution — vous soumettez le travail et interrogez GET /v1/jobs/{id} pour le résultat. Toujours déterministe et sciable.
  • lbf — Le moteur d'imbrication à forme réelle. Il imbrique des polygones irréguliers dans les poches les uns des autres pour le laser, le plasma et le jet d'eau ; une version sparrow à plus haute densité est prévue.

Quel endpoint pour quel matériau : les panneaux plats — contreplaqué, MDF, verre, acrylique, tôle — vont vers /v1/optimize/2d ; les barres, tubes, tuyaux et profilés vers /v1/optimize/1d ; le bois de structure (un 50×150 uniquement depuis un 50×150) vers /v1/optimize/wood ; les polygones irréguliers pour le laser, le plasma et le jet d'eau vers /v1/optimize/nest.

Un appel, 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éponse renvoyée :

{
  "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
}

Structure complète de la requête et de la réponse, toutes les options, tous les codes d'erreur et les trois moteurs :Documentation de l'API →

Fast ou dense ? Choisissez avec une seule option

L'option effort arbitre entre le temps de calcul et l'utilisation. Voici ce compromis, mesuré sur un travail exigeant — chaque chiffre provient du vrai packer.

Sélecteur effort : utilisation matière vs temps de calculSélecteur effort : utilisation matière vs temps de calcul. fast: 350 panneaux · 76.2% · ≈1.9 s. balanced: 330 panneaux · 80.8% · ≈4.8 s. max: réservé — plus dense = recherche plus lente. Sur la plupart des travaux (plus petits), les deux sont identiques ; l'écart ne se creuse que sur les gros travaux comme celui-ci. balanced est la valeur par défaut et n'est jamais plus dense que ce que fast peut atteindre.Sélecteur effort : utilisation matière vs temps de calculUn travail exigeant — environ 1 550 pièces sur un panneau de 2,07 × 5,6 m. Chaque chiffre mesuré sur le vrai packer.74%76%78%80%82%84%02 s4 s6 stemps de calcul · plus rapide →utilisation matière · plus dense ↑⇄ le sélecteur effort+4,6 pts utilisation · −20 panneaux−5,7 % matière · ≈2,5× plus lentfast350 panneaux · 76.2% · ≈1.9 s★ balanced · par défaut330 panneaux · 80.8% · ≈4.8 smaxréservéplus dense =recherche pluslente
Sur la plupart des travaux (plus petits), les deux sont identiques ; l'écart ne se creuse que sur les gros travaux comme celui-ci. balanced est la valeur par défaut et n'est jamais plus dense que ce que fast peut atteindre.

Et c'est rapide dans tous les cas : même les plus gros travaux de production — 2 000 pièces et plus — se résolvent en quelques secondes avec le moteur par défaut, largement dans le budget de temps de l'API.

Tarifs

€49/mois
10,000 requêtes / mois — plafond strict, aucun dépassement, aucune facture surprise
Essai de 14 jours · facturation en EUR · une fois le plafond atteint, les appels renvoient 402 jusqu'au passage au mois suivant

Volumes plus importants. 10,000 requêtes par mois correspondent à l'offre standard, ce n'est pas un plafond de ce que nous pouvons faire tourner. S'il vous faut davantage — un volume plus élevé, des clés distinctes pour la préproduction et la production, ou un accord dédié —, indiquez-nous vos chiffres et nous tarifons au cas par cas. Indiquez-nous votre volume →

Les offres CutOptim habituelles (Gratuit / Pro / Atelier) n'ont aucun lien avec l'API — l'optimiseur intégré à l'application y reste inclus. Voir les tarifs de l'application →

Solutions by industry

The same engine, positioned for the way one trade cuts. Each page shows the endpoint, a request and a response, and the fields that matter for that material.

Ressource à télécharger
Engine API one-pager

The why, what and how of the CutOptim Engine API on two pages — the three modes, a request and response, determinism and pricing. Print-ready, with a QR back to this page.

PDF2 pagesFree
Télécharger le PDF

Questions fréquentes

CutOptim propose-t-il une API ?
Oui — l’API CutOptim Engine expose le même moteur de coupe via HTTP, pour un ERP, un outil de chiffrage ou un logiciel machine, dans les trois modes de l’application : panneaux 2D, linéaire 1D, et bois avec correspondance de section.
Existe-t-il une API pour la découpe laser, plasma ou jet d’eau ?
Oui — l’imbrication true-shape de polygones irréguliers est le quatrième mode de l’API Engine, POST /v1/optimize/nest. Vous envoyez chaque pièce sous forme de contour polygonal (avec trous optionnels) et les tôles en stock ; le moteur imbrique les pièces dans les poches concaves des autres et renvoie le placement de chaque exemplaire, de sorte qu’un travail laser, plasma ou jet d’eau s’imbrique bien plus serré qu’un rectangle englobant — sur un travail représentatif de 272 pièces, 6 tôles là où les mêmes pièces par boîte englobante en demandent 9. Des zones d’exclusion par tôle (un défaut, une bride) et la rotation continue sont incluses. Elle fonctionne aujourd’hui via l’API Engine ; l’application elle-même découpe toujours des rectangles.
L’API Engine est-elle déterministe ?
Oui. La même entrée renvoie la même sortie, donc les réponses sont cachables et testables, et la version du moteur peut être figée pour des résultats reproductibles.
Que contient une réponse d’optimisation ?
La disposition complète, un plan de coupe guillotine avec positions d’arrêt par étape, et les métriques (nombre de panneaux, rendement, lignes de coupe, passes de scie, longueur sciée). L’endpoint 2D renvoie aussi les mètres de chant par type, et chaque endpoint accepte une étiquette matière et renvoie un récapitulatif par matière. Vous pouvez aussi demander la disposition en SVG, DXF ou CSV inline, et attacher un objet meta aux pièces et au stock, restitué à l’identique.
L’API peut-elle fournir un dessin, pas seulement des coordonnées ?
Oui. Ajoutez include:["svg","csv","dxf"] à une requête d’optimisation et la réponse porte la disposition sous forme de fichier prêt à l’emploi, inline : un dessin SVG 2D autonome, un DXF R12/AC1009 ou une liste de coupe CSV. Aucun stockage et aucun second appel. Le SVG est en 2D uniquement ; une requête 1D ou bois renvoie plutôt un avertissement.
Puis-je attacher mes propres identifiants aux pièces et les relire ?
Oui. Toute ligne de pièce ou de stock peut porter un objet meta — votre numéro d’article ERP, votre identifiant de ligne de commande ou votre référence client —, et il revient à l’identique sur chaque pièce placée et chaque panneau ou barre, de sorte que le plan de coupe se réconcilie avec votre propre système. Il n’affecte jamais la disposition.
Puis-je vérifier une requête sans consommer un appel ?
Oui. POST /v1/validate/2d, /1d ou /wood valide selon le schéma le même corps que l’endpoint d’optimisation correspondant, sans résoudre — sans clé et sans quota. Un 400 nomme le champ exact en erreur, et vous obtenez des avertissements de faisabilité (une pièce qui ne tient dans aucun stock) avant de consommer un appel réel.
Y a-t-il des SDK, des webhooks ou des jobs asynchrones ?
Pas de SDK ni de webhooks — mais une spécification OpenAPI 3.1 est disponible pour générer un client typé. La plupart des appels d’optimisation sont du HTTP synchrone simple qui renvoie directement le plan terminé. La seule exception est le moteur asynchrone max (2D uniquement) : POST /v1/optimize/2d avec engine:"max" renvoie 202 Accepted avec un jobId, et vous interrogez GET /v1/jobs/{id} jusqu’à la fin — lorsque atteindre l’optimum prouvé vaut quelques secondes à une minute de calcul.
Quelles sont les limites de requête ?
Jusqu’à 2 000 pièces, 50 lignes de stock et un corps de requête de 1 Mo par appel. Même les plus gros travaux se résolvent en quelques secondes, largement dans le budget de temps.
Gérer les clés API