meu ecommercedevelopers
API REST

Cotar frete

Cotar frete (SEDEX/PAC...) para um carrinho

POST/v1/rates

Retorna cada serviço habilitado com preço (BRL) e prazo. A loja vem da chave — não envie instanceId. Aceita chave pública (pk_) ou secreta (mk_). CORS habilitado para uso direto no frontend.

Capacidade: Fretes e cotações, disponível pela API REST do Meu Ecommerce.

Autenticação

Chave pública pk_… ou secreta mk_…. A cotação pode ser feita pelo navegador.

Corpo da requisição

CampoTipoObrigatório no objetoDescrição
destinationCepstringSimCEP de destino (8 dígitos; traços/espaços são ignorados).
itemsarraySimMín. 1 itens. Máx. 50 itens.
items[].namestringSimProduct name.
items[].quantityintegerSimUnits of this product in the cart. Mínimo: 1.
items[].unitPriceBRLnumberSimUnit price in BRL (used for free-shipping thresholds). Mínimo: 0.
items[].weightKgnumberNãoUnit weight in kg. Defaults to 0.3kg if omitted. Maior que 0.
items[].productIdstringNãoYour catalog's product id. Advanced plan: remembers this product's estimated dimensions between quotes (otherwise the name is the key).
items[].variantIdstringNãoVariant id (size/color), so each variant keeps its own dimensions.
items[].skustringNãoSKU, used as the product key when there is no productId.
items[].dimensionsCmobjectNãoUnit dimensions in cm, when known. Advanced plan: used as-is instead of the AI estimate. Other plans ignore it (they pack into the store's first box).
items[].dimensionsCm.lengthnumberSimMaior que 0.
items[].dimensionsCm.widthnumberSimMaior que 0.
items[].dimensionsCm.heightnumberSimMaior que 0.
requestIdstringNãoId de correlação/idempotência. Gerado automaticamente se omitido.

Exemplo

{
  "destinationCep": "20040002",
  "items": [
    {
      "name": "Camiseta de algodão",
      "quantity": 1,
      "unitPriceBRL": 89.9,
      "weightKg": 0.3
    }
  ]
}

Resposta de sucesso

Cotação (pode vir vazia com um reason informativo, ex.: CEP sem cobertura).

CampoTipoObrigatório no objetoDescrição
ratesarraySim—
rates[].codestringSim—
rates[].serviceIdstringSim—
rates[].labelstringSim—
rates[].deliveryDaysintegerSim—
rates[].pricenumberSim—
rates[].freebooleanNão—
reasonstringNãoPor que a lista veio vazia, quando aplicável.
actionUrlstringNão—

Códigos HTTP do contrato

StatusDescrição
200Cotação (pode vir vazia com um reason informativo, ex.: CEP sem cobertura).
400Corpo inválido.
401Chave ausente ou inválida.
402Assinatura necessária (subscription_required) ou franquia grátis do mês esgotada (free_quota_exceeded, com Retry-After até a virada do mês UTC).
404Loja não encontrada.
413Corpo grande demais.
429Limite por minuto excedido (rate_limited). Aguarde os segundos indicados em Retry-After.
502Falha ao consultar os Correios.

Consulte erros e limites para os erros de autenticação e escopo, incluindo 403, e o formato de falha.

Schema completo

Baixar OpenAPI · Primeira integração

Contrato e comportamento

requestId pode ser usado para correlação; não há garantia documentada de deduplicação. Uma resposta vazia precisa ser tratada pela aplicação.

Nesta página