Create a packing job
Validates the request, reserves the worst-case price from your credits and queues a job.
Answers 202 with the job; poll GET /v1/jobs/{id}, or pass ?wait= to hold the response until it ends. Validation failures (422) are free and create no job.
認証
クエリパラメーター
waitintegerSeconds to hold the response for the job to finish. Finished in time: 200 with the result inlined. Otherwise: 202.
00–60ヘッダーパラメーター
Idempotency-KeystringAny unique string, such as a UUID or your order id. The same key within 24 h returns the original job instead of creating and charging a new one.
ボディパラメーター
application/jsonreferencestringYour own reference (order number, shipment id…). Echoed back on the job.
vehiclesVehicle[]必須Vehicle definitions. Each one may have quantity > 1. At least one.
idstringYour identifier, unique within the request. Results refer to it as vehicle_id. Defaults to vehicle_id.
vehicle_idstringA vehicle id from GET /v1/vehicles: a preset or one of your organization's vehicles (veh_…). Supplies type, name, dimensions, payload and every other saved value.
typestringVehicle type. Required unless vehicle_id is given. Only the types listed in GET /v1/limits (allowed_vehicle_types) are accepted.
trucktrailerflatbedcontainerpalletaircraftshipnamestringDisplay name (defaults to the saved vehicle's name or the id).
lengthnumber · cmInternal cargo-space length, along x (from the front wall toward the door). Required unless vehicle_id is given.
widthnumber · cmInternal cargo-space width, along z. Required unless vehicle_id is given.
heightnumber · cmInternal cargo-space height, along y. Required unless vehicle_id is given.
max_weightnumber · kgMaximum payload. Required unless vehicle_id is given.
quantityintegerHow many identical vehicles of this definition are available.
11–100floor_load_capacitynumber · kg/m²Floor load capacity: 0 or more (0 = no limit).
aux_deckbooleanThe vehicle has a second deck (double-decker).
falseaux_deck_heightnumber · cmSecond deck height above the floor. Required when aux_deck is true.
aux_deck_max_weightnumber · kgLoad limit of the second deck. Required when aux_deck is true.
blocked_areasRect[]Floor zones nothing may stand on (wheel arches, damage, reserved space). Each must lie on the vehicle floor.
xnumber · cm必須Distance from the front wall to the rectangle's near edge.
znumber · cm必須Distance from the right wall (z = 0; right as seen from the door looking in) to the rectangle's near edge.
lengthnumber · cm必須Extent along x.
widthnumber · cm必須Extent along z.
axle_positions利用申請が必要number[] · cmAxle (support point) positions measured from the front of the cargo area; negative = in front of it. Same length as axle_max_loads. Each between −300 (an axle ahead of the cargo area, e.g. a rigid truck's front axle under the cab) and the vehicle length.
axle_max_loads利用申請が必要number[] · kgMaximum cargo load per axle, in the order of axle_positions. Each greater than 0 and at most 100000.
cog_range_x利用申請が必要number · cmAllowed centre-of-gravity deviation from the middle of the length: 0 to length / 2.
cog_range_y利用申請が必要number · cmAllowed centre-of-gravity deviation from the middle of the width: 0 to width / 2.
tractor_weight利用申請が必要number · kgSemi-trailer axle model: tractor unit mass.
empty_trailer_weight利用申請が必要number · kgSemi-trailer axle model: unladen trailer mass.
front_axle_to_middle_axle利用申請が必要number · cmSemi-trailer axle model: tractor front axle to drive (middle) axle.
front_axle_to_tractor_cog利用申請が必要number · cmSemi-trailer axle model: front axle to tractor centre of gravity.
front_axle_to_kingpin利用申請が必要number · cmSemi-trailer axle model: front axle to kingpin (fifth wheel).
kingpin_to_rear_axle利用申請が必要number · cmSemi-trailer axle model: kingpin to trailer rear axle group.
trailer_cog_to_rear_axle利用申請が必要number · cmSemi-trailer axle model: trailer centre of gravity to rear axle group.
trailer_start_to_kingpin利用申請が必要number · cmSemi-trailer axle model: trailer front to kingpin.
max_middle_axle_weight利用申請が必要number · kgSemi-trailer axle model: legal drive (middle) axle limit.
max_rear_axle_weight利用申請が必要number · kgSemi-trailer axle model: legal rear axle group limit.
itemsItem[]必須Item definitions. Each one may have quantity > 1. At least one.
idstringYour identifier, unique within the request. Results refer to it as item_id. Defaults to template_id.
template_idstringA template id (tpl_…) from GET /v1/templates. Supplies every item field; fields sent next to it override them.
labelstringDisplay label (defaults to the id).
shapestringItem shape. cylinder and drum use radius + height instead of length + width; pallet and drum always stay upright.
boxcylinderpalletbagdrumデフォルト "box"lengthnumber · cmLength. Required unless shape is cylinder or drum.
widthnumber · cmWidth. Required unless shape is cylinder or drum.
heightnumber · cm必須Height (the vertical side when the item stands as defined).
radiusnumber · cmRadius. Required when shape is cylinder or drum.
weightnumber · kg必須Weight of ONE unit.
quantityintegerNumber of identical units.
11–10000stackablebooleanOther items may be placed on top of this one.
truemax_stack_weightnumber · kgMaximum weight that may rest on one unit. 0 = unlimited.
0rotationstringall = any of the six orientations; upright = may only turn around the vertical axis (this side up); fixed = never rotated.
alluprightfixedデフォルト "all"hazardousbooleanDangerous goods: kept low and separated from other hazardous items.
falsepriorityintegerLoad priority. Higher = loaded first and kept when space runs out. 0 = none.
0groupstringName of the group this item belongs to (see groups and options.group_routing).
colorstringDisplay colour as #rrggbb (viewer and PDF only).
nesting_heightnumber · cmTelescoping overlap when identical units stack (nested crates, buckets).
0groupsGroup[]Optional groups (customers, stops, orders). Required for every group an item names when options.group_routing is not "none"; otherwise groups are created from the item group names in order of appearance.
namestring必須Group name, referenced by Item.group.
orderintegerLoading order (lower = loaded first). Defaults to the position in the list.
colorstringDisplay colour as #rrggbb.
optionsOptionsPacking options. Every field is optional.
packing_modestringauto = when the listed vehicles are full, more copies of the most suitable vehicle are added (up to the job's vehicle limit); fleet_only = only the listed vehicles are used, anything that does not fit is reported as unplaced.
autofleet_onlyデフォルト "auto"group_routingstringnone = groups are informational; wall = each group gets its own section of the vehicle; routing = groups load in order and a later group may sit on or beside an earlier one but never below it (multi-stop delivery); no_stack = groups load in order side by side, never on top of each other.
nonewallroutingno_stackデフォルト "none"allow_overweightbooleanIgnore vehicle payload limits.
falsemax_stack_itemsintegerMaximum items in one stack. 0 = unlimited.
0max_stack_density_kg_m2number · kg/m²Maximum stack weight per floor area. 0 = unlimited.
0lock_rotationsbooleanKeep the first orientation that fits the vehicle height.
falsegroup_identical_binsbooleanTreat identical vehicles as one pool.
falsetime_limitnumber · sUpper bound on compute time for the whole job. 0 = automatic (capped at max_time_limit_seconds from GET /v1/limits). When the limit is reached the best plan found so far is returned. You pay only for the compute time actually used.
0enforce_axle利用申請が必要booleanReject placements that overload an axle group, on vehicles that carry all ten axle-model fields.
falseリクエストの例
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.bodyレスポンスの例
{
"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"
}レスポンス
200OKJob finished within ?wait, result inlined. Also an idempotent replay of a finished job.
名前型必須説明idstring必須stringはいJob id (job_…).
objectstring必須stringはいAlways
job.jobstatusstring必須stringはいqueued→running→succeeded|failed|canceled.queuedrunningsucceededfailedcanceledreferencestringstringいいえYour reference from the request.
sourcestringstringいいえWhere the job was created.
apiplaygroundproject_idstringstringいいえThe project (prj_…) a POST /v1/projects/{id}/pack job saves its plan into. Absent on other jobs.
created_atstring必須stringはいRFC 3339 timestamp.
started_atstring | nullstring | nullいいえWhen computing started (RFC 3339) or
null.finished_atstring | nullstring | nullいいえWhen the job ended (RFC 3339) or
null.progressJobProgressJobProgressいいえLive progress while queued/running.
stagestringstringいいえCurrent stage, such as
queued,running,finalizingordone. Informational: branch onJob.status.vehicles_doneintegerintegerいいえVehicles packed so far.
placed_itemsintegerintegerいいえItem units placed so far.
summaryJobSummaryJobSummaryいいえCounts and timings.
items_requestedintegerintegerいいえTotal item units (sum of quantities).
items_placedintegerintegerいいえUnits placed.
items_unplacedintegerintegerいいえUnits that could not be placed.
vehicles_usedintegerintegerいいえVehicles that carry at least one item.
total_weightnumber · kgnumber · kgいいえWeight loaded.
volume_utilizationnumbernumberいいえAverage volume utilization of the used vehicles, 0–1.
queue_msintegerintegerいいえTime spent waiting for a compute slot (not billed).
compute_msintegerintegerいいえCompute time (billed).
costJobCostJobCostいいえCredits charged (final once the job ended) and the reservation held while it ran.
creditsnumber · creditsnumber · creditsいいえCredits charged (0 until the job ends). Failed jobs are not charged, except time_limit_exceeded, which is charged like a canceled job.
reserved_creditsnumber · creditsnumber · creditsいいえCredits held while the job was queued/running (the worst-case price). Released when it ends.
rate_card_versionintegerintegerいいえRate card the job is priced with.
breakdownCostBreakdownCostBreakdownいいえItemized price.
basenumber · creditsnumber · creditsいいえPer-job fee.
vehiclesnumber · creditsnumber · creditsいいえPer loaded vehicle (not charged for canceled or time_limit_exceeded jobs).
computenumber · creditsnumber · creditsいいえPer compute-second, pro-rated per millisecond.
large_loadnumber · creditsnumber · creditsいいえSurcharge per started 100 items above the large-load threshold.
errorJobError | nullJobError | nullいいえWhy the job failed or was canceled;
nullotherwise.codestringstringいいえMachine code (see Errors).
messagestringstringいいえEnglish explanation.
warningsWarning[]Warning[]いいえNon-blocking remarks about the request (also repeated in the result).
codestringstringいいえMachine code.
messagestringstringいいえEnglish explanation.
result_urlstringstringいいえGET this URL for the full result once
statusissucceeded.pdf_urlstringstringいいえA browser link that renders the load plan as a PDF (3D views + loading steps). Valid until expires_at. Empty after expiry.
expires_atstringstringいいえWhen the request/result bodies and the PDF link are deleted (RFC 3339). Job metadata and charges are kept.
resultResultResultいいえThe full result, inlined only when requested (?include=result) or when POST /v1/pack?wait= finished in time.
job_idstringstringいいえThe job.
vehiclesResultVehicle[]ResultVehicle[]いいえLoaded vehicles in loading order (empty vehicles are left out).
indexintegerintegerいいえ0-based position in the plan.
vehicle_idstringstringいいえYour vehicle definition id (for a project job: the slot id, pv_…).
copyintegerintegerいいえ1-based copy number of that definition (quantity > 1, or added in auto mode).
auto_addedbooleanbooleanいいえAdded by
packing_modeautobeyond thequantityyou listed.namestringstringいいえVehicle name.
typestringstringいいえVehicle type.
lengthnumber · cmnumber · cmいいえCargo-space length.
widthnumber · cmnumber · cmいいえCargo-space width.
heightnumber · cmnumber · cmいいえCargo-space height.
max_weightnumber · kgnumber · kgいいえPayload limit.
items_placedintegerintegerいいえUnits in this vehicle.
total_weightnumber · kgnumber · kgいいえWeight in this vehicle.
volume_utilizationnumbernumberいいえUsed volume / cargo-space volume, 0–1.
weight_utilizationnumbernumberいいえtotal_weight / max_weight, 0–1 (may exceed 1 with allow_overweight).
center_of_gravityPointPointいいえCentre of gravity of the load (cm).
xnumber · cmnumber · cmいいえynumber · cmnumber · cmいいえznumber · cmnumber · cmいいえplacementsPlacement[]Placement[]いいえEvery unit in this vehicle.
item_idstringstringいいえYour item definition id (for a project job: the item id, item_…).
instanceintegerintegerいいえ1-based unit number within that item definition (unique across the whole plan).
labelstringstringいいえItem label.
xnumber · cmnumber · cmいいえMin-corner position along the length.
ynumber · cmnumber · cmいいえMin-corner height above the floor.
znumber · cmnumber · cmいいえMin-corner position across the width.
lengthnumber · cmnumber · cmいいえSize along x as placed.
widthnumber · cmnumber · cmいいえSize along z as placed.
heightnumber · cmnumber · cmいいえSize along y as placed.
rotatedbooleanbooleanいいえPlaced in a different orientation than defined.
orientationstringstringいいえWhich defined side lies along x, z and y:
lwh= as defined,wlh= turned 90° around the vertical axis,lhw,hwl,whl,hlw= tipped onto a side.stepintegerintegerいいえ1-based loading step within the vehicle (load in ascending order).
weightnumber · kgnumber · kgいいえUnit weight.
axle_loads利用申請が必要AxleLoad[]AxleLoad[]いいえLoad per axle (vehicles with axle data only).
namestringstringいいえAxle 1,Axle 2… in the order ofaxle_positions.positionnumber · cmnumber · cmいいえAxle position from the front of the cargo area.
loadnumber · kgnumber · kgいいえCargo load on the axle.
maxnumber · kgnumber · kgいいえConfigured maximum (0 = none).
okbooleanbooleanいいえload≤max(alwaystruewithout a maximum).unplacedUnplacedItem[]UnplacedItem[]いいえUnits that could not be placed, with the reason.
item_idstringstringいいえYour item definition id.
instanceintegerintegerいいえ1-based unit number.
labelstringstringいいえItem label.
reasonstringstringいいえWhy it could not be placed.
warningsWarning[]Warning[]いいえRemarks about the plan.
codestringstringいいえMachine code.
messagestringstringいいえEnglish explanation.
pdf_urlstringstringいいえBrowser link that renders the plan as a PDF.
expires_atstringstringいいえWhen this result is deleted (RFC 3339).
202AcceptedJob accepted (queued or running).
名前型必須説明idstring必須stringはいJob id (job_…).
objectstring必須stringはいAlways
job.jobstatusstring必須stringはいqueued→running→succeeded|failed|canceled.queuedrunningsucceededfailedcanceledreferencestringstringいいえYour reference from the request.
sourcestringstringいいえWhere the job was created.
apiplaygroundproject_idstringstringいいえThe project (prj_…) a POST /v1/projects/{id}/pack job saves its plan into. Absent on other jobs.
created_atstring必須stringはいRFC 3339 timestamp.
started_atstring | nullstring | nullいいえWhen computing started (RFC 3339) or
null.finished_atstring | nullstring | nullいいえWhen the job ended (RFC 3339) or
null.progressJobProgressJobProgressいいえLive progress while queued/running.
stagestringstringいいえCurrent stage, such as
queued,running,finalizingordone. Informational: branch onJob.status.vehicles_doneintegerintegerいいえVehicles packed so far.
placed_itemsintegerintegerいいえItem units placed so far.
summaryJobSummaryJobSummaryいいえCounts and timings.
items_requestedintegerintegerいいえTotal item units (sum of quantities).
items_placedintegerintegerいいえUnits placed.
items_unplacedintegerintegerいいえUnits that could not be placed.
vehicles_usedintegerintegerいいえVehicles that carry at least one item.
total_weightnumber · kgnumber · kgいいえWeight loaded.
volume_utilizationnumbernumberいいえAverage volume utilization of the used vehicles, 0–1.
queue_msintegerintegerいいえTime spent waiting for a compute slot (not billed).
compute_msintegerintegerいいえCompute time (billed).
costJobCostJobCostいいえCredits charged (final once the job ended) and the reservation held while it ran.
creditsnumber · creditsnumber · creditsいいえCredits charged (0 until the job ends). Failed jobs are not charged, except time_limit_exceeded, which is charged like a canceled job.
reserved_creditsnumber · creditsnumber · creditsいいえCredits held while the job was queued/running (the worst-case price). Released when it ends.
rate_card_versionintegerintegerいいえRate card the job is priced with.
breakdownCostBreakdownCostBreakdownいいえItemized price.
basenumber · creditsnumber · creditsいいえPer-job fee.
vehiclesnumber · creditsnumber · creditsいいえPer loaded vehicle (not charged for canceled or time_limit_exceeded jobs).
computenumber · creditsnumber · creditsいいえPer compute-second, pro-rated per millisecond.
large_loadnumber · creditsnumber · creditsいいえSurcharge per started 100 items above the large-load threshold.
errorJobError | nullJobError | nullいいえWhy the job failed or was canceled;
nullotherwise.codestringstringいいえMachine code (see Errors).
messagestringstringいいえEnglish explanation.
warningsWarning[]Warning[]いいえNon-blocking remarks about the request (also repeated in the result).
codestringstringいいえMachine code.
messagestringstringいいえEnglish explanation.
result_urlstringstringいいえGET this URL for the full result once
statusissucceeded.pdf_urlstringstringいいえA browser link that renders the load plan as a PDF (3D views + loading steps). Valid until expires_at. Empty after expiry.
expires_atstringstringいいえWhen the request/result bodies and the PDF link are deleted (RFC 3339). Job metadata and charges are kept.
resultResultResultいいえThe full result, inlined only when requested (?include=result) or when POST /v1/pack?wait= finished in time.
job_idstringstringいいえThe job.
vehiclesResultVehicle[]ResultVehicle[]いいえLoaded vehicles in loading order (empty vehicles are left out).
indexintegerintegerいいえ0-based position in the plan.
vehicle_idstringstringいいえYour vehicle definition id (for a project job: the slot id, pv_…).
copyintegerintegerいいえ1-based copy number of that definition (quantity > 1, or added in auto mode).
auto_addedbooleanbooleanいいえAdded by
packing_modeautobeyond thequantityyou listed.namestringstringいいえVehicle name.
typestringstringいいえVehicle type.
lengthnumber · cmnumber · cmいいえCargo-space length.
widthnumber · cmnumber · cmいいえCargo-space width.
heightnumber · cmnumber · cmいいえCargo-space height.
max_weightnumber · kgnumber · kgいいえPayload limit.
items_placedintegerintegerいいえUnits in this vehicle.
total_weightnumber · kgnumber · kgいいえWeight in this vehicle.
volume_utilizationnumbernumberいいえUsed volume / cargo-space volume, 0–1.
weight_utilizationnumbernumberいいえtotal_weight / max_weight, 0–1 (may exceed 1 with allow_overweight).
center_of_gravityPointPointいいえCentre of gravity of the load (cm).
xnumber · cmnumber · cmいいえynumber · cmnumber · cmいいえznumber · cmnumber · cmいいえplacementsPlacement[]Placement[]いいえEvery unit in this vehicle.
item_idstringstringいいえYour item definition id (for a project job: the item id, item_…).
instanceintegerintegerいいえ1-based unit number within that item definition (unique across the whole plan).
labelstringstringいいえItem label.
xnumber · cmnumber · cmいいえMin-corner position along the length.
ynumber · cmnumber · cmいいえMin-corner height above the floor.
znumber · cmnumber · cmいいえMin-corner position across the width.
lengthnumber · cmnumber · cmいいえSize along x as placed.
widthnumber · cmnumber · cmいいえSize along z as placed.
heightnumber · cmnumber · cmいいえSize along y as placed.
rotatedbooleanbooleanいいえPlaced in a different orientation than defined.
orientationstringstringいいえWhich defined side lies along x, z and y:
lwh= as defined,wlh= turned 90° around the vertical axis,lhw,hwl,whl,hlw= tipped onto a side.stepintegerintegerいいえ1-based loading step within the vehicle (load in ascending order).
weightnumber · kgnumber · kgいいえUnit weight.
axle_loads利用申請が必要AxleLoad[]AxleLoad[]いいえLoad per axle (vehicles with axle data only).
namestringstringいいえAxle 1,Axle 2… in the order ofaxle_positions.positionnumber · cmnumber · cmいいえAxle position from the front of the cargo area.
loadnumber · kgnumber · kgいいえCargo load on the axle.
maxnumber · kgnumber · kgいいえConfigured maximum (0 = none).
okbooleanbooleanいいえload≤max(alwaystruewithout a maximum).unplacedUnplacedItem[]UnplacedItem[]いいえUnits that could not be placed, with the reason.
item_idstringstringいいえYour item definition id.
instanceintegerintegerいいえ1-based unit number.
labelstringstringいいえItem label.
reasonstringstringいいえWhy it could not be placed.
warningsWarning[]Warning[]いいえRemarks about the plan.
codestringstringいいえMachine code.
messagestringstringいいえEnglish explanation.
pdf_urlstringstringいいえBrowser link that renders the plan as a PDF.
expires_atstringstringいいえWhen this result is deleted (RFC 3339).
400Bad request
invalid_jsonidempotency_key_invalidinvalid_jsonThe body is not valid JSON or a field has the wrong type.idempotency_key_invalidThe Idempotency-Key header is longer than 128 characters.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedMissing, malformed or unknown API key.key_revokedThe key was revoked.key_expiredThe key passed its expiry date.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
402Payment required
insufficient_creditsinsufficient_creditsAvailable credits do not cover the smallest possible run of this job.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish 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.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
413Payload too large
payload_too_largepayload_too_largeThe request body exceeds 10 MB.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
422Unprocessable entity
validation_failedvalidation_failedThe request is well-formed JSON but describes an invalid job. details[] lists every problem.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
429Too many requests
too_many_jobsrate_limitedtoo_many_jobsThe organization already has the maximum number of queued + running jobs.rate_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.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
500Internal server error
internal_errorinternal_errorSomething failed on our side.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.
503Service unavailable
api_disabledapi_disabledThe API is temporarily disabled (maintenance) or switched off for the organization.
すべてのエラーコード名前型必須説明errorErrorBody必須ErrorBodyはいcodestring必須stringはいMachine code (snake_case). Branch on this, never on
message.messagestring必須stringはいEnglish explanation.
request_idstring必須stringはいSame as the X-Request-Id header. Quote it when contacting support.
detailsErrorDetail[]ErrorDetail[]いいえPer-field problems (
validation_failed).pathstringstringいいえJSON path of the offending field, e.g. items[3].length.
codestringstringいいえ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.messagestringstringいいえEnglish explanation.