API: Módulo Envios (shipping)
Faixas de CEP e medidas de frete dos produtos pela API do Interago, com exemplos em curl.
- Publicado em 08/10/2026
- Equipe do Interago
O módulo shipping leva a parte de Envios para a API: as faixas de CEP (entrega própria, motoboy, valor fixo por cidade ou região) e as medidas de frete de cada produto (largura, altura, comprimento e frágil). É ótimo para ERPs, hubs logísticos e para quem cuida de muitas regiões de entrega e prefere atualizar tudo de uma vez, sem cadastrar faixa por faixa no painel.
⚠️ A API precisa estar habilitada para utilizá-la. Veja o passo a passo em API - Como habilitar.
Endpoint: https://app.interago.com.br/App/Api/index.php
Todas as chamadas são POST com:
- Cabeçalho
Authorization: Bearer SEU_TOKEN websiteIdno corpomodule=shippingemethodcom o nome do método
Limite: 60 requisições autenticadas por minuto por website, além da cota do mês explicada em API - Como habilitar. Trate o token como senha.
Antes de começar
A extensão Envios precisa estar instalada no site. Sem ela, a API responde
403 SHIPPING_EXTENSION_REQUIRED.No painel, abra API Interago e clique no chip Envios / Logística. Ali ficam o testador e a descrição dos 10 métodos do módulo. O chip fica disponível quando a extensão Envios está instalada.
Leituras funcionam em qualquer plano. Gravações (métodos
applyedelete) ficam bloqueadas para loja do plano grátis, com403 FREE_TIER_DENIED.
Os 10 métodos
| Método | Para que serve |
listCepRanges | Lista as faixas de CEP da loja, na ordem em que a cotação avalia (a mesma lista da tela Regras de faixas de CEP). |
proposeCepRanges | Valida as faixas sem gravar e devolve a prévia da lista final, com compatible, errors e warnings. |
applyCepRanges | Grava as faixas. mode=replace (padrão) substitui todas; mode=append acrescenta no final. |
getShippingDefaults | CEP de origem da loja e medidas padrão (peso, largura, altura e comprimento) usadas quando o produto não tem medidas próprias. |
listProductMeasures | Lista os produtos com as medidas de frete, paginado, com busca por nome ou SKU. |
getProductMeasures | Medidas de frete de um produto (productId), junto com os padrões da loja. |
proposeProductMeasures | Valida largura, altura, comprimento e frágil de um produto sem gravar. |
applyProductMeasures | Grava as medidas de frete de um produto. |
applyProductMeasuresBatch | Grava medidas em lote, até 100 itens, identificando por productId ou sku. |
deleteProductMeasures | Remove as medidas próprias do produto; ele volta a usar os padrões da loja. |
Faixas de CEP
As faixas vão no parâmetro cepRanges, um array JSON. Cada faixa tem:
cepFromecepTo: CEP inicial e final, com 8 dígitos. Para um único CEP, repita o mesmo valor. O inicial precisa ser menor ou igual ao final.price: preço do frete na faixa. Prefira número (por exemplo15.5), sem máscara de R$.0deixa o frete grátis na faixa.minCart: valor mínimo do carrinho para a faixa valer (0vale para qualquer valor).deliveryTime: prazo em dias, de 0 a 365.name: o nome que o cliente lê no checkout, por exemplo Entrega própria. Obrigatório.
O caminho mais tranquilo tem dois passos:
Chame
proposeCepRangescom as faixas e omodeque pretende usar. Nada é gravado: a resposta mostra a lista final emcepRangese diz se está tudo certo emcompatible. Se não estiver, os detalhes vêm emerrors(por exemplo, Faixa #2: cepFrom e cepTo precisam ter 8 dígitos).Com
compatible: true, envie o mesmo conteúdo paraapplyCepRanges. Se alguma faixa estiver errada, a API recusa o envio inteiro com422 CEP_RANGES_INVALIDe não grava nada.
Sobre o mode:
replace(padrão): a lista enviada substitui todas as faixas da loja. Enviar[]comreplaceapaga todas as faixas.append: as faixas enviadas entram no final da lista atual.- Limite de 500 faixas por requisição e de 500 no total depois de um
append.
A ordem importa. Na cotação vale a primeira faixa que coincidir com o CEP e com o mínimo do carrinho. Com append, a faixa nova fica depois das que já existem; se ela precisa ganhar de uma faixa mais ampla, monte a lista completa na ordem certa e use replace.
As faixas gravadas valem já na próxima cotação de frete, sem precisar republicar o catálogo.
Ler as faixas atuais:
curl -X POST 'https://app.interago.com.br/App/Api/index.php' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'websiteId=SEU_WEBSITE_ID' -d 'module=shipping' \ -d 'method=listCepRanges'
Validar uma lista completa (nada é gravado):
curl -X POST 'https://app.interago.com.br/App/Api/index.php' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'websiteId=SEU_WEBSITE_ID' -d 'module=shipping' \ -d 'method=proposeCepRanges' \ -d 'mode=replace' \ --data-urlencode 'cepRanges=[{"cepFrom":"15000000","cepTo":"15099999","price":15.5,"minCart":0,"deliveryTime":2,"name":"Entrega própria"},{"cepFrom":"15100000","cepTo":"15199999","price":0,"minCart":200,"deliveryTime":3,"name":"Frete grátis região"}]'
Acrescentar uma faixa no final da lista:
curl -X POST 'https://app.interago.com.br/App/Api/index.php' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'websiteId=SEU_WEBSITE_ID' -d 'module=shipping' \ -d 'method=applyCepRanges' \ -d 'mode=append' \ --data-urlencode 'cepRanges=[{"cepFrom":"15130000","cepTo":"15139999","price":12,"minCart":0,"deliveryTime":1,"name":"Motoboy Mirassol"}]'
Depois de mexer nas faixas pela API
Peça para quem cuida da loja conferir no painel: em Menu → Extensões → Envios, a aba Regras de faixas de CEP mostra a lista exatamente como ficou gravada, na ordem de avaliação. Uma cotação de teste com um CEP de cada faixa confirma preço, prazo e o nome que aparece no checkout.
O passo a passo da tela está em Envios e frete: regras de faixas de CEP, e o teste de cotação em Como testar o frete por CEP antes de publicar.
Medidas de frete dos produtos
As medidas de frete (largura, altura e comprimento, em centímetros, mais a marcação de frágil) são as que a cotação usa para montar o pacote. O peso continua no cadastro do produto e é gravado pelo módulo Catálogo, com applyProduct (veja API: Módulo Catálogo (catalog)).
width,heightelengthsão obrigatórios emproposeProductMeasureseapplyProductMeasures. Aceitam decimal (uma casa) e não podem ser negativos.fragile:1para frágil e0(padrão) para normal.- Produto sem medidas próprias usa, na cotação, as medidas padrão de Envios → Configurações. O
getShippingDefaultsmostra esses valores e o CEP de origem. deleteProductMeasuresapaga as medidas próprias e o produto volta aos padrões da loja.
Em lote: applyProductMeasuresBatch
- Até 100 itens por chamada, no array JSON
items. identifyBy=productId(padrão) usa oproductIdde cada item;identifyBy=skuusa osku.- Sucesso parcial: a resposta separa
appliedefailed(comappliedCountefailedCount). Um item com problema não derruba os outros. - SKU que pertence a mais de um produto da loja é recusado com
SKU_AMBIGUOUS, para não gravar medida no produto errado. Nesse caso, envie aquele item comidentifyBy=productId. - SKU que não existe na loja volta em
failedcomPRODUCT_NOT_FOUND.
curl -X POST 'https://app.interago.com.br/App/Api/index.php' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'websiteId=SEU_WEBSITE_ID' -d 'module=shipping' \ -d 'method=applyProductMeasuresBatch' \ -d 'identifyBy=sku' \ --data-urlencode 'items=[{"sku":"CAM-001","width":20,"height":4,"length":30,"fragile":0},{"sku":"CANECA-01","width":12,"height":12,"length":12,"fragile":1}]'
Paginação em listProductMeasures
pagecomeça em 1;pageSizetem padrão 50 e máximo 100. A lista vem em ordem alfabética de nome.- A resposta traz
hasMore: enquanto viertrue, peça a próxima página. onlyWithMeasures=1lista só os produtos que já têm medidas próprias;searchfiltra por nome ou SKU.
curl -X POST 'https://app.interago.com.br/App/Api/index.php' \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'websiteId=SEU_WEBSITE_ID' -d 'module=shipping' \ -d 'method=listProductMeasures' \ -d 'onlyWithMeasures=1' \ -d 'page=1' \ -d 'pageSize=100'
Erros comuns
| Código | O que fazer |
401 TOKEN_REQUIRED / TOKEN_INVALID | Envie o cabeçalho Authorization: Bearer com um token válido deste website. |
403 SHIPPING_EXTENSION_REQUIRED | Instale a extensão Envios no site. |
403 FREE_TIER_DENIED | Gravação em loja do plano grátis. Leituras continuam liberadas. |
400 MODE_INVALID | Use mode=replace ou mode=append. |
400 JSON_REQUIRED / JSON_INVALID | cepRanges ou items faltando, ou não é uma lista JSON. |
422 CEP_RANGES_INVALID | Alguma faixa não passou na validação. Veja errors, corrija e rode o proposeCepRanges de novo. |
422 CEP_RANGES_LIMIT | Mais de 500 faixas na requisição. |
400 PRODUCT_ID_REQUIRED / 404 PRODUCT_NOT_FOUND | Informe um productId que exista nesta loja. |
422 MEASURES_INVALID | Largura, altura ou comprimento faltando, inválido ou negativo. |
422 BATCH_LIMIT | Mais de 100 itens no lote; divida em partes. |
400 IDENTIFY_BY_INVALID | Use identifyBy=productId ou identifyBy=sku. |
SKU_AMBIGUOUS | Dentro de failed: o SKU está em mais de um produto. Envie aquele item por productId. |
Veja também
Este artigo foi útil?