Saltar al contenido principal
PARA DESARROLLADORES

CutOptim Engine API

Un motor de optimización de corte determinista, invocable sobre HTTP: la misma solicitud siempre devuelve el mismo plan de corte — así puedes auditarlo, presupuestar a partir de él, resolver una disputa con él y volver a ejecutar el pedido del año pasado para obtener el plan del año pasado. Es el mismo motor que impulsa CutOptim, con sus tres modos rectangulares (paneles 2D, lineal 1D y madera con emparejamiento por sección transversal), además del anidado de forma real para piezas de polígonos irregulares — POST /v1/optimize/nest, para trabajos de láser, plasma y chorro de agua. Envía piezas y material, y recibe la distribución completa, el plan de corte y el aprovechamiento — listos para integrar en un ERP, una herramienta de presupuestos o el propio software de una máquina.

Ver el benchmark completo → · Medido, no afirmado

Leer la referencia de la API →

Por qué construir sobre él

DETERMINISTA

La misma entrada siempre devuelve la misma salida — sin aleatoriedad, sin reloj en el algoritmo. Puedes cachear los resultados y compararlos en las pruebas.

UN PLAN DE CORTE REAL

No solo rectángulos: la secuencia de corte por guillotina, líneas de corte frente a pasadas de sierra, la longitud serrada y un indicador que te dice si es fabricable en una seccionadora.

PENSADO PARA SECCIONADORAS

Ancho de corte, refilado por lado, tolerancia, modo coste, grupos de veta, número máximo de fases de corte, minimización de giros — las mismas opciones que ofrece la aplicación.

Qué hace la API

Cuatro modos de corte

Una llamada para cada uno: paneles 2D, material lineal 1D, madera con emparejamiento de sección y anidado de forma real de polígonos irregulares — POST /v1/optimize/2d, /1d, /wood y /nest.

Anidado de forma real

POST /v1/optimize/nest empaqueta polígonos arbitrarios (con holes) en tableros fijos, encajando las piezas en las cavidades cóncavas de las demás — 6 tableros donde las mismas piezas por su bounding box necesitan 9. Para láser, plasma y chorro de agua. Incluye zonas de exclusión por tablero (un defecto, una brida).

Consciente del material

Etiqueta las piezas y el stock con un material y el optimizador particiona el trabajo: cada material se corta solo de su propio stock. En todos los modos; se devuelve un resumen por material.

Canteado

Nombra un tipo de canto por borde (2D) y la respuesta totaliza los metros lineales por tipo — por pieza y por pedido. Metadato: nunca mueve una pieza.

Exportación en línea (SVG · DXF · CSV)

Pide include:["svg","csv","dxf"] y la respuesta lleva la distribución como un archivo listo para usar, en línea — un dibujo SVG 2D autónomo, un DXF R12/AC1009 o una lista de corte CSV. Sin almacenamiento, sin una segunda llamada.

Traspaso de metadatos

Adjunta un objeto meta — el número de artículo de tu ERP, el id de línea de pedido, la referencia del cliente — a cualquier pieza o fila de material y vuelve literalmente en cada pieza colocada y cada sheet/rod, para que el plan cuadre con tu sistema.

Validación gratuita

POST /v1/validate/{2d,1d,wood} valida el esquema del mismo cuerpo sin resolver — sin clave, sin cuota. Comprueba que una carga útil no será rechazada y obtén avisos de viabilidad antes de gastar una llamada.

Coste o desperdicio

minimizeCost ordena por la factura total más baja entre los tamaños de stock con precio, mezclando formatos; por defecto se minimiza el material. Ambos ejecutan el mismo algoritmo guillotine.

Prioridad de stock y stock limitado

Marca el stock que se agota primero, trata las cantidades como un tope estricto con respectStock y señala las piezas de corte obligatorio, que ganan sitio en el tablero cuando el material escasea.

Un plan de corte real

No solo rectángulos: la secuencia de corte guillotine con las posiciones de tope por paso, líneas de corte frente a pasadas de sierra, la longitud serrada y un indicador de fabricabilidad en seccionadora.

Parámetros de seccionadora

kerf, refilado por lado, tolerancia, grain groups, maxCutStages y minimización de giros — las mismas opciones que ofrece la aplicación.

Determinista & OpenAPI

La misma entrada siempre devuelve la misma salida — cachéala y compárala. Una versión de motor fijable y un documento OpenAPI 3.1 describen todo el contrato.

Piezas desde archivos CAD

Envía un SVG o un DXF en lugar de coordenadas: parts[].source lee el contorno y sus agujeros del dibujo, y POST /v1/import/nest divide antes un archivo con varias piezas. No se almacena nada — el archivo se procesa en memoria y desaparece con la respuesta.

Qué motor sirve cada modo

El endpoint al que haces POST elige el modo; el parámetro engine elige el algoritmo. El motor heuristic por defecto sirve 2D, 1D y madera; balanced y el motor max asíncrono son solo 2D; y el anidado de forma real se ejecuta en su propio motor lbf. El mismo motor que la aplicación, sobre HTTP.

Modo · endpointMotor · algoritmoPaneles 2D/v1/optimize/2dLineal 1D/v1/optimize/1dMadera · sección transversal/v1/optimize/woodAnidado de forma real/v1/optimize/nestheuristicpor defecto · síncronobalancedopcional · solo 2Dmaxasíncrono · solo 2Dlbfanidado · sparrow planificadoEn 1D y madera, balanced simplemente es un alias de heuristic (la respuesta lo indica).
  • heuristic — El motor por defecto — un empaquetador guillotine multiestrategia. El mayor aprovechamiento, cada distribución es cortable con sierra y siempre devuelve un plan de corte. Sirve 2D, 1D y madera.
  • balanced — Un empaquetador libre MaxRects opcional para 2D. Mucho más rápido en trabajos muy grandes a cambio de un aprovechamiento algo menor, pero sus distribuciones a menudo no pueden cortarse de borde a borde, así que no llevan plan de corte.
  • max — Una búsqueda en árbol asíncrona para 2D. Alcanza el óptimo demostrado en muchos más trabajos, con un tiempo de segundos a un minuto por resolución — envías el trabajo y consultas GET /v1/jobs/{id} para obtener el resultado. Sigue siendo determinista y cortable con sierra.
  • lbf — El motor de anidado de forma real. Empaqueta polígonos irregulares en las cavidades de las demás piezas para láser, plasma y chorro de agua; se planifica una versión sparrow de mayor densidad.

Qué endpoint para cada material: los tableros planos — contrachapado, MDF, vidrio, acrílico, chapa metálica — van a /v1/optimize/2d; barras, tubo, tubería y perfil a /v1/optimize/1d; madera estructural (un 50×150 solo a partir de 50×150) a /v1/optimize/wood; polígonos irregulares para láser, plasma y chorro de agua a /v1/optimize/nest.

Una llamada, un plan completo

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

Devuelve:

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

La estructura completa de la solicitud y la respuesta, todas las opciones, todos los códigos de error y los tres motores:Referencia de la API →

¿Fast o denso? Elige con una sola opción

La opción effort equilibra el tiempo de cálculo frente al aprovechamiento. Aquí está ese compromiso, medido en un trabajo exigente — cada cifra proviene del packer real.

Interruptor effort: aprovechamiento del material vs tiempo de cálculoInterruptor effort: aprovechamiento del material vs tiempo de cálculo. fast: 350 tableros · 76.2% · ≈1.9 s. balanced: 330 tableros · 80.8% · ≈4.8 s. max: reservado — más denso exige búsqueda más lenta. En la mayoría de los trabajos (más pequeños) ambos son idénticos; la diferencia solo se abre en trabajos grandes como este. balanced es el valor predeterminado y nunca es más denso de lo que fast puede alcanzar.Interruptor effort: aprovechamiento del material vs tiempo de cálculoUn trabajo exigente — unas 1550 piezas en un tablero de 2,07 × 5,6 m. Cada cifra medida en el packer real.74%76%78%80%82%84%02 s4 s6 stiempo de cálculo · más rápido →aprovechamiento del material · más denso ↑⇄ el interruptor effort+4,6 pts aprov. · −20 tableros−5,7% material · ≈2,5× más lentofast350 tableros · 76.2% · ≈1.9 s★ balanced · predeterminado330 tableros · 80.8% · ≈4.8 smaxreservadomás denso exigebúsqueda máslenta
En la mayoría de los trabajos (más pequeños) ambos son idénticos; la diferencia solo se abre en trabajos grandes como este. balanced es el valor predeterminado y nunca es más denso de lo que fast puede alcanzar.

Y en cualquier caso es rápido: incluso los trabajos de producción más grandes — 2000 piezas o más — se resuelven en segundos con el motor predeterminado, holgadamente dentro del presupuesto de tiempo de la API.

Precios

€49/mes
10,000 solicitudes / mes — límite fijo, sin excedentes, sin facturas sorpresa
Prueba de 14 días · facturada en EUR · una vez alcanzado el límite, las llamadas devuelven 402 hasta que cambia el mes

Volúmenes mayores. 10,000 solicitudes al mes es el plan estándar, no un techo de lo que podemos ejecutar. Si necesitas más — mayor volumen, claves separadas para staging y producción, o un acuerdo dedicado — dinos tus cifras y lo presupuestamos de forma individual. Cuéntanos tu volumen →

Los planes habituales de CutOptim (Free / Pro / Taller) no tienen relación con la API — el optimizador integrado en la aplicación sigue incluido en ellos. Ver precios de la aplicación →

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.

Recurso descargable
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
Descargar el PDF

Preguntas frecuentes

¿CutOptim tiene una API?
Sí — la API CutOptim Engine expone el mismo motor de corte por HTTP, para un ERP, una herramienta de presupuestos o software de máquina, en los tres modos de la app: paneles 2D, lineal 1D y madera con emparejamiento de sección.
¿Hay una API para corte por láser, plasma o chorro de agua?
Sí — el anidado true-shape de polígonos irregulares es el cuarto modo de la API Engine, POST /v1/optimize/nest. Envías cada pieza como un contorno poligonal (con agujeros opcionales) junto con las chapas de stock; el motor encaja las piezas en los huecos cóncavos de las demás y devuelve la colocación de cada copia, de modo que un trabajo de láser, plasma o chorro de agua anida mucho más apretado que un rectángulo envolvente — en un trabajo representativo de 272 piezas, 6 chapas donde las mismas piezas por caja envolvente necesitan 9. Zonas de exclusión por chapa (un defecto, una brida) y rotación continua vienen incluidas. Funciona hoy a través de la API Engine; la propia app sigue cortando rectángulos.
¿La API Engine es determinista?
Sí. La misma entrada devuelve la misma salida, así que las respuestas son cacheables y comprobables, y la versión del motor se puede fijar para resultados reproducibles.
¿Qué contiene una respuesta de optimización?
El layout completo, un plan de corte de guillotina con posiciones de parada por paso y las métricas (número de tableros, aprovechamiento, líneas de corte, pasadas de sierra, longitud aserrada). El endpoint 2D también devuelve los metros de canteado por tipo, y cada endpoint acepta una etiqueta de material y devuelve un resumen por material. También puedes pedir el layout como SVG, DXF o CSV inline y adjuntar un objeto meta a piezas y stock, que se devuelve tal cual.
¿La API puede darme un dibujo, no solo coordenadas?
Sí. Añade include:["svg","csv","dxf"] a una solicitud de optimización y la respuesta lleva el layout como archivo listo, inline: un dibujo SVG 2D autónomo, un DXF R12/AC1009 o una lista de corte CSV. Sin almacenamiento y sin una segunda llamada. El SVG es solo 2D; una solicitud 1D o de madera devuelve un aviso en su lugar.
¿Puedo adjuntar mis propios ID a las piezas y volver a leerlos?
Sí. Cualquier fila de pieza o stock puede llevar un objeto meta — tu número de artículo ERP, el id de línea de pedido o la referencia de cliente —, y vuelve tal cual en cada pieza colocada y cada tablero o barra, de modo que el plan de corte se concilia con tu propio sistema. Nunca afecta al layout.
¿Puedo comprobar una solicitud sin gastar una llamada?
Sí. POST /v1/validate/2d, /1d o /wood valida por esquema el mismo cuerpo que acepta el endpoint de optimización correspondiente, sin resolver — sin clave y sin cuota. Un 400 nombra el campo exacto erróneo y obtienes avisos de viabilidad (una pieza que no cabe en ningún stock) antes de gastar una llamada real.
¿Hay SDK, webhooks o trabajos asíncronos?
No hay SDK ni webhooks — pero hay una especificación OpenAPI 3.1 a la que puedes apuntar un generador de código para crear un cliente tipado. La mayoría de las llamadas de optimización son HTTP síncrono simple que devuelve el plan terminado directamente. La única excepción es el motor asíncrono max (solo 2D): POST /v1/optimize/2d con engine:"max" devuelve 202 Accepted con un jobId, y consultas GET /v1/jobs/{id} hasta que termina — para cuando alcanzar el óptimo demostrado vale de unos segundos a un minuto de cálculo.
¿Cuáles son los límites de solicitud?
Hasta 2.000 piezas, 50 filas de stock y un cuerpo de solicitud de 1 MB por llamada. Incluso los trabajos más grandes se resuelven en segundos de un dígito, cómodamente dentro del presupuesto de tiempo.
Gestionar claves de API