Criar rota (com pedidos novos ou existentes)
Cria uma rota agrupando pedidos — pode incluir pedidos novos e/ou pedidos que já existem na Abbiamo. Atribui motorista e ordem de paradas.
No guia
Uso no produto: TMS — app em rota.
Header obrigatório. Toda chamada exige o header x-abbiamo-seller-group-key.
Preencha-o no canto superior direito desta página ou veja como obter a sua chave.
Rate limit: 300 requisições por minuto por chave. Acima disso a API retorna HTTP 429.
Só pedidos existentes? Use POST /v2/routes. Esse outro endpoint é purpose-built pra roteirizar pedidos que já estão na Abbiamo: payload enxuto (order_ids + warehouse de partida), sem precisar reenviar endereço, cliente ou nota fiscal.
Este aqui (/v2/orders/route) faz sentido quando você cria os pedidos junto com a rota na mesma chamada — ou quando mistura pedidos novos e existentes no mesmo array. O campo already_exists na resposta indica, pra cada pedido, se ele já existia ou foi criado agora.
Este endpoint cria uma rota agrupando múltiplos pedidos. Uma rota é um conjunto de pedidos atribuídos a um motorista, com ordem de paradas definida.
O campo driver_document é opcional — quando a rota é enviada sem driver_document, o sistema cria uma rota ociosa, sem transportadora nem motorista atribuídos, que pode ser atribuída depois pelo dashboard.
Pedidos de devolução (type: RETURN). Para pedidos do tipo RETURN, informe source_address (o endereço do cliente onde o motorista vai coletar o pacote) no lugar de destination_address. Internamente o sistema usa esse endereço como destino do pedido.
O campo type assume DELIVERY por padrão quando não informado.
Como pedidos existentes são tratados
- O campo
already_existsna resposta indica, pra cada pedido, se ele já existia no sistema no momento da requisição. - Se um ou mais pedidos já existem no sistema, há dois desfechos possíveis:
- São roteirizáveis (status em
CREATED,FAILED,RETURNED, etc.) — entram na rota junto com os novos. - Não são roteirizáveis (já estão em rota, já foram entregues, etc.) — a requisição retorna erro.
- São roteirizáveis (status em
⛔ Este endpoint não edita pedidos. Se um ou mais pedidos já existem no sistema com endereço diferente do enviado na requisição, o pedido antigo (com o endereço antigo) é agrupado na rota — o endereço novo é ignorado.
Outras observações
driver_document, quando informado, precisa ser de um motorista atribuído a pelo menos uma das filiais dos pedidos da rota.
Authorization
sellerGroupKey In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/v2/orders/route" \ -H "Content-Type: application/json" \ -d '{ "orders": [ { "seller_identifier": "123", "order_number": "136411776", "volumes": [ { "items": [ { "name": "Exemplo 1" } ] } ], "customer": { "name": "Joao Guilherme" }, "destination_address": { "zip_code": "01412100", "state": "RJ", "city": "Rio de Janeiro", "neighborhood": "Ipanema", "street": "Rua Conde de Bonfim", "street_number": "10" } }, { "seller_identifier": "123", "order_number": "136411777", "volumes": [ { "items": [ { "name": "Exemplo 2" } ] } ], "customer": { "name": "Eduardo Dantas" }, "destination_address": { "zip_code": "22071060", "state": "RJ", "city": "Rio de Janeiro", "neighborhood": "Copacabana", "street": "Rua Saint Roman", "street_number": "83" } } ], "route": { "start": { "type": "WAREHOUSE_SELLER_IDENTIFIER", "value": "123" }, "end": { "type": "WAREHOUSE_SELLER_IDENTIFIER", "value": "123" }, "cost": 1200 } }'"{\n \"status\": \"success\",\n \"route\": {\n \t\"id\": \"1d1dfa9c-4fe2-4315-9d65-ec0e8f95d239\",\n \"cost\": 1200,\n },\n \"orders\": [\n {\n \"id\": \"30c24480-8e45-4afa-af35-0231b460e9ed\",\n \"order_number\": \"136411776\",\n \"tracking\": \"abc123#\",\n \"already_exists\": true,\n \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=abc123#\",\n \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/abc123#\"\n },\n {\n \"id\": \"96bed76f-4453-4dea-addc-521d9476b513\",\n \"order_number\": \"136411777\",\n \t\"tracking\": \"def456!\",\n \"already_exists\": true,\n \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=def456!\",\n \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/def456!\"\n },\n {\n \"id\": \"164f51fb-92c2-4041-8a7d-3aa87c82352e\",\n \"order_number\": \"136411778\",\n \t\"tracking\": \"ghi789=\",\n \"already_exists\": false,\n \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=ghi789=\",\n \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/ghi789=\"\n },\n {\n \"id\": \"1a72e4d8-d2cc-4a2d-ba2c-b5c91181a8e2\",\n \"order_number\": \"136411779\",\n \t\"tracking\": \"jkl101_\",\n \"already_exists\": false,\n \t\t\"mail_label_link\": \"https://mail-label-api.abbiamo.io/mail-label/v1?trackings=jkl101_\",\n \t\t\"tracking_link\": \"http://meupedido.abbiamolog.com/jkl101_\"\n }\n ]\n}"{
"statusCode": "400",
"message": [
"order_number must be a string",
"volumes must contain at least 1 elements",
"volumes must be an array",
"customer must be a non-empty object",
"customer must be an object",
"destination_address must be a non-empty object",
"destination_address must be an object"
],
"error": "Bad Request"
}