Projeyi getir
Araçları, öğeleri, grupları, seçenekleri ve güncel planının özetiyle birlikte bir proje (plan bir API işinin kaydettiği plan olduğu sürece PDF bağlantısı da gelir).
Ücretsiz: kredi harcanmaz.
Kimlik doğrulama
Yol parametreleri
idstringzorunluProje ID'si (prj_…).
Örnek istek
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.bodyÖrnek yanıt
{
"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"
}
}Yanıtlar
200OKProje.
AdTürZorunluAçıklamaidstringstringHayırProje ID'si (prj_…).
objectstringstringHayırprojectnamestringstringHayırstatusstringstringHayırdraft= hiç hesaplanmamış ya da girdileri değiştirilmiş;calculated= güncel bir planı var;stale= plan oluşturulduktan sonra bir ayar değişmiş.draftcalculatedstaleerroritem_countintegerintegerHayırÖğe adedi (quantity değerlerinin toplamı).
vehicle_countintegerintegerHayırAraç sayısı (quantity değerlerinin toplamı).
app_urlstringstringHayırProjeyi uygulamanın 3B düzenleyicisinde açar.
created_byUserRef | nullUserRef | nullHayırProjeyi oluşturan üye (API çağrılarında: anahtarı oluşturan üye). Bilinmiyorsa
null.idstringstringHayırÜye ID'si (usr_…). Listeleri ?created_by= ile filtreleyin.
namestringstringHayırupdated_byUserRef | nullUserRef | nullHayırProjeyi en son değiştiren üye.
idstringstringHayırÜye ID'si (usr_…). Listeleri ?created_by= ile filtreleyin.
namestringstringHayırcreated_atstringstringHayırRFC 3339.
updated_atstringstringHayırRFC 3339.
optionsProjectOptionsProjectOptionsHayırBir projenin sakladığı yükleme seçenekleri.
packing_modestringstringHayırauto= listelenen araçlar dolunca en uygun araçtan yeni kopyalar eklenir (işin araç limitine kadar);fleet_only= yalnızca listelenen araçlar kullanılır, sığmayan her şey yerleştirilemeyenler arasında raporlanır.autofleet_onlyVarsayılan"auto"group_routingstringstringHayırnone= gruplar yalnızca bilgi amaçlıdır;wall= her grup aracın kendine ait bir bölümüne yüklenir;routing= gruplar sırayla yüklenir, sonraki bir grup önceki grubun üstüne ya da yanına gelebilir ama asla altına gelemez (çok duraklı teslimat);no_stack= gruplar sırayla yan yana yüklenir, asla üst üste gelmez.nonewallroutingno_stackVarsayılan"none"allow_overweightbooleanbooleanHayırAraçların taşıma kapasitesi sınırlarını yok say.
VarsayılanfalsevehiclesProjectVehicle[]ProjectVehicle[]HayıridstringstringHayırSlot ID'si (pv_…). Projenin işlerinin sonuçlarında vehicle_id olarak geçer. Salt okunur.
vehicle_idstringzorunlustringEvetGET /v1/vehicles listesinden bir araç ID'si (hazır araç ya da veh_…).
namestringstringHayırKayıtlı aracın adı. Salt okunur.
typestringstringHayırKayıtlı aracın türü. Salt okunur.
trucktrailerflatbedcontainerpalletaircraftshiplengthnumber · cmnumber · cmHayırSlotun planlamada kullandığı değer; gönderilirse kayıtlı aracın değerini geçersiz kılar.
widthnumber · cmnumber · cmHayırSlotun planlamada kullandığı değer; gönderilirse kayıtlı aracın değerini geçersiz kılar.
heightnumber · cmnumber · cmHayırSlotun planlamada kullandığı değer; gönderilirse kayıtlı aracın değerini geçersiz kılar.
max_weightnumber · kgnumber · kgHayırSlotun planlamada kullandığı değer; gönderilirse kayıtlı aracın değerini geçersiz kılar.
quantityintegerintegerHayırBu tanımdan kaç özdeş aracın kullanılabildiği.
Varsayılan11–100aux_deckbooleanbooleanHayırAracın ikinci bir katı var (çift katlı).
Varsayılanfalseaux_deck_heightnumber · cmnumber · cmHayırİkinci katın zeminden yüksekliği.
aux_deckdeğeritrueise zorunludur.aux_deck_max_weightnumber · kgnumber · kgHayırİkinci katın yük sınırı.
aux_deckdeğeritrueise zorunludur.blocked_areasRect[]Rect[]HayırÜzerine hiçbir şey konamayacak zemin bölgeleri (tekerlek davlumbazları, hasarlı yerler, ayrılmış alanlar). Her biri araç zemininin içinde olmalıdır.
≤ 32 itemsxnumber · cmzorunlunumber · cmEvetÖn duvardan dikdörtgenin yakın kenarına uzaklık.
znumber · cmzorunlunumber · cmEvetSağ duvardan (z = 0; kapıdan içeri bakıldığında sağ) dikdörtgenin yakın kenarına uzaklık.
lengthnumber · cmzorunlunumber · cmEvetx ekseni boyunca boyut.
widthnumber · cmzorunlunumber · cmEvetz ekseni boyunca boyut.
tractor_weightErişim gerekirnumber · kgnumber · kgHayırÇekici-dorse aks modeli: çekici kütlesi.
empty_trailer_weightErişim gerekirnumber · kgnumber · kgHayırÇekici-dorse aks modeli: boş dorse kütlesi.
front_axle_to_middle_axleErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: çekicinin ön aksından tahrik (orta) aksına mesafe.
front_axle_to_tractor_cogErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: ön akstan çekicinin ağırlık merkezine mesafe.
front_axle_to_kingpinErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: ön akstan kingpin'e (beşinci teker) mesafe.
kingpin_to_rear_axleErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: kingpin'den dorsenin arka aks grubuna mesafe.
trailer_cog_to_rear_axleErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: dorsenin ağırlık merkezinden arka aks grubuna mesafe.
trailer_start_to_kingpinErişim gerekirnumber · cmnumber · cmHayırÇekici-dorse aks modeli: dorsenin ön ucundan kingpin'e mesafe.
max_middle_axle_weightErişim gerekirnumber · kgnumber · kgHayırÇekici-dorse aks modeli: tahrik (orta) aksı için yasal sınır.
max_rear_axle_weightErişim gerekirnumber · kgnumber · kgHayırÇekici-dorse aks modeli: arka aks grubu için yasal sınır.
itemsItem[]Item[]Hayır/v1/pack Item biçiminde yük; ID'ler item_… şeklindedir.
idstringstringHayırİstek içinde benzersiz, size ait tanımlayıcı. Sonuçlarda item_id olarak geçer. Varsayılan: template_id.
≤ 128 charstemplate_idstringstringHayırBir şablon ID'si (tpl_…); liste için bkz. GET /v1/templates. Öğenin tüm alanlarını sağlar; yanında gönderilen alanlar bunları geçersiz kılar.
labelstringstringHayırGörüntülenen etiket (varsayılan: ID).
≤ 255 charsshapestringstringHayırÖğe şekli.
cylindervedrum,length+widthyerineradius+heightkullanır;palletvedrumher zaman dik durur.boxcylinderpalletbagdrumVarsayılan"box"lengthnumber · cmnumber · cmHayırUzunluk.
shapedeğericylinderya dadrumdeğilse zorunludur.widthnumber · cmnumber · cmHayırGenişlik.
shapedeğericylinderya dadrumdeğilse zorunludur.heightnumber · cmzorunlunumber · cmEvetYükseklik (öğe tanımlandığı gibi dururken dikey kenar).
radiusnumber · cmnumber · cmHayırYarıçap.
shapedeğericylinderya dadrumise zorunludur.weightnumber · kgzorunlunumber · kgEvetTEK bir adedin ağırlığı.
quantityintegerintegerHayırÖzdeş adet sayısı.
Varsayılan11–10000stackablebooleanbooleanHayırBu öğenin üzerine başka öğeler konabilir.
Varsayılantruemax_stack_weightnumber · kgnumber · kgHayırTek bir adedin üzerine binebilecek en fazla ağırlık. 0 = sınırsız.
Varsayılan0rotationstringstringHayırall= altı yönelimden herhangi biri;upright= yalnızca dikey eksen etrafında döndürülebilir (bu taraf yukarı);fixed= hiç döndürülmez.alluprightfixedVarsayılan"all"hazardousbooleanbooleanHayırTehlikeli madde: alt seviyelerde tutulur ve diğer tehlikeli öğelerden ayrı yerleştirilir.
VarsayılanfalsepriorityintegerintegerHayırYükleme önceliği. Yüksek = önce yüklenir ve yer kalmadığında öncelikle korunur. 0 = yok.
Varsayılan0groupstringstringHayırBu öğenin ait olduğu grubun adı (bkz.
groupsveoptions.group_routing).colorstringstringHayır#rrggbb biçiminde görüntüleme rengi (yalnızca 3B görünüm ve PDF için).
nesting_heightnumber · cmnumber · cmHayırÖzdeş adetler istiflendiğinde iç içe geçen yükseklik (iç içe geçen kasalar, kovalar).
Varsayılan0groupsGroup[]Group[]HayırnamestringzorunlustringEvetGrup adı; Item.group bu ada başvurur.
≤ 128 charsorderintegerintegerHayırYükleme sırası (düşük = önce yüklenir). Varsayılan: listedeki konumu.
colorstringstringHayır#rrggbb biçiminde görüntüleme rengi.
planProjectPlan | nullProjectPlan | nullHayırGüncel plan; projenin planı yoksa
null.items_placedintegerintegerHayırYerleştirilen adet.
items_unplacedintegerintegerHayırYerleştirilemeyen adet.
vehicles_usedintegerintegerHayırEn az bir öğe taşıyan araçlar.
total_weightnumber · kgnumber · kgHayırYüklenen ağırlık.
volume_utilizationnumbernumberHayırKullanılan araçların ortalama hacim kullanım oranı, 0–1.
job_idstringstringHayırBu planı oluşturan API işi (plan o zamandan beri değişmediği sürece). Uygulamada oluşturulan ya da düzenlenen planlarda boştur.
pdf_urlstringstringHayırO işin PDF bağlantısı (işin expires_at zamanına kadar). Aksi halde boştur.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedAPI anahtarı eksik, hatalı biçimde ya da tanınmıyor.key_revokedAnahtar iptal edildi.key_expiredAnahtarın geçerlilik süresi doldu.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.
403Forbidden
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_not_allowedİsteği gönderen IP, anahtarın izin listesinde değil.subscription_inactiveOrganizasyonun API'yi içeren etkin bir aboneliği yok.account_inactiveOrganizasyon askıya alınmış ya da hesabı etkin olan bir organizasyon sahibi yok.scope_missingAnahtarda bu endpoint'in gerektirdiği bir yetki eksik.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.
404Not found
project_not_foundproject_not_foundOrganizasyonunuzda bu ID'ye sahip bir proje yok.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.
429Too many requests
rate_limitedrate_limitedGeçerli dakika, saat ya da gün içinde çok fazla istek gönderildi (anahtar ya da organizasyon başına) veya IP adresinizden gelen başarısız kimlik doğrulama denemeleri dakikada 60 sınırını aştı.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.
500Internal server error
internal_errorinternal_errorBizim tarafımızda bir hata oluştu.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.
503Service unavailable
api_disabledapi_disabledAPI geçici olarak devre dışı (bakım) ya da organizasyon için kapatılmış.
Tüm hata kodlarıAdTürZorunluAçıklamaerrorErrorBodyzorunluErrorBodyEvetcodestringzorunlustringEvetMakine tarafından okunabilir kod (snake_case). Hata işleme mantığınızı asla
messagealanına göre değil, bu koda göre kurun.messagestringzorunlustringEvetİngilizce açıklama.
request_idstringzorunlustringEvetX-Request-Id header'ıyla aynı. Destek ekibine başvururken bu değeri iletin.
detailsErrorDetail[]ErrorDetail[]HayırAlan bazında sorunlar (
validation_failed).pathstringstringHayırHatalı alanın JSON yolu, ör. items[3].length.
codestringstringHayırOlası kodlar:
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.messagestringstringHayırİngilizce açıklama.