Container Loading API
Create loading plans straight from your ERP. Send a cargo list, get back the containers you need, the placement of every box, a PDF or Excel loading plan for the delivery note — and a link to the interactive 3D plan you can paste onto the order.
Cargo in
Post the cargo lines from your order and the equipment you want to load into.
Plan out
Get JSON with every box placement, plus a PDF or Excel loading plan for the delivery note.
3D link
Every plan comes with a public link to the interactive 3D view. Paste it onto the order.
Works with any ERP
This is a plain REST API over HTTPS with JSON. Anything that can call a web service can call it — SAP (via CPI/PI or an ABAP HTTP client), Microsoft Dynamics 365 Business Central (via Power Automate or an AL extension), Odoo, Helios, Money, Abra, or an integration platform sitting between them. Your integrator wires it to your own document flow; there is no plug-in to install on our side and nothing to install on yours.
Download the OpenAPI 3 specification and generate a client in your language of choice.
Authentication
Every request carries an API key. Create one in the web app under your account → API keys. The key acts as your account and uses your existing subscription — there is no separate API plan and nothing extra to buy. It is shown once, when you create it; we store only a hash of it.
Authorization: Bearer lci_live_...Quick start
Send your cargo and equipment
Group cargo into shipments to control the unloading order on multi-stop routes. At least one container is always required — in the automatic modes the algorithm starts from it and adds or swaps equipment as the cargo demands.
curl -X POST https://loadcargo.in/api/v1/plans \
-H "Authorization: Bearer lci_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "SO-2026-00123",
"customer": "ACME GmbH",
"reference": "ERP-ORDER-77",
"containers": [
{ "equipment_code": "Maersk 40 standard", "quantity": 1 }
],
"cargo": [
{ "shipment": "STOP-1", "box_id": "PN-4471", "quantity": 40,
"length": 120, "width": 80, "height": 95, "weight": 340,
"stackable": true, "stack_weight": 800, "turnable": 1 },
{ "shipment": "STOP-2", "box_id": "PN-9002", "quantity": 30,
"length": 100, "width": 120, "height": 110, "weight": 500,
"stackable": false }
]
}'Get the plan back
share_url is a public, read-only link to the interactive 3D plan — paste it onto the order in your ERP and whoever opens it needs no account.
{
"plan_id": 71,
"reference": "ERP-ORDER-77",
"status": "calculated",
"share_url": "https://loadcargo.in/share/a5723ccb...",
"summary": {
"containers_used": 4,
"boxes_placed": 70,
"boxes_unplaced": 0,
"total_weight": 28600,
"total_volume": 76.08
},
"containers": [
{ "index": 0, "equipment_code": "Maersk 40 standard",
"boxes": 42, "weight": 14600, "fill_volume_pct": 57.8 }
],
"unplaced": []
}Endpoints
Base URL https://loadcargo.in/api/v1
/plansCreate a plan from a cargo list and calculate it. Returns the summary, the per-container result and the share link.
/plans/{id}Read a plan back, including the placement of every box (origin corner, placed dimensions, load order).
/plans/{id}/export?format=pdf|xlsx|rtfDownload the loading plan as a document — the same report the web app produces. Add lang=cs for Czech.
/plans/{id}Delete a plan and its cargo. Handy for cleaning up test runs from your sandbox.
/equipmentList the container and truck catalogue, so you can map your own master data onto it.
Cargo fields
Dimensions in centimetres, weights in kilograms. Only the four dimension fields are mandatory; everything else has a sensible default.
| Field | Type | Meaning |
|---|---|---|
lengthrequired | number | Box length in cm. |
widthrequired | number | Box width in cm. |
heightrequired | number | Box height in cm. |
weightrequired | number | Weight of ONE box, in kg. |
quantity | integer | How many identical boxes. Defaults to 1. |
shipment | string | Groups cargo into drops. Earlier shipments are loaded so they come out first — this is what drives multi-stop unloading order. |
box_id | string | Your part number. Echoed back, including in the unplaced list. |
stackable | boolean | Whether other boxes may be stacked ON TOP of this one. Defaults to false. |
stack_weight | number | Maximum weight this box can carry on top of it, in kg. |
turnable | integer | 0 = no rotation, 1 = around the vertical axis only, 2 = any rotation. |
floor_only | boolean | The box must stand on the container floor. |
priority | integer | Loading priority. |
Errors
| Status | Code | Meaning |
|---|---|---|
401 | INVALID_API_KEY | Missing, unknown or revoked key. |
402 | SUBSCRIPTION_REQUIRED | The account has no active subscription or trial. |
404 | NOT_FOUND | No such plan in this account. |
409 | NOT_CALCULATED | The plan exists but has no computed result to read or export. |
422 | VALIDATION_ERROR | The request was rejected. details lists each offending field. |
Validation errors carry a details array naming each rejected field, so you can surface the problem in your ERP instead of guessing.
Frequently asked
Ready to integrate?
Start a free 14-day trial, create an API key, and make your first call in minutes. No card required.
Start free trial