List projects
Your organization's projects (the app's load plans), newest first, one page at a time.
Free: no credits are charged.
Authentication
Query parameters
limitintegerPage size.
201–100cursorstringnext_cursor of the previous page.
qstringOnly projects whose name contains this text.
created_bystringOnly what this member created: me (the key's creator) or a member id (usr_…).
Example request
curl -X GET "https://runner.cargoduo.com/v1/projects?limit=2&created_by=me" \
-H "Authorization: Bearer $CARGODUO_API_KEY"const res = await fetch("https://runner.cargoduo.com/v1/projects?limit=2&created_by=me", {
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",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
params={
"limit": 2,
"created_by": "me",
},
)
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?limit=2&created_by=me", 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?limit=2&created_by=me"))
.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?limit=2&created_by=me");
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?limit=2&created_by=me');
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?limit=2&created_by=me")
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.bodyExample response
{
"data": [
{
"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"
},
{
"id": "prj_3048",
"object": "project",
"name": "Order 1039",
"status": "draft",
"item_count": 24,
"vehicle_count": 1,
"app_url": "https://app.cargoduo.com/projects/3048",
"created_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"updated_by": {
"id": "usr_7",
"name": "Elif Kaya"
},
"created_at": "2026-10-17T07:12:03Z",
"updated_at": "2026-10-17T07:12:03Z"
}
],
"next_cursor": "prj_3048"
}Responses
200OKOne page of projects.
NameTypeRequiredDescriptiondataProjectSummary[]ProjectSummary[]NoNewest first.
idstringstringNoProject id (prj_…).
objectstringstringNoprojectnamestringstringNostatusstringstringNodraft= never packed or inputs replaced;calculated= has a current plan;stale= a setting changed since the plan was made.draftcalculatedstaleerroritem_countintegerintegerNoItem units (sum of quantities).
vehicle_countintegerintegerNoVehicles (sum of quantities).
app_urlstringstringNoOpens the project in the app's 3D editor.
created_byUserRef | nullUserRef | nullNoThe member who created it (for API calls: the member who created the key).
nullwhen unknown.idstringstringNoMember id (usr_…). Filter lists with ?created_by=.
namestringstringNoupdated_byUserRef | nullUserRef | nullNoThe member who last changed it.
idstringstringNoMember id (usr_…). Filter lists with ?created_by=.
namestringstringNocreated_atstringstringNoRFC 3339.
updated_atstringstringNoRFC 3339.
next_cursorstringstringNoPass as ?cursor= for the next page; empty on the last page.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedMissing, malformed or unknown API key.key_revokedThe key was revoked.key_expiredThe key passed its expiry date.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.
403Forbidden
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_not_allowedThe calling IP is not on the key's allowlist.subscription_inactiveThe organization has no active subscription that includes the API.account_inactiveThe organization is suspended, or has no owner whose account is active.scope_missingThe key lacks a scope this endpoint needs.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.
422Unprocessable entity
validation_failedvalidation_failedThe request is well-formed JSON but describes an invalid job. details[] lists every problem.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.
429Too many requests
rate_limitedrate_limitedToo many requests in the current minute, hour or day (per key or per organization), or more than 60 failed authentications per minute from your IP address.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.
500Internal server error
internal_errorinternal_errorSomething failed on our side.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.
503Service unavailable
api_disabledapi_disabledThe API is temporarily disabled (maintenance) or switched off for the organization.
All error codesNameTypeRequiredDescriptionerrorErrorBodyrequiredErrorBodyYescodestringrequiredstringYesMachine code (snake_case). Branch on this, never on
message.messagestringrequiredstringYesEnglish explanation.
request_idstringrequiredstringYesSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]NoPer-field problems (
validation_failed).pathstringstringNoJSON path of the offending field, e.g. items[3].length.
codestringstringNorequired,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.messagestringstringNoEnglish explanation.