Saltar para o conteúdo
CargoDuo logoCargoDuo
Preços
Entrar

Por enquanto, esta documentação está disponível só em inglês.

Update a project

Renames a project, changes its options, or replaces its vehicles or its items (with groups).

PATCHhttps://runner.cargoduo.com/v1/projects/{id}

Replacing vehicles or items clears the stored plan; open app sessions reload. Free: no credits are charged.

Autenticação

Chave de API Bearer com a permissãoresources:writeSaber mais

Parâmetros de caminho

NomeTipoObrigatórioDescrição
idstringobrigatório
string
Sim

Project id (prj_…).

Parâmetros do corpo

application/json
NomeTipoObrigatórioDescrição
namestring
string
Não
≤ 255 chars
vehiclesProjectVehicle[]
ProjectVehicle[]
Não

Vehicle slots.

itemsItem[]
Item[]
Não

Cargo items (at most 500 definitions).

groupsGroup[]
Group[]
Não

Groups, with their loading order.

optionsProjectOptions
ProjectOptions
Não

The pack options a project stores.

Exemplo de pedido

curl -X PATCH "https://runner.cargoduo.com/v1/projects/prj_3051" \
  -H "Authorization: Bearer $CARGODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vehicles": [
      {
        "vehicle_id": "veh_118",
        "quantity": 2
      }
    ]
  }'

Exemplo de resposta

200 OK · Project
{
  "id": "prj_3051",
  "object": "project",
  "name": "Order 1042",
  "status": "draft",
  "item_count": 58,
  "vehicle_count": 2,
  "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:22:03Z",
  "options": {
    "packing_mode": "auto",
    "group_routing": "none",
    "allow_overweight": false
  },
  "vehicles": [
    {
      "id": "pv_5121",
      "vehicle_id": "veh_118",
      "name": "Mega trailer 13.6 m",
      "type": "trailer",
      "quantity": 2,
      "length": 1360,
      "width": 248,
      "height": 300,
      "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": null
}

Respostas

  • 200OKThe project after the change.
    NomeTipoObrigatórioDescrição
    idstring
    string
    Não

    Project id (prj_…).

    objectstring
    string
    Não
    project
    namestring
    string
    Não
    statusstring
    string
    Não

    draft = never packed or inputs replaced; calculated = has a current plan; stale = a setting changed since the plan was made.

    draftcalculatedstaleerror
    item_countinteger
    integer
    Não

    Item units (sum of quantities).

    vehicle_countinteger
    integer
    Não

    Vehicles (sum of quantities).

    app_urlstring
    string
    Não

    Opens the project in the app's 3D editor.

    created_byUserRef | null
    UserRef | null
    Não

    The member who created it (for API calls: the member who created the key). null when unknown.

    updated_byUserRef | null
    UserRef | null
    Não

    The member who last changed it.

    created_atstring
    string
    Não

    RFC 3339.

    updated_atstring
    string
    Não

    RFC 3339.

    optionsProjectOptions
    ProjectOptions
    Não

    The pack options a project stores.

    vehiclesProjectVehicle[]
    ProjectVehicle[]
    Não
    itemsItem[]
    Item[]
    Não

    Cargo in the /v1/pack Item shape; ids are item_….

    groupsGroup[]
    Group[]
    Não
    planProjectPlan | null
    ProjectPlan | null
    Não

    The current plan; null when the project has none.

  • 400Bad requestinvalid_json
    • invalid_jsonThe body is not valid JSON or a field has the wrong type.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 401Unauthorizedunauthorizedkey_revokedkey_expired
    • unauthorizedMissing, malformed or unknown API key.
    • key_revokedThe key was revoked.
    • key_expiredThe key passed its expiry date.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 403Forbiddenplan_limit_reachedip_not_allowedsubscription_inactiveaccount_inactivescope_missing
    • plan_limit_reachedThe organization's plan allows no more projects or cargo items.
    • ip_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.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 404Not foundproject_not_found
    • project_not_foundNo project with this id in your organization.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 413Payload too largepayload_too_large
    • payload_too_largeThe request body exceeds 10 MB.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 422Unprocessable entityvalidation_failed
    • validation_failedThe request is well-formed JSON but describes an invalid job. details[] lists every problem.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 429Too many requestsrate_limited
    • 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.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 500Internal server errorinternal_error
    • internal_errorSomething failed on our side.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro
  • 503Service unavailableapi_disabled
    • api_disabledThe API is temporarily disabled (maintenance) or switched off for the organization.
    NomeTipoObrigatórioDescrição
    errorErrorBodyobrigatório
    ErrorBody
    Sim
    Todos os códigos de erro