Projekt abrufen
Ein Projekt mit Fahrzeugen, Artikeln, Gruppen, Optionen und einer Zusammenfassung des aktuellen Plans (mit PDF-Link, solange es der von einem API-Job gespeicherte Plan ist).
Kostenlos: Es werden keine Credits abgebucht.
Authentifizierung
Pfadparameter
idstringerforderlichProjekt-ID (prj_…).
Beispielanfrage
curl -X GET "https://runner.cargoduo.com/v1/projects/prj_3051" \
-H "Authorization: Bearer $CARGODUO_API_KEY"const res = await fetch("https://runner.cargoduo.com/v1/projects/prj_3051", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
},
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.get(
"https://runner.cargoduo.com/v1/projects/prj_3051",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://runner.cargoduo.com/v1/projects/prj_3051", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("CARGODUO_API_KEY"))
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 {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/projects/prj_3051"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.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"));
var request = new HttpRequestMessage(HttpMethod.Get, "https://runner.cargoduo.com/v1/projects/prj_3051");
var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://runner.cargoduo.com/v1/projects/prj_3051');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CARGODUO_API_KEY'),
],
]);
$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/projects/prj_3051")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
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": "prj_3051",
"object": "project",
"name": "Order 1042",
"status": "calculated",
"item_count": 58,
"vehicle_count": 1,
"app_url": "https://app.cargoduo.com/projects/3051",
"created_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"updated_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"created_at": "2026-10-19T09:10:03Z",
"updated_at": "2026-10-19T09:12:07Z",
"options": {
"packing_mode": "auto",
"group_routing": "none",
"allow_overweight": false
},
"vehicles": [
{
"id": "pv_5120",
"vehicle_id": "standard-trailer-13-6m",
"name": "Standard Trailer (13.6m)",
"type": "trailer",
"quantity": 1,
"length": 1362,
"width": 248,
"height": 270,
"max_weight": 24000
}
],
"items": [
{
"id": "item_88410",
"label": "Euro pallet",
"shape": "box",
"length": 120,
"width": 80,
"height": 140,
"weight": 450,
"quantity": 18,
"stackable": false,
"rotation": "all",
"color": "#3b82f6"
},
{
"id": "item_88411",
"label": "Carton A",
"shape": "box",
"length": 60,
"width": 40,
"height": 40,
"weight": 12,
"quantity": 40,
"stackable": true,
"rotation": "upright",
"color": "#f59e0b"
}
],
"groups": [],
"plan": {
"items_placed": 58,
"items_unplaced": 0,
"vehicles_used": 1,
"total_weight": 8580,
"volume_utilization": 0.3116,
"job_id": "job_4bK9mT2xQe7LpW1zRc8VdN3f",
"pdf_url": "https://app.cargoduo.com/r/Xq7Lm2Vt9KbR4cN8wZp1Hs6Yd3Fg5Jk0Ta2Ue7Wn4Ci"
}
}Antworten
200OKDas Projekt.
NameTypErforderlichBeschreibungidstringstringNeinProjekt-ID (prj_…).
objectstringstringNeinprojectnamestringstringNeinstatusstringstringNeindraft= nie berechnet oder Eingaben ersetzt;calculated= hat einen aktuellen Plan;stale= seit der Erstellung des Plans wurde eine Einstellung geändert.draftcalculatedstaleerroritem_countintegerintegerNeinArtikeleinheiten (Summe der Mengen).
vehicle_countintegerintegerNeinFahrzeuge (Summe der Mengen).
app_urlstringstringNeinÖffnet das Projekt im 3D-Editor der App.
created_byUserRef | nullUserRef | nullNeinDas Mitglied, das es erstellt hat (bei API-Aufrufen: das Mitglied, das den Schlüssel erstellt hat).
null, wenn unbekannt.idstringstringNeinMitglieds-ID (usr_…). Listen filtern Sie mit ?created_by=.
namestringstringNeinupdated_byUserRef | nullUserRef | nullNeinDas Mitglied, das es zuletzt geändert hat.
idstringstringNeinMitglieds-ID (usr_…). Listen filtern Sie mit ?created_by=.
namestringstringNeincreated_atstringstringNeinRFC 3339.
updated_atstringstringNeinRFC 3339.
optionsProjectOptionsProjectOptionsNeinDie Ladeoptionen, die ein Projekt speichert.
packing_modestringstringNeinauto= 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_routingstringstringNeinnone= 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_overweightbooleanbooleanNeinNutzlastgrenzen der Fahrzeuge ignorieren.
StandardfalsevehiclesProjectVehicle[]ProjectVehicle[]NeinidstringstringNeinSlot-ID (pv_…). Ergebnisse der Jobs des Projekts verweisen darauf als vehicle_id. Schreibgeschützt.
vehicle_idstringerforderlichstringJaEine Fahrzeug-ID aus GET /v1/vehicles (vordefiniert oder veh_…).
namestringstringNeinName des gespeicherten Fahrzeugs. Schreibgeschützt.
typestringstringNeinTyp des gespeicherten Fahrzeugs. Schreibgeschützt.
trucktrailerflatbedcontainerpalletaircraftshiplengthnumber · cmnumber · cmNeinDer Wert, mit dem der Slot geplant wird; gesendet, überschreibt er den des gespeicherten Fahrzeugs.
widthnumber · cmnumber · cmNeinDer Wert, mit dem der Slot geplant wird; gesendet, überschreibt er den des gespeicherten Fahrzeugs.
heightnumber · cmnumber · cmNeinDer Wert, mit dem der Slot geplant wird; gesendet, überschreibt er den des gespeicherten Fahrzeugs.
max_weightnumber · kgnumber · kgNeinDer Wert, mit dem der Slot geplant wird; gesendet, überschreibt er den des gespeicherten Fahrzeugs.
quantityintegerintegerNeinWie viele identische Fahrzeuge dieser Definition verfügbar sind.
Standard11–100aux_deckbooleanbooleanNeinDas Fahrzeug hat eine zweite Ladeebene (Doppelstock).
Standardfalseaux_deck_heightnumber · cmnumber · cmNeinHöhe der zweiten Ebene über dem Boden. Erforderlich, wenn
aux_decktrueist.aux_deck_max_weightnumber · kgnumber · kgNeinLastgrenze der zweiten Ebene. Erforderlich, wenn
aux_decktrueist.blocked_areasRect[]Rect[]NeinBodenbereiche, auf denen nichts stehen darf (Radkästen, Schäden, reservierter Platz). Jeder Bereich muss auf dem Fahrzeugboden liegen.
≤ 32 itemsxnumber · cmerforderlichnumber · cmJaAbstand von der Stirnwand zur nahen Kante des Rechtecks.
znumber · cmerforderlichnumber · cmJaAbstand von der rechten Wand (z = 0; rechts, von der Tür aus mit Blick hinein gesehen) zur nahen Kante des Rechtecks.
lengthnumber · cmerforderlichnumber · cmJaAusdehnung entlang x.
widthnumber · cmerforderlichnumber · cmJaAusdehnung entlang z.
tractor_weightFreischaltung nötignumber · kgnumber · kgNeinAchsmodell Sattelzug: Gewicht der Zugmaschine.
empty_trailer_weightFreischaltung nötignumber · kgnumber · kgNeinAchsmodell Sattelzug: Leergewicht des Aufliegers.
front_axle_to_middle_axleFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Vorderachse der Zugmaschine bis Antriebsachse (Mittelachse).
front_axle_to_tractor_cogFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Vorderachse bis Schwerpunkt der Zugmaschine.
front_axle_to_kingpinFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Vorderachse bis Königszapfen (Sattelkupplung).
kingpin_to_rear_axleFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Königszapfen bis Hinterachsgruppe des Aufliegers.
trailer_cog_to_rear_axleFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Schwerpunkt des Aufliegers bis Hinterachsgruppe.
trailer_start_to_kingpinFreischaltung nötignumber · cmnumber · cmNeinAchsmodell Sattelzug: Aufliegervorderkante bis Königszapfen.
max_middle_axle_weightFreischaltung nötignumber · kgnumber · kgNeinAchsmodell Sattelzug: zulässige Last der Antriebsachse (Mittelachse).
max_rear_axle_weightFreischaltung nötignumber · kgnumber · kgNeinAchsmodell Sattelzug: zulässige Last der Hinterachsgruppe.
itemsItem[]Item[]NeinLadung im Item-Format von /v1/pack; IDs sind item_….
idstringstringNeinIhre Kennung, eindeutig innerhalb der Anfrage. Ergebnisse verweisen darauf als item_id. Standard: template_id.
≤ 128 charstemplate_idstringstringNeinEine Vorlagen-ID (tpl_…) aus GET /v1/templates. Liefert alle Artikelfelder; daneben gesendete Felder überschreiben sie.
labelstringstringNeinBezeichnung (Standard: die ID).
≤ 255 charsshapestringstringNeinForm des Artikels.
cylinderunddrumverwendenradius+heightstattlength+width;palletunddrumstehen immer aufrecht.boxcylinderpalletbagdrumStandard"box"lengthnumber · cmnumber · cmNeinLänge. Erforderlich, sofern
shapenichtcylinderoderdrumist.widthnumber · cmnumber · cmNeinBreite. Erforderlich, sofern
shapenichtcylinderoderdrumist.heightnumber · cmerforderlichnumber · cmJaHöhe (die senkrechte Seite, wenn der Artikel wie definiert steht).
radiusnumber · cmnumber · cmNeinRadius. Erforderlich, wenn
shapecylinderoderdrumist.weightnumber · kgerforderlichnumber · kgJaGewicht EINER Einheit.
quantityintegerintegerNeinAnzahl identischer Einheiten.
Standard11–10000stackablebooleanbooleanNeinAndere Artikel dürfen auf diesen gestellt werden.
Standardtruemax_stack_weightnumber · kgnumber · kgNeinMaximales Gewicht, das auf einer Einheit lasten darf. 0 = unbegrenzt.
Standard0rotationstringstringNeinall= jede der sechs Ausrichtungen;upright= darf nur um die senkrechte Achse gedreht werden (diese Seite oben);fixed= wird nie gedreht.alluprightfixedStandard"all"hazardousbooleanbooleanNeinGefahrgut: wird niedrig und getrennt von anderem Gefahrgut platziert.
StandardfalsepriorityintegerintegerNeinLadepriorität. Höher = wird zuerst geladen und bei Platzmangel bevorzugt mitgenommen. 0 = keine.
Standard0groupstringstringNeinName der Gruppe, zu der dieser Artikel gehört (siehe
groupsundoptions.group_routing).colorstringstringNeinAnzeigefarbe als #rrggbb (nur 3D-Ansicht und PDF).
nesting_heightnumber · cmnumber · cmNeinÜberlappung, wenn identische Einheiten ineinander gestapelt werden (verschachtelte Kisten, Eimer).
Standard0groupsGroup[]Group[]NeinnamestringerforderlichstringJaGruppenname, auf den Item.group verweist.
≤ 128 charsorderintegerintegerNeinLadereihenfolge (niedriger = früher geladen). Standard: Position in der Liste.
colorstringstringNeinAnzeigefarbe als #rrggbb.
planProjectPlan | nullProjectPlan | nullNeinDer aktuelle Plan;
null, wenn das Projekt keinen hat.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.
job_idstringstringNeinDer API-Job, von dem dieser Plan stammt, solange ihn seitdem nichts verändert hat. Leer bei einem Plan, der in der App erstellt oder bearbeitet wurde.
pdf_urlstringstringNeinDer PDF-Link dieses Jobs (bis zu dessen expires_at). Sonst leer.
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.
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.
404Not found
project_not_foundproject_not_foundKein Projekt mit dieser ID in Ihrer Organisation.
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
rate_limitedrate_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.