Simulation API
POST /v1/orders-api/vtex/cart/simulation/
Simula um carrinho VTEX e executa o motor de roteamento de pedidos. Retorna a resposta original da simulação VTEX junto com as opções de frete geradas pelo router, mantendo ambos os resultados separados.
Headers
| Header | Tipo | Obrigatório | Descrição |
|---|---|---|---|
x-trinio-merchant-id | string | Sim | Merchant ID (ULID) |
Request Body
{
"cartSimulation": {
"items": [
{ "id": "1234", "quantity": "1", "seller": "1" },
{ "id": "5678", "quantity": "2", "seller": "1" }
],
"postalCode": "22071060",
"country": "BRA"
},
"leanShipping": false
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cartSimulation.items | array | Sim | Produtos a simular |
cartSimulation.items[].id | string | Sim | SKU ID |
cartSimulation.items[].quantity | string | Sim | Quantidade |
cartSimulation.items[].seller | string | Sim | Seller ID |
cartSimulation.postalCode | string | Sim | CEP de entrega |
cartSimulation.country | string | Sim | Código do país (ex: BRA) |
leanShipping | bool | Não | Quando true, pula a geração de opções de entrega single-package no router. Default: false |
Response
{
"cartSimulation": {
"items": ["..."],
"postalCode": "22071060",
"country": "BRA",
"logisticsInfo": ["..."],
"totals": ["..."],
"pickupPoints": [],
"messages": []
},
"shippingMethods": [
{
"index": 0,
"label": "Normal",
"shippingType": "DELIVERY",
"totalPrice": 2500,
"deliveryTime": "5bd",
"estimatedDeliveryDate": "2026-02-27T00:00:00+00:00",
"selected": false,
"hasMultiplePackages": false,
"packages": [
{
"itemIds": ["1234", "5678"],
"label": "Normal",
"value": 2500,
"deliveryTime": "5bd",
"estimatedDeliveryDate": "2026-02-27T00:00:00+00:00",
"sla": {
"id": "Normal",
"name": "Normal",
"deliveryChannel": "delivery",
"price": 2500,
"shippingEstimate": "5bd",
"shippingEstimateDate": "2026-02-27T00:00:00+00:00"
}
}
]
}
]
}
Campos da Response
cartSimulation
Resposta original da simulação VTEX, sem modificações. Contém toda a informação logística retornada pela API /api/checkout/pub/orderForms/simulation da VTEX.
shippingMethods
Opções de frete geradas pelo motor de roteamento. Cada opção representa uma estratégia completa de fulfillment.
| Campo | Tipo | Descrição |
|---|---|---|
index | int | Índice da opção de frete |
label | string | Label de exibição para o cliente |
shippingType | string | DELIVERY, PICKUP ou SCHEDULED |
totalPrice | int | Custo total do frete em centavos (ex: 2500 = R$25,00) |
deliveryTime | string | Tempo estimado de entrega (5bd = 5 dias úteis, 1d = 1 dia) |
estimatedDeliveryDate | string | Data estimada de entrega (ISO 8601) |
selected | bool | Se esta opção está selecionada |
hasMultiplePackages | bool | Se o pedido é dividido em múltiplos pacotes |
packages | array | Lista de pacotes nesta opção de frete |
packages[]
| Campo | Tipo | Descrição |
|---|---|---|
itemIds | array | SKU IDs incluídos neste pacote |
label | string | Label do pacote |
value | int | Custo do frete deste pacote em centavos |
deliveryTime | string | Estimativa de entrega deste pacote |
estimatedDeliveryDate | string | Data estimada de entrega deste pacote |
sla | object | Objeto SLA original da VTEX com todos os campos (id, name, deliveryChannel, price, etc.) |
Tipos de Frete (shippingType)
| Valor | Descrição |
|---|---|
DELIVERY | Entrega padrão no endereço |
PICKUP | Retirada em ponto de coleta |
SCHEDULED | Entrega agendada (com janelas de entrega disponíveis) |
Notas
cartSimulationnunca é modificada pelo motor de roteamento. É retornada exatamente como recebida da VTEX.shippingMethodspode ser vazio ([]) se o router não conseguir gerar opções.- Regras de roteamento são aplicadas por merchant. Se um merchant possui regras customizadas (ex: shipping cap), elas são aplicadas apenas aos
shippingMethods.
Exemplo: cURL
curl -s -X POST https://prod.trinio.ai/v1/orders-api/vtex/cart/simulation/ \
-H "Content-Type: application/json" \
-H "x-trinio-merchant-id: <YOUR_MERCHANT_ID>" \
-d '{
"cartSimulation": {
"items": [
{"id": "1234", "quantity": "1", "seller": "1"},
{"id": "5678", "quantity": "2", "seller": "1"}
],
"postalCode": "22071060",
"country": "BRA"
},
"leanShipping": false
}' | jq .
Erros
| Status | Descrição |
|---|---|
| 400 | Body inválido ou campos obrigatórios ausentes |
| 500 | Falha na simulação VTEX ou erro no motor de roteamento |