Expedições (Shipments)
Endpoints de /api2/shipment para registrar a expedição do pedido com rastreio único ou em lote, listar shipments existentes, consultar individualmente, adicionar tracks a shipments já criados e reenviar e-mails ao cliente.
Visão geral
O recurso de shipments cobre todo o registro logístico: criação da expedição (total ou parcial), inclusão de tracks (rastreio único ou múltiplos volumes), reenvio de e-mail e listagem para reconciliação com transportadoras. Para regras gerais (paginação, datas, status HTTP, tratamento de items), consulte a página principal de Pedidos.
track_number único ou tracks[] em lote.shipment_id, order_id ou order_increment_id.shipment, shipments, shippment, shippments.order_item_id ou sku + qty.Listar shipments.
entity_id, created_at, updated_at, increment_id.Exemplos
GET /api2/shipment?page=1&limit=50&include_pagination=1
Authorization: Bearer {{token}}
GET /api2/shipment?order_id=123
Authorization: Bearer {{token}}
{
"page": 1,
"limit": 50,
"include_pagination": 1,
"order_increment_id": "100000123",
"created_from": "2026-01-01",
"created_to": "2026-12-31"
}
shipments. Busca por ID ou increment_id único usa shipment. Aliases reconhecidos: /api2/shipments, /api2/shippment, /api2/shippments. A rota canônica recomendada é /api2/shipment.Obter shipment individual.
GET /api2/shipment?id=789
Authorization: Bearer {{token}}
GET /api2/shipment?increment_id=100000078
Authorization: Bearer {{token}}
Criar shipment (expedição) total ou parcial. O payload pode incluir rastreio inicial por track_number (objeto único) ou por tracks (lista).
true, envia o e-mail do shipment após salvar.carrier_code, title e track_number.Expedição total com rastreio único
POST /api2/shipment/create
Authorization: Bearer {{token}}
Content-Type: application/json
{
"order_increment_id": "100000123",
"send_email": true,
"comment": "Shipment criado pela integração.",
"carrier_code": "custom",
"title": "Transportadora",
"track_number": "BR123456789"
}
Expedição parcial com lista de rastreios
POST /api2/shipment/create
Authorization: Bearer {{token}}
Content-Type: application/json
{
"order_id": 123,
"items": [
{"order_item_id": 10, "qty": 1},
{"sku": "PRODUTO-001", "qty": 2}
],
"tracks": [
{
"carrier_code": "custom",
"title": "Transportadora",
"track_number": "BR123456789"
}
]
}
Cria rastreio em um shipment já existente. Não cria o shipment do pedido. Pode receber o shipment_id direto ou resolver pelo pedido quando existir um único shipment.
Por shipment_id
POST /api2/shipment/track
Authorization: Bearer {{token}}
Content-Type: application/json
{
"shipment_id": 789,
"carrier_code": "custom",
"title": "Transportadora",
"track_number": "BR123456789"
}
Por order_increment_id
POST /api2/shipment/track
Authorization: Bearer {{token}}
Content-Type: application/json
{
"order_increment_id": "100000123",
"carrier_code": "custom",
"title": "Transportadora",
"track_number": "BR123456789"
}
Por order_id
POST /api2/shipment/track
Authorization: Bearer {{token}}
Content-Type: application/json
{
"order_id": 123,
"carrier_code": "custom",
"title": "Transportadora",
"track_number": "BR123456789"
}
shipment_id ou increment_id do shipment para evitar ambiguidade. Compatibilidade: POST /api2/shipment também cria rastreio.Reenviar e-mail do shipment. Identifique-o com shipment_id, id ou increment_id.
POST /api2/shipment/email
Authorization: Bearer {{token}}
Content-Type: application/json
{
"shipment_id": 789,
"comment": "Reenvio solicitado pela integração."
}
Formas de uso suportadas
Combinações testadas e homologadas para o recurso Shipments.
GET /api2/shipment?created_from=2026-05-07&include_pagination=1GET /api2/shipment?order_increment_id=100000123POST /api2/shipment/create + carrier_code + track_numberPOST /api2/shipment/create + tracks[]POST /api2/shipment/track + shipment_idPOST /api2/shipment/emailRecomendações para integração
Recomendado
- Enviar
tracks[]sempre que o pedido puder ter múltiplos volumes ou múltiplas transportadoras. - Em pedidos com mais de um shipment, identificar explicitamente
shipment_idao adicionar rastreio para evitar ambiguidade. - Usar a rota canônica
/api2/shipmentem código novo; aliases existem apenas para compatibilidade com integrações legadas.
Evitar
- Depender dos aliases
/api2/shippmentou/api2/shippmentsem código novo. - Confiar que
send_email=truesozinho substitua o reenvio explícito via/api2/shipment/emailem casos de falha de SMTP. - Misturar
order_ideorder_increment_idno mesmo payload.
Pedidos com múltiplos shipments
Quando um pedido tem mais de um shipment, o endpoint /api2/shipment/track retorna 400 Ambiguous shipment for order ao receber apenas order_id. Capture o shipment_id da listagem e envie-o explicitamente.
Erros comuns
| Status | Exemplo de body | Quando ocorre |
|---|---|---|
400 | {"error": "Invalid item"} | Item de items sem order_item_id/sku ou com qty não positivo. |
400 | {"error": "Cannot create shipment"} | O pedido não admite mais expedição (ex.: já totalmente expedido ou cancelado). |
400 | {"error": "Ambiguous shipment for order"} | POST /api2/shipment/track resolvido por pedido com múltiplos shipments — informe shipment_id. |
401 | {"error": "Unauthorized"} | Authorization ausente ou token expirado. |
404 | {"error": "Order not found"} | order_id ou order_increment_id inexistente. |
404 | {"error": "Shipment not found"} | shipment_id ou increment_id inexistente. |
409 | {"error": "Conflict on save"} | Duplicidade ou deadlock em gravação concorrente. |