Job erstellen
Validiert die Anfrage, reserviert den Höchstpreis aus Ihren Credits und stellt einen Job in die Warteschlange.
Antwortet mit 202 und dem Job; fragen Sie GET /v1/jobs/{id} ab oder übergeben Sie ?wait=, um die Antwort bis zum Ende des Jobs zurückzuhalten. Validierungsfehler (422) sind kostenlos und erzeugen keinen Job.
Authentifizierung
Query-Parameter
waitintegerWie viele Sekunden die Antwort auf das Ende des Jobs wartet. Rechtzeitig fertig: 200 mit eingebettetem Ergebnis. Sonst: 202.
00–60Header-Parameter
Idempotency-KeystringEin beliebiger eindeutiger String, etwa eine UUID oder Ihre Bestellnummer. Derselbe Schlüssel innerhalb von 24 h liefert den ursprünglichen Job, statt einen neuen anzulegen und abzurechnen.
Body-Parameter
application/jsonreferencestringIhre eigene Referenz (Bestellnummer, Sendungs-ID …). Wird am Job zurückgegeben.
vehiclesVehicle[]erforderlichFahrzeugdefinitionen. Jede darf quantity > 1 haben. Mindestens eine.
idstringIhre Kennung, eindeutig innerhalb der Anfrage. Ergebnisse verweisen darauf als vehicle_id. Standard: vehicle_id.
vehicle_idstringEine Fahrzeug-ID aus GET /v1/vehicles: ein vordefiniertes Fahrzeug oder eines Ihrer Organisation (veh_…). Liefert Typ, Name, Maße, Nutzlast und alle weiteren gespeicherten Werte.
typestringFahrzeugtyp. Erforderlich, wenn vehicle_id fehlt. Nur die in GET /v1/limits aufgeführten Typen (allowed_vehicle_types) werden akzeptiert.
trucktrailerflatbedcontainerpalletaircraftshipnamestringAnzeigename (Standard: Name des gespeicherten Fahrzeugs oder die ID).
lengthnumber · cmInnere Länge des Laderaums, entlang x (von der Stirnwand zur Tür). Erforderlich, wenn vehicle_id fehlt.
widthnumber · cmInnere Breite des Laderaums, entlang z. Erforderlich, wenn vehicle_id fehlt.
heightnumber · cmInnere Höhe des Laderaums, entlang y. Erforderlich, wenn vehicle_id fehlt.
max_weightnumber · kgMaximale Nutzlast. Erforderlich, wenn vehicle_id fehlt.
quantityintegerWie viele identische Fahrzeuge dieser Definition verfügbar sind.
11–100floor_load_capacitynumber · kg/m²Bodenbelastbarkeit: 0 oder mehr (0 = keine Grenze).
aux_deckbooleanDas Fahrzeug hat eine zweite Ladeebene (Doppelstock).
falseaux_deck_heightnumber · cmHöhe der zweiten Ebene über dem Boden. Erforderlich, wenn aux_deck true ist.
aux_deck_max_weightnumber · kgLastgrenze der zweiten Ebene. Erforderlich, wenn aux_deck true ist.
blocked_areasRect[]Bodenbereiche, auf denen nichts stehen darf (Radkästen, Schäden, reservierter Platz). Jeder Bereich muss auf dem Fahrzeugboden liegen.
xnumber · cmerforderlichAbstand von der Stirnwand zur nahen Kante des Rechtecks.
znumber · cmerforderlichAbstand von der rechten Wand (z = 0; rechts, von der Tür aus mit Blick hinein gesehen) zur nahen Kante des Rechtecks.
lengthnumber · cmerforderlichAusdehnung entlang x.
widthnumber · cmerforderlichAusdehnung entlang z.
axle_positionsFreischaltung nötignumber[] · cmPositionen der Achsen (Auflagepunkte), gemessen ab der Vorderkante des Laderaums; negativ = davor. Gleiche Länge wie axle_max_loads. Jeweils zwischen −300 (eine Achse vor dem Laderaum, z. B. die Vorderachse eines Solo-LKW unter dem Fahrerhaus) und der Fahrzeuglänge.
axle_max_loadsFreischaltung nötignumber[] · kgMaximale Last der Ladung pro Achse, in der Reihenfolge von axle_positions. Jeweils größer als 0 und höchstens 100000.
cog_range_xFreischaltung nötignumber · cmZulässige Abweichung des Schwerpunkts von der Mitte der Länge: 0 bis Länge / 2.
cog_range_yFreischaltung nötignumber · cmZulässige Abweichung des Schwerpunkts von der Mitte der Breite: 0 bis Breite / 2.
tractor_weightFreischaltung nötignumber · kgAchsmodell Sattelzug: Gewicht der Zugmaschine.
empty_trailer_weightFreischaltung nötignumber · kgAchsmodell Sattelzug: Leergewicht des Aufliegers.
front_axle_to_middle_axleFreischaltung nötignumber · cmAchsmodell Sattelzug: Vorderachse der Zugmaschine bis Antriebsachse (Mittelachse).
front_axle_to_tractor_cogFreischaltung nötignumber · cmAchsmodell Sattelzug: Vorderachse bis Schwerpunkt der Zugmaschine.
front_axle_to_kingpinFreischaltung nötignumber · cmAchsmodell Sattelzug: Vorderachse bis Königszapfen (Sattelkupplung).
kingpin_to_rear_axleFreischaltung nötignumber · cmAchsmodell Sattelzug: Königszapfen bis Hinterachsgruppe des Aufliegers.
trailer_cog_to_rear_axleFreischaltung nötignumber · cmAchsmodell Sattelzug: Schwerpunkt des Aufliegers bis Hinterachsgruppe.
trailer_start_to_kingpinFreischaltung nötignumber · cmAchsmodell Sattelzug: Aufliegervorderkante bis Königszapfen.
max_middle_axle_weightFreischaltung nötignumber · kgAchsmodell Sattelzug: zulässige Last der Antriebsachse (Mittelachse).
max_rear_axle_weightFreischaltung nötignumber · kgAchsmodell Sattelzug: zulässige Last der Hinterachsgruppe.
itemsItem[]erforderlichArtikeldefinitionen. Jede darf quantity > 1 haben. Mindestens eine.
idstringIhre Kennung, eindeutig innerhalb der Anfrage. Ergebnisse verweisen darauf als item_id. Standard: template_id.
template_idstringEine Vorlagen-ID (tpl_…) aus GET /v1/templates. Liefert alle Artikelfelder; daneben gesendete Felder überschreiben sie.
labelstringBezeichnung (Standard: die ID).
shapestringForm des Artikels. cylinder und drum verwenden radius + height statt length + width; pallet und drum stehen immer aufrecht.
boxcylinderpalletbagdrumStandard "box"lengthnumber · cmLänge. Erforderlich, sofern shape nicht cylinder oder drum ist.
widthnumber · cmBreite. Erforderlich, sofern shape nicht cylinder oder drum ist.
heightnumber · cmerforderlichHöhe (die senkrechte Seite, wenn der Artikel wie definiert steht).
radiusnumber · cmRadius. Erforderlich, wenn shape cylinder oder drum ist.
weightnumber · kgerforderlichGewicht EINER Einheit.
quantityintegerAnzahl identischer Einheiten.
11–10000stackablebooleanAndere Artikel dürfen auf diesen gestellt werden.
truemax_stack_weightnumber · kgMaximales Gewicht, das auf einer Einheit lasten darf. 0 = unbegrenzt.
0rotationstringall = jede der sechs Ausrichtungen; upright = darf nur um die senkrechte Achse gedreht werden (diese Seite oben); fixed = wird nie gedreht.
alluprightfixedStandard "all"hazardousbooleanGefahrgut: wird niedrig und getrennt von anderem Gefahrgut platziert.
falsepriorityintegerLadepriorität. Höher = wird zuerst geladen und bei Platzmangel bevorzugt mitgenommen. 0 = keine.
0groupstringName der Gruppe, zu der dieser Artikel gehört (siehe groups und options.group_routing).
colorstringAnzeigefarbe als #rrggbb (nur 3D-Ansicht und PDF).
nesting_heightnumber · cmÜberlappung, wenn identische Einheiten ineinander gestapelt werden (verschachtelte Kisten, Eimer).
0groupsGroup[]Optionale Gruppen (Kunden, Stopps, Aufträge). Erforderlich für jede Gruppe, die ein Artikel nennt, wenn options.group_routing nicht "none" ist; andernfalls werden Gruppen aus den Gruppennamen der Artikel in der Reihenfolge ihres Auftretens angelegt.
namestringerforderlichGruppenname, auf den Item.group verweist.
orderintegerLadereihenfolge (niedriger = früher geladen). Standard: Position in der Liste.
colorstringAnzeigefarbe als #rrggbb.
optionsOptionsLadeoptionen. Alle Felder sind optional.
packing_modestringauto = sind die angegebenen Fahrzeuge voll, werden weitere Exemplare des am besten geeigneten Fahrzeugs hinzugefügt (bis zum Fahrzeuglimit des Jobs); fleet_only = nur die angegebenen Fahrzeuge werden genutzt, was nicht passt, wird als nicht platziert gemeldet.
autofleet_onlyStandard "auto"group_routingstringnone = Gruppen dienen nur zur Information; wall = jede Gruppe erhält einen eigenen Abschnitt des Fahrzeugs; routing = Gruppen werden der Reihe nach geladen, eine spätere Gruppe darf auf oder neben einer früheren stehen, aber nie darunter (Zustellung mit mehreren Stopps); no_stack = Gruppen werden der Reihe nach nebeneinander geladen, nie übereinander.
nonewallroutingno_stackStandard "none"allow_overweightbooleanNutzlastgrenzen der Fahrzeuge ignorieren.
falsemax_stack_itemsintegerMaximale Anzahl Artikel in einem Stapel. 0 = unbegrenzt.
0max_stack_density_kg_m2number · kg/m²Maximales Stapelgewicht pro Bodenfläche. 0 = unbegrenzt.
0lock_rotationsbooleanDie erste Ausrichtung beibehalten, die in die Fahrzeughöhe passt.
falsegroup_identical_binsbooleanIdentische Fahrzeuge als einen Pool behandeln.
falsetime_limitnumber · sObergrenze der Rechenzeit für den gesamten Job. 0 = automatisch (begrenzt auf max_time_limit_seconds aus GET /v1/limits). Ist das Limit erreicht, wird der bis dahin beste Plan zurückgegeben. Sie zahlen nur die tatsächlich genutzte Rechenzeit.
0enforce_axleFreischaltung nötigbooleanPlatzierungen ablehnen, die eine Achsgruppe überlasten – bei Fahrzeugen, für die alle zehn Felder des Achsmodells angegeben sind.
falseBeispielanfrage
curl -X POST "https://runner.cargoduo.com/v1/pack" \
-H "Authorization: Bearer $CARGODUO_API_KEY" \
-H "Idempotency-Key: order-1042-v1" \
-H "Content-Type: application/json" \
-d '{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}'const res = await fetch("https://runner.cargoduo.com/v1/pack", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
"Idempotency-Key": "order-1042-v1",
"Content-Type": "application/json",
},
body: JSON.stringify({
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}),
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.post(
"https://runner.cargoduo.com/v1/pack",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}", "Idempotency-Key": "order-1042-v1"},
json={
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000,
},
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": False,
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright",
},
],
"options": {
"packing_mode": "auto",
},
},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}`)
req, err := http.NewRequest("POST", "https://runner.cargoduo.com/v1/pack", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("CARGODUO_API_KEY"))
req.Header.Set("Idempotency-Key", "order-1042-v1")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String body = """
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/pack"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.header("Idempotency-Key", "order-1042-v1")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("CARGODUO_API_KEY"));
client.DefaultRequestHeaders.Add("Idempotency-Key", "order-1042-v1");
var json = """
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
""";
var request = new HttpRequestMessage(HttpMethod.Post, "https://runner.cargoduo.com/v1/pack")
{
Content = new StringContent(json, Encoding.UTF8, "application/json"),
};
var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$payload = <<<'JSON'
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
JSON;
$ch = curl_init('https://runner.cargoduo.com/v1/pack');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CARGODUO_API_KEY'),
'Idempotency-Key: order-1042-v1',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), ' ', $response, PHP_EOL;require "net/http"
require "uri"
uri = URI("https://runner.cargoduo.com/v1/pack")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
request["Idempotency-Key"] = "order-1042-v1"
request["Content-Type"] = "application/json"
request.body = <<~'JSON'
{
"reference": "order-1042",
"vehicles": [
{
"id": "trailer",
"type": "trailer",
"name": "13.6 m trailer",
"length": 1360,
"width": 245,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "pallet-eu",
"label": "Euro pallet",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false
},
{
"id": "carton-a",
"label": "Carton A",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"rotation": "upright"
}
],
"options": {
"packing_mode": "auto"
}
}
JSON
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.code, response.bodyBeispielantwort
{
"id": "job_4bK9mT2xQe7LpW1zRc8VdN3f",
"object": "job",
"status": "queued",
"reference": "order-1042",
"source": "api",
"created_at": "2026-10-19T09:12:03Z",
"started_at": null,
"finished_at": null,
"progress": {
"stage": "queued",
"vehicles_done": 0,
"placed_items": 0
},
"summary": {
"items_requested": 58,
"items_placed": 0,
"items_unplaced": 0,
"vehicles_used": 0,
"total_weight": 0,
"volume_utilization": 0,
"queue_ms": 0,
"compute_ms": 0
},
"cost": {
"credits": 0,
"reserved_credits": 1.11,
"rate_card_version": 1,
"breakdown": {
"base": 0,
"vehicles": 0,
"compute": 0,
"large_load": 0
}
},
"error": null,
"warnings": [],
"result_url": "https://runner.cargoduo.com/v1/jobs/job_4bK9mT2xQe7LpW1zRc8VdN3f/result",
"pdf_url": "",
"expires_at": "2026-11-02T09:12:03Z"
}Antworten
200OKJob innerhalb von ?wait abgeschlossen, Ergebnis eingebettet. Auch bei einer idempotenten Wiederholung eines abgeschlossenen Jobs.
NameTypErforderlichBeschreibungidstringerforderlichstringJaJob-ID (job_…).
objectstringerforderlichstringJaImmer
job.jobstatusstringerforderlichstringJaqueued→running→succeeded|failed|canceled.queuedrunningsucceededfailedcanceledreferencestringstringNeinIhre Referenz aus der Anfrage.
sourcestringstringNeinWo der Job angelegt wurde.
apiplaygroundproject_idstringstringNeinDas Projekt (prj_…), in dem ein Job von POST /v1/projects/{id}/pack seinen Plan speichert. Fehlt bei anderen Jobs.
created_atstringerforderlichstringJaZeitstempel nach RFC 3339.
started_atstring | nullstring | nullNeinBeginn der Berechnung (RFC 3339) oder
null.finished_atstring | nullstring | nullNeinEnde des Jobs (RFC 3339) oder
null.progressJobProgressJobProgressNeinLive-Fortschritt, solange der Job wartet oder läuft.
stagestringstringNeinAktuelle Phase, etwa
queued,running,finalizingoderdone. Nur informativ: Werten SieJob.statusaus.vehicles_doneintegerintegerNeinBisher fertig geplante Fahrzeuge.
placed_itemsintegerintegerNeinBisher platzierte Artikeleinheiten.
summaryJobSummaryJobSummaryNeinAnzahlen und Zeiten.
items_requestedintegerintegerNeinArtikeleinheiten insgesamt (Summe der Mengen).
items_placedintegerintegerNeinPlatzierte Einheiten.
items_unplacedintegerintegerNeinEinheiten, die nicht platziert werden konnten.
vehicles_usedintegerintegerNeinFahrzeuge mit mindestens einem Artikel.
total_weightnumber · kgnumber · kgNeinGeladenes Gewicht.
volume_utilizationnumbernumberNeinDurchschnittliche Volumenauslastung der genutzten Fahrzeuge, 0–1.
queue_msintegerintegerNeinWartezeit auf freie Rechenkapazität (wird nicht abgerechnet).
compute_msintegerintegerNeinRechenzeit (wird abgerechnet).
costJobCostJobCostNeinBerechnete Credits (endgültig, sobald der Job beendet ist) und die Reservierung während der Laufzeit.
creditsnumber · creditsnumber · creditsNeinBerechnete Credits (0, bis der Job endet). Fehlgeschlagene Jobs kosten nichts, außer time_limit_exceeded – das wird wie ein abgebrochener Job berechnet.
reserved_creditsnumber · creditsnumber · creditsNeinCredits, die reserviert waren, während der Job wartete oder lief (der Höchstpreis). Werden mit dem Ende des Jobs freigegeben.
rate_card_versionintegerintegerNeinPreisliste, nach der der Job berechnet wird.
breakdownCostBreakdownCostBreakdownNeinAufgeschlüsselter Preis.
basenumber · creditsnumber · creditsNeinJobgebühr.
vehiclesnumber · creditsnumber · creditsNeinPro beladenem Fahrzeug (entfällt bei abgebrochenen Jobs und bei time_limit_exceeded).
computenumber · creditsnumber · creditsNeinPro Rechensekunde, anteilig pro Millisekunde abgerechnet.
large_loadnumber · creditsnumber · creditsNeinZuschlag je angefangene 100 Artikel über der Schwelle für große Ladungen.
errorJobError | nullJobError | nullNeinWarum der Job fehlgeschlagen ist oder abgebrochen wurde; sonst
null.codestringstringNeinMaschinenlesbarer Code (siehe Fehler).
messagestringstringNeinErklärung auf Englisch.
warningsWarning[]Warning[]NeinNicht blockierende Hinweise zur Anfrage (auch im Ergebnis wiederholt).
codestringstringNeinMaschinenlesbarer Code.
messagestringstringNeinErklärung auf Englisch.
result_urlstringstringNeinRufen Sie diese URL per GET ab, um das vollständige Ergebnis zu erhalten, sobald
statusden Wertsucceededhat.pdf_urlstringstringNeinEin Browser-Link, der den Ladeplan als PDF erzeugt (3D-Ansichten + Ladeschritte). Gültig bis expires_at. Danach leer.
expires_atstringstringNeinZeitpunkt, zu dem Anfrage- und Ergebnis-Bodies sowie der PDF-Link gelöscht werden (RFC 3339). Job-Metadaten und Abbuchungen bleiben erhalten.
resultResultResultNeinDas vollständige Ergebnis, nur eingebettet, wenn angefordert (?include=result) oder wenn POST /v1/pack?wait= rechtzeitig fertig wurde.
job_idstringstringNeinDer Job.
vehiclesResultVehicle[]ResultVehicle[]NeinBeladene Fahrzeuge in Ladereihenfolge (leere Fahrzeuge werden weggelassen).
indexintegerintegerNeinPosition im Plan, ab 0.
vehicle_idstringstringNeinID Ihrer Fahrzeugdefinition (bei einem Projekt-Job: die Slot-ID, pv_…).
copyintegerintegerNeinExemplarnummer dieser Definition, ab 1 (quantity > 1 oder im auto-Modus hinzugefügt).
auto_addedbooleanbooleanNeinVon
packing_modeautoüber die angegebenequantityhinaus hinzugefügt.namestringstringNeinFahrzeugname.
typestringstringNeinFahrzeugtyp.
lengthnumber · cmnumber · cmNeinLänge des Laderaums.
widthnumber · cmnumber · cmNeinBreite des Laderaums.
heightnumber · cmnumber · cmNeinHöhe des Laderaums.
max_weightnumber · kgnumber · kgNeinNutzlastgrenze.
items_placedintegerintegerNeinEinheiten in diesem Fahrzeug.
total_weightnumber · kgnumber · kgNeinGewicht in diesem Fahrzeug.
volume_utilizationnumbernumberNeinGenutztes Volumen / Laderaumvolumen, 0–1.
weight_utilizationnumbernumberNeintotal_weight / max_weight, 0–1 (kann mit allow_overweight über 1 liegen).
center_of_gravityPointPointNeinSchwerpunkt der Ladung (cm).
xnumber · cmnumber · cmNeinynumber · cmnumber · cmNeinznumber · cmnumber · cmNeinplacementsPlacement[]Placement[]NeinAlle Einheiten in diesem Fahrzeug.
item_idstringstringNeinID Ihrer Artikeldefinition (bei einem Projekt-Job: die Artikel-ID, item_…).
instanceintegerintegerNeinLaufende Nummer der Einheit innerhalb dieser Artikeldefinition, ab 1 (im ganzen Plan eindeutig).
labelstringstringNeinBezeichnung des Artikels.
xnumber · cmnumber · cmNeinPosition der minimalen Ecke entlang der Länge.
ynumber · cmnumber · cmNeinHöhe der minimalen Ecke über dem Boden.
znumber · cmnumber · cmNeinPosition der minimalen Ecke über die Breite.
lengthnumber · cmnumber · cmNeinAusdehnung entlang x, wie platziert.
widthnumber · cmnumber · cmNeinAusdehnung entlang z, wie platziert.
heightnumber · cmnumber · cmNeinAusdehnung entlang y, wie platziert.
rotatedbooleanbooleanNeinIn einer anderen Ausrichtung als definiert platziert.
orientationstringstringNeinWelche definierte Seite entlang x, z und y liegt:
lwh= wie definiert,wlh= um 90° um die senkrechte Achse gedreht,lhw,hwl,whl,hlw= auf eine Seite gekippt.stepintegerintegerNeinLadeschritt innerhalb des Fahrzeugs, ab 1 (in aufsteigender Reihenfolge laden).
weightnumber · kgnumber · kgNeinGewicht pro Einheit.
axle_loadsFreischaltung nötigAxleLoad[]AxleLoad[]NeinLast pro Achse (nur bei Fahrzeugen mit Achsdaten).
namestringstringNeinAxle 1,Axle 2… in der Reihenfolge vonaxle_positions.positionnumber · cmnumber · cmNeinAchsposition, gemessen ab der Vorderkante des Laderaums.
loadnumber · kgnumber · kgNeinLast der Ladung auf dieser Achse.
maxnumber · kgnumber · kgNeinKonfiguriertes Maximum (0 = keines).
okbooleanbooleanNeinload≤max(ohne Maximum immertrue).unplacedUnplacedItem[]UnplacedItem[]NeinEinheiten, die nicht platziert werden konnten, mit Grund.
item_idstringstringNeinID Ihrer Artikeldefinition.
instanceintegerintegerNeinNummer der Einheit, ab 1.
labelstringstringNeinBezeichnung des Artikels.
reasonstringstringNeinWarum die Einheit nicht platziert werden konnte.
warningsWarning[]Warning[]NeinHinweise zum Plan.
codestringstringNeinMaschinenlesbarer Code.
messagestringstringNeinErklärung auf Englisch.
pdf_urlstringstringNeinBrowser-Link, der den Plan als PDF erzeugt.
expires_atstringstringNeinZeitpunkt, zu dem dieses Ergebnis gelöscht wird (RFC 3339).
202AcceptedJob angenommen (wartend oder laufend).
NameTypErforderlichBeschreibungidstringerforderlichstringJaJob-ID (job_…).
objectstringerforderlichstringJaImmer
job.jobstatusstringerforderlichstringJaqueued→running→succeeded|failed|canceled.queuedrunningsucceededfailedcanceledreferencestringstringNeinIhre Referenz aus der Anfrage.
sourcestringstringNeinWo der Job angelegt wurde.
apiplaygroundproject_idstringstringNeinDas Projekt (prj_…), in dem ein Job von POST /v1/projects/{id}/pack seinen Plan speichert. Fehlt bei anderen Jobs.
created_atstringerforderlichstringJaZeitstempel nach RFC 3339.
started_atstring | nullstring | nullNeinBeginn der Berechnung (RFC 3339) oder
null.finished_atstring | nullstring | nullNeinEnde des Jobs (RFC 3339) oder
null.progressJobProgressJobProgressNeinLive-Fortschritt, solange der Job wartet oder läuft.
stagestringstringNeinAktuelle Phase, etwa
queued,running,finalizingoderdone. Nur informativ: Werten SieJob.statusaus.vehicles_doneintegerintegerNeinBisher fertig geplante Fahrzeuge.
placed_itemsintegerintegerNeinBisher platzierte Artikeleinheiten.
summaryJobSummaryJobSummaryNeinAnzahlen und Zeiten.
items_requestedintegerintegerNeinArtikeleinheiten insgesamt (Summe der Mengen).
items_placedintegerintegerNeinPlatzierte Einheiten.
items_unplacedintegerintegerNeinEinheiten, die nicht platziert werden konnten.
vehicles_usedintegerintegerNeinFahrzeuge mit mindestens einem Artikel.
total_weightnumber · kgnumber · kgNeinGeladenes Gewicht.
volume_utilizationnumbernumberNeinDurchschnittliche Volumenauslastung der genutzten Fahrzeuge, 0–1.
queue_msintegerintegerNeinWartezeit auf freie Rechenkapazität (wird nicht abgerechnet).
compute_msintegerintegerNeinRechenzeit (wird abgerechnet).
costJobCostJobCostNeinBerechnete Credits (endgültig, sobald der Job beendet ist) und die Reservierung während der Laufzeit.
creditsnumber · creditsnumber · creditsNeinBerechnete Credits (0, bis der Job endet). Fehlgeschlagene Jobs kosten nichts, außer time_limit_exceeded – das wird wie ein abgebrochener Job berechnet.
reserved_creditsnumber · creditsnumber · creditsNeinCredits, die reserviert waren, während der Job wartete oder lief (der Höchstpreis). Werden mit dem Ende des Jobs freigegeben.
rate_card_versionintegerintegerNeinPreisliste, nach der der Job berechnet wird.
breakdownCostBreakdownCostBreakdownNeinAufgeschlüsselter Preis.
basenumber · creditsnumber · creditsNeinJobgebühr.
vehiclesnumber · creditsnumber · creditsNeinPro beladenem Fahrzeug (entfällt bei abgebrochenen Jobs und bei time_limit_exceeded).
computenumber · creditsnumber · creditsNeinPro Rechensekunde, anteilig pro Millisekunde abgerechnet.
large_loadnumber · creditsnumber · creditsNeinZuschlag je angefangene 100 Artikel über der Schwelle für große Ladungen.
errorJobError | nullJobError | nullNeinWarum der Job fehlgeschlagen ist oder abgebrochen wurde; sonst
null.codestringstringNeinMaschinenlesbarer Code (siehe Fehler).
messagestringstringNeinErklärung auf Englisch.
warningsWarning[]Warning[]NeinNicht blockierende Hinweise zur Anfrage (auch im Ergebnis wiederholt).
codestringstringNeinMaschinenlesbarer Code.
messagestringstringNeinErklärung auf Englisch.
result_urlstringstringNeinRufen Sie diese URL per GET ab, um das vollständige Ergebnis zu erhalten, sobald
statusden Wertsucceededhat.pdf_urlstringstringNeinEin Browser-Link, der den Ladeplan als PDF erzeugt (3D-Ansichten + Ladeschritte). Gültig bis expires_at. Danach leer.
expires_atstringstringNeinZeitpunkt, zu dem Anfrage- und Ergebnis-Bodies sowie der PDF-Link gelöscht werden (RFC 3339). Job-Metadaten und Abbuchungen bleiben erhalten.
resultResultResultNeinDas vollständige Ergebnis, nur eingebettet, wenn angefordert (?include=result) oder wenn POST /v1/pack?wait= rechtzeitig fertig wurde.
job_idstringstringNeinDer Job.
vehiclesResultVehicle[]ResultVehicle[]NeinBeladene Fahrzeuge in Ladereihenfolge (leere Fahrzeuge werden weggelassen).
indexintegerintegerNeinPosition im Plan, ab 0.
vehicle_idstringstringNeinID Ihrer Fahrzeugdefinition (bei einem Projekt-Job: die Slot-ID, pv_…).
copyintegerintegerNeinExemplarnummer dieser Definition, ab 1 (quantity > 1 oder im auto-Modus hinzugefügt).
auto_addedbooleanbooleanNeinVon
packing_modeautoüber die angegebenequantityhinaus hinzugefügt.namestringstringNeinFahrzeugname.
typestringstringNeinFahrzeugtyp.
lengthnumber · cmnumber · cmNeinLänge des Laderaums.
widthnumber · cmnumber · cmNeinBreite des Laderaums.
heightnumber · cmnumber · cmNeinHöhe des Laderaums.
max_weightnumber · kgnumber · kgNeinNutzlastgrenze.
items_placedintegerintegerNeinEinheiten in diesem Fahrzeug.
total_weightnumber · kgnumber · kgNeinGewicht in diesem Fahrzeug.
volume_utilizationnumbernumberNeinGenutztes Volumen / Laderaumvolumen, 0–1.
weight_utilizationnumbernumberNeintotal_weight / max_weight, 0–1 (kann mit allow_overweight über 1 liegen).
center_of_gravityPointPointNeinSchwerpunkt der Ladung (cm).
xnumber · cmnumber · cmNeinynumber · cmnumber · cmNeinznumber · cmnumber · cmNeinplacementsPlacement[]Placement[]NeinAlle Einheiten in diesem Fahrzeug.
item_idstringstringNeinID Ihrer Artikeldefinition (bei einem Projekt-Job: die Artikel-ID, item_…).
instanceintegerintegerNeinLaufende Nummer der Einheit innerhalb dieser Artikeldefinition, ab 1 (im ganzen Plan eindeutig).
labelstringstringNeinBezeichnung des Artikels.
xnumber · cmnumber · cmNeinPosition der minimalen Ecke entlang der Länge.
ynumber · cmnumber · cmNeinHöhe der minimalen Ecke über dem Boden.
znumber · cmnumber · cmNeinPosition der minimalen Ecke über die Breite.
lengthnumber · cmnumber · cmNeinAusdehnung entlang x, wie platziert.
widthnumber · cmnumber · cmNeinAusdehnung entlang z, wie platziert.
heightnumber · cmnumber · cmNeinAusdehnung entlang y, wie platziert.
rotatedbooleanbooleanNeinIn einer anderen Ausrichtung als definiert platziert.
orientationstringstringNeinWelche definierte Seite entlang x, z und y liegt:
lwh= wie definiert,wlh= um 90° um die senkrechte Achse gedreht,lhw,hwl,whl,hlw= auf eine Seite gekippt.stepintegerintegerNeinLadeschritt innerhalb des Fahrzeugs, ab 1 (in aufsteigender Reihenfolge laden).
weightnumber · kgnumber · kgNeinGewicht pro Einheit.
axle_loadsFreischaltung nötigAxleLoad[]AxleLoad[]NeinLast pro Achse (nur bei Fahrzeugen mit Achsdaten).
namestringstringNeinAxle 1,Axle 2… in der Reihenfolge vonaxle_positions.positionnumber · cmnumber · cmNeinAchsposition, gemessen ab der Vorderkante des Laderaums.
loadnumber · kgnumber · kgNeinLast der Ladung auf dieser Achse.
maxnumber · kgnumber · kgNeinKonfiguriertes Maximum (0 = keines).
okbooleanbooleanNeinload≤max(ohne Maximum immertrue).unplacedUnplacedItem[]UnplacedItem[]NeinEinheiten, die nicht platziert werden konnten, mit Grund.
item_idstringstringNeinID Ihrer Artikeldefinition.
instanceintegerintegerNeinNummer der Einheit, ab 1.
labelstringstringNeinBezeichnung des Artikels.
reasonstringstringNeinWarum die Einheit nicht platziert werden konnte.
warningsWarning[]Warning[]NeinHinweise zum Plan.
codestringstringNeinMaschinenlesbarer Code.
messagestringstringNeinErklärung auf Englisch.
pdf_urlstringstringNeinBrowser-Link, der den Plan als PDF erzeugt.
expires_atstringstringNeinZeitpunkt, zu dem dieses Ergebnis gelöscht wird (RFC 3339).
400Bad request
invalid_jsonidempotency_key_invalidinvalid_jsonDer Body ist kein gültiges JSON, oder ein Feld hat den falschen Typ.idempotency_key_invalidDer Header Idempotency-Key ist länger als 128 Zeichen.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedAPI-Schlüssel fehlt, ist fehlerhaft oder unbekannt.key_revokedDer Schlüssel wurde widerrufen.key_expiredDer Schlüssel ist abgelaufen.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
402Payment required
insufficient_creditsinsufficient_creditsDie verfügbaren Credits decken nicht einmal den günstigsten möglichen Lauf dieses Jobs.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
403Forbidden
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_not_allowedDie aufrufende IP-Adresse steht nicht auf der Allowlist des Schlüssels.subscription_inactiveDie Organisation hat kein aktives Abonnement, das die API enthält.account_inactiveDie Organisation ist gesperrt oder hat keinen Inhaber mit aktivem Konto.scope_missingDem Schlüssel fehlt eine Berechtigung, die dieser Endpoint benötigt.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
413Payload too large
payload_too_largepayload_too_largeDer Anfrage-Body ist größer als 10 MB.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
422Unprocessable entity
validation_failedvalidation_failedDie Anfrage ist wohlgeformtes JSON, beschreibt aber einen ungültigen Job. details[] listet alle Probleme auf.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
429Too many requests
too_many_jobsrate_limitedtoo_many_jobsDie Organisation hat bereits die maximale Zahl wartender und laufender Jobs.rate_limitedZu viele Anfragen in der aktuellen Minute, Stunde oder am aktuellen Tag (pro Schlüssel oder pro Organisation) oder mehr als 60 fehlgeschlagene Authentifizierungen pro Minute von Ihrer IP-Adresse.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
500Internal server error
internal_errorinternal_errorAuf unserer Seite ist ein Fehler aufgetreten.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.
503Service unavailable
api_disabledapi_disabledDie API ist vorübergehend deaktiviert (Wartung) oder für die Organisation abgeschaltet.
Alle FehlercodesNameTypErforderlichBeschreibungerrorErrorBodyerforderlichErrorBodyJacodestringerforderlichstringJaMaschinenlesbarer Code (snake_case). Werten Sie diesen Code aus, nie
message.messagestringerforderlichstringJaErklärung auf Englisch.
request_idstringerforderlichstringJaIdentisch mit dem Header X-Request-Id. Geben Sie diesen Wert an, wenn Sie sich an den Support wenden.
detailsErrorDetail[]ErrorDetail[]NeinProbleme pro Feld (
validation_failed).pathstringstringNeinJSON-Pfad des fehlerhaften Felds, z. B. items[3].length.
codestringstringNeinMögliche Codes:
required,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNeinErklärung auf Englisch.