Loader4D API
Rufen Sie die Ladeoptimierung direkt aus Ihrem eigenen ERP, WMS oder Transportmanagementsystem auf. Dieselbe Packmaschine wie im Browser, hinter einer einzigen HTTP-Anfrage.
Was Sie tun können
Senden Sie Ihre Laderäume und Ihre Ladungsliste als JSON und erhalten Sie den Ladeplan mit den Koordinaten jedes Stücks zurück. Achslasten und nicht platzierbare Positionen stehen ebenfalls in der Antwort.
Eine Optimierung dauert Sekunden. In einem synchronen Entwurf vernichtet eine abgebrochene Verbindung das Ergebnis; hier holen Sie es mit der Auftragskennung wieder ab und zahlen dieselbe Berechnung nie zweimal.
Credits werden in Stufen berechnet, nicht pro Stück. Die Maschine wendet für eine kleine Sendung dasselbe Suchbudget auf wie für eine große; eine Abrechnung pro Stück würde kleine Aufrufe bestrafen und Ihre Rechnung unvorhersehbar machen.
Testschlüssel liefern echte Ergebnisse und verbrauchen keine Credits; sie sind auf 25 Aufrufe pro Monat begrenzt. Testen Sie, bis Ihre Integration steht — für den Live-Betrieb tauschen Sie nur den Schlüssel.
Endpunkte
Die Authentifizierung erfolgt über einen Bearer-Header mit Ihrem Schlüssel. Schlüssel werden niemals in der Adresszeile akzeptiert.
Authorization: Bearer l4d_live_...
| Aufruf | Was er tut |
|---|---|
| POST /api/v1/pack | Öffnet einen Packauftrag; liefert 202 und eine Auftragskennung. |
| GET /api/v1/jobs/{id} | Liefert den Zustand des Auftrags und nach Abschluss das Ergebnis. |
| GET /api/v1/usage | Liefert Ihr Kontingent für die Periode und die verbleibenden Credits. |
Beispielanfrage
Längen sind Zentimeter, Gewichte Kilogramm. Es gibt keine Einheiteneinstellung pro Anfrage; rechnen Sie auf Ihrer Seite um. Eine in Zoll gesendete Anfrage belädt einen zehnmal zu langen Lkw.
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 }
}
Die Antwort kommt sofort; für das Ergebnis fragen Sie die Auftragskennung ab.
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/ba7189d3b1824da3806ca3ee973b2294
{ "id": "ba7189d3...", "status": "queued", "progress": 0,
"reference": "SO-2026-4417", "credits": 1 }
Ist der Auftrag fertig, kommt jedes Stück mit seinen Koordinaten. Der Ursprung ist die vordere linke untere Ecke des Laderaums, und der angegebene Wert ist genau diese Ecke des Stücks, nicht sein Mittelpunkt.
{ "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": []
} }
Credits und Grenzen
Credits werden abgezogen, wenn ein Auftrag angenommen wird, nicht wenn er endet. Sonst kämen hundert gleichzeitig eintreffende Aufrufe alle durch die Kontingentprüfung, bevor auch nur einer gezählt worden wäre.
| Stücke insgesamt in der Anfrage | Credits |
|---|---|
| 1 – 100 | 1 |
| 101 – 1 000 | 5 |
| 1 001 – 10 000 | 25 |
| 10 001 und mehr | 100 |
- Höchstens 50 Laderäume pro Anfrage.
- Höchstens 2 000 Ladungszeilen pro Anfrage.
- Höchstens 20 000 Stücke insgesamt pro Anfrage.
- Höchstens 10 aktive Schlüssel pro Team.
Diese Grenzen sorgen dafür, dass ein einzelner Aufruf den Dienst nicht minutenlang belegen kann. Braucht Ihre Last mehr, teilen Sie sie auf oder schreiben Sie uns.
Häufige Fragen
Mit welcher Sprache kann ich integrieren?
Mit jeder Sprache, die eine HTTP-Anfrage stellen kann. Sie können außerdem unser OpenAPI-3.0-Dokument herunterladen und in den meisten Sprachen einen typisierten Client erzeugen; das ist der Unterschied zwischen einer Integration von Stunden und einer von Tagen.
Wie funktioniert die Abrechnung?
Die API gehört zu den kostenpflichtigen Tarifen; Live-Aufrufe erfordern ein Credit-Paket, das sich jede Periode erneuert. Nicht genutzte Credits verfallen. Zum Ausprobieren braucht es keine Credits: Ein Testschlüssel erlaubt 25 Aufrufe pro Monat.
Wie werden meine Schlüssel geschützt?
Ein Schlüssel wird nur einmal bei der Erstellung angezeigt; in der Datenbank liegt nur ein verschlüsselter Hashwert. Schlüssel gehören dem Team und nicht einer Person, Ihre Integration läuft also weiter, auch wenn die einrichtende Person das Team verlässt. Geben Sie jeder Integration einen eigenen Schlüssel; bei Verdacht auf ein Leck widerrufen Sie dann nur diesen einen und die anderen laufen weiter.
Was, wenn ich dieselbe Anfrage versehentlich zweimal sende?
Senden Sie einen Idempotency-Key-Header mit einem Wert, den Sie je logischer Anfrage erzeugen. Ein Wiederholungsversuch mit demselben Schlüssel und demselben Rumpf liefert den ursprünglichen Auftrag, statt einen zweiten zu öffnen. Derselbe Schlüssel mit einem anderen Rumpf wird abgelehnt: die frühere Antwort stillschweigend zurückzugeben, würde Sie auf Arbeit warten lassen, die nie eingereiht wurde.
Setzt ein abgebrochener Auftrag dort fort, wo er stehen blieb?
Nein, und es ist richtig, das klar zu sagen. Die Suche ist eine einzige Berechnung, ein Zwischenstand wird nicht gespeichert; ein gescheiterter Auftrag läuft von vorn. Die Auftragskennung bringt Ihnen keine Fortsetzung, sondern die Gewissheit, dass das Ergebnis nicht verloren geht.
Sehe ich die Ergebnisse auch in der Oberfläche?
Über die API geöffnete Aufträge sind eigenständig und werden nicht in Ihre Projektliste aufgenommen; das Ergebnis kommt direkt in der Antwort. API-Aufrufe verbrauchen Credits und keine Plätze, sie wirken sich also nicht auf die Plätze der Teammitglieder aus, die die Oberfläche nutzen.