API de Loader4D
Llame a la optimización de carga desde su propio ERP, WMS o sistema de gestión de transporte. El mismo motor de colocación que funciona en el navegador, detrás de una sola petición HTTP.
Qué puede hacer
Envíe sus espacios y su lista de carga en JSON y reciba el plan de colocación con las coordenadas de cada pieza. Las cargas por eje y los artículos que no se pudieron colocar también vienen en la respuesta.
Una optimización tarda segundos. En un diseño síncrono, una conexión cortada destruye el resultado; aquí vuelve con el identificador del trabajo y lo recoge, de modo que nunca paga dos veces el mismo cálculo.
Los créditos se calculan por tramos, no por pieza. El motor gasta el mismo presupuesto de búsqueda en un envío pequeño que en uno grande, así que cobrar por pieza penalizaría las llamadas pequeñas y haría su factura imposible de prever.
Las claves de prueba devuelven resultados reales y no gastan créditos; están limitadas a 25 llamadas al mes. Pruebe hasta terminar su integración; para pasar a producción solo cambia la clave.
Puntos finales
La autenticación usa una cabecera bearer que lleva su clave. Las claves nunca se aceptan en la cadena de consulta.
Authorization: Bearer l4d_live_...
| Llamada | Qué hace |
|---|---|
| POST /api/v1/pack | Abre un trabajo de colocación; devuelve 202 y un identificador de trabajo. |
| GET /api/v1/jobs/{id} | Devuelve el estado del trabajo y, al terminar, su resultado. |
| GET /api/v1/usage | Devuelve su cuota del periodo y los créditos restantes. |
Petición de ejemplo
Las longitudes son centímetros y los pesos kilogramos. No hay ajuste de unidades por petición; convierta en su lado. Una petición enviada en pulgadas carga un camión diez veces más largo.
POST /api/v1/pack
Authorization: Bearer l4d_test_...
Content-Type: application/json
Idempotency-Key: 7f3c1a9e4b6d4c2f
{
"reference": "SO-2026-4417",
"spaces": [
{ "id": "sp1", "name": "40HC", "type": "container",
"length": 1200, "width": 235, "height": 269,
"max_weight": 26000, "available": 2 }
],
"items": [
{ "id": "A1", "name": "Karton", "length": 120, "width": 100, "height": 40,
"weight": 8, "quantity": 24, "group": "Siparis-1",
"constraints": { "no_tilt": true } },
{ "id": "B1", "name": "Varil", "shape": "cylinder",
"diameter": 58, "length": 88, "weight": 190, "quantity": 12,
"constraints": { "floor_only": true } }
],
"strategy": { "group_items": true, "balance_load": true }
}
La respuesta vuelve de inmediato; para el resultado consulte el identificador del trabajo.
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/ba7189d3b1824da3806ca3ee973b2294
{ "id": "ba7189d3...", "status": "queued", "progress": 0,
"reference": "SO-2026-4417", "credits": 1 }
Cuando el trabajo termina, cada pieza llega con sus coordenadas. El origen es la esquina delantera izquierda inferior del espacio, y el valor dado es esa esquina de la pieza, no su centro.
{ "id": "ba7189d3...", "status": "succeeded", "credits": 1,
"result": {
"summary": { "spaces_used": 1, "pieces_requested": 36,
"pieces_packed": 36, "weight": 2472,
"volume_utilization": 0.7431 },
"spaces": [
{ "space_id": "sp1", "name": "40HC",
"placements": [
{ "item_id": "A1", "sequence": 1,
"x": 0, "y": 0, "z": 0,
"length": 120, "width": 100, "height": 40, "weight": 8 }
],
"axle_loads": [] }
],
"unpacked": []
} }
Créditos y límites
Los créditos se descuentan cuando se acepta el trabajo, no cuando termina. De lo contrario, cien llamadas que llegaran a la vez pasarían todas el control de cuota antes de que se contara una sola.
| Piezas totales en la petición | Créditos |
|---|---|
| 1 – 100 | 1 |
| 101 – 1 000 | 5 |
| 1 001 – 10 000 | 25 |
| 10 001 y más | 100 |
- Como máximo 50 espacios por petición.
- Como máximo 2 000 líneas de carga por petición.
- Como máximo 20 000 piezas en total por petición.
- Como máximo 10 claves activas por equipo.
Estos límites existen para que una sola llamada no ocupe el servicio durante minutos. Si su carga de trabajo necesita más, divídala o escríbanos.
Preguntas frecuentes
¿Con qué lenguaje puedo integrar?
Con cualquier lenguaje capaz de hacer una petición HTTP. También puede descargar nuestro documento OpenAPI 3.0 y generar un cliente tipado en la mayoría de lenguajes; esa es la diferencia entre una integración de horas y una de días.
¿Cómo funciona el precio?
La API forma parte de los planes de pago; las llamadas en producción requieren un paquete de créditos que se renueva cada periodo. Los créditos no usados no se acumulan. Probarla no cuesta créditos: una clave de prueba permite 25 llamadas al mes.
¿Cómo se protegen mis claves?
La clave se muestra una sola vez, al crearla; en la base de datos solo se guarda un resumen cifrado. Las claves pertenecen al equipo y no a una persona, así que su integración sigue funcionando aunque quien la montó deje el equipo. Dé a cada integración su propia clave; así, ante una sospecha de filtración, revoca solo esa y las demás siguen funcionando.
¿Y si envío la misma petición dos veces por error?
Envíe una cabecera Idempotency-Key con un valor que genere por petición lógica. Un reintento con la misma clave y el mismo cuerpo devuelve el trabajo original en lugar de abrir un segundo. La misma clave con un cuerpo distinto se rechaza: devolver en silencio la respuesta anterior le dejaría esperando un trabajo que nunca se encoló.
¿Un trabajo interrumpido continúa donde se quedó?
No, y conviene decirlo con claridad. La búsqueda es un cálculo único y no se guarda estado intermedio; un trabajo fallido se ejecuta desde el principio. Lo que le da el identificador de trabajo no es continuidad, sino que el resultado no se pierda.
¿Puedo ver también los resultados en la interfaz?
Los trabajos abiertos por la API son independientes y no se añaden a su lista de proyectos; el resultado vuelve directamente en la respuesta. Las llamadas a la API gastan créditos y no asientos, así que no afectan a los asientos de los miembros del equipo que usan la interfaz.