Skip to content
On this page

Documentation

Carton Pack Pro

Ways to pack an order

Each way saves the same kind of pack job, counted once toward usage.

Quickstart

  1. Create an organization at /signup; pick imperial or metric.
  2. Load cartons and SKUs under /import.
  3. Create a key with the write scope under /api-keys.
  4. Set CPP_URL and CPP_KEY, then run the request below.
Request
curl -X POST "$CPP_URL/api/v1/pack" \
  -H "Authorization: Bearer $CPP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "SO-10422",
    "objective": "MIN_CARTONS",
    "lines": [
      { "sku": "KTC-SKLT-12",  "quantity": 2 },
      { "sku": "GLS-TMBL-4PK", "quantity": 1 }
    ]
  }'
Response, abridged
200 OK

{
  "data": {
    "jobId": "clw3k1n2t0004v8hq7x1s9abc",
    "reference": "PJ-4F2A9C",
    "externalId": "SO-10422",
    "unknownSkus": [],
    "result": {
      "success": true,
      "objective": "MIN_CARTONS",
      "unitSystem": "IMPERIAL",
      "cartons": [ /* cartonSku, placements, weights, steps */ ],
      "unpacked": [],
      "summary": {
        "totalCartons": 1,
        "packedItems": 3,
        "averageUtilization": 0.7103,
        "computeMs": 37
      }
    }
  }
}

That call saved a pack job. Open it at /jobs/<jobId>, or find it with GET /api/v1/jobs?externalId=SO-10422.

Conventions

ConventionRule
EnvelopeSuccess is { data, meta? }, failure is { error }, on every /api/v1 route except /openapi.json.
UnitsNumbers are in your organization’s units: inches and pounds, or centimeters and kilograms. A line that sets dimensionUnit or weightUnit is converted to your units before packing. The response’s unitSystem field names the units it uses.
Axeslength on x, height on y (up), width on z. A position is the item’s bottom-back-left corner.
IdentifiersSKUs are unique per organization. You set externalId. Carton Pack Pro sets reference (PJ-…).
PeriodsUsage is counted per calendar month in UTC, written YYYY-MM. Monthly allowances reset on the 1st.
Rate limitsPer key, per minute: 30 on Free, 300 on Pro, 1,200 on Business and 1,200 on Enterprise. Going over returns a 429 with a Retry-After header.
Repeatable resultsThe same request, catalog and billing plan return the same pack plan. A search stopped at its 5-second limit may differ, and carries a warning. LOWEST_RATE is the exception: its pack plan depends on live rates when the job runs. computeMs changes every run. So does result.reference when no externalId is sent.
OpenAPI spec
GET /api/v1/openapi.json   # OpenAPI 3.1, unauthenticated
Cartonization docs and API reference · Carton Pack Pro