Criar Logística Reversa

POST que dispara a coleta reversa nos Correios e persiste o resultado no banco do time.

Endpoint

POST/api/public/logistica-reversa
Auth10/min por IP

Body (JSON)

Omita orderId para uma LR avulsa (a API gera um ID interno lr_avulso_* que não é exposto nas consultas).

CampoTipoObrig.Descrição
credentialIduuidsimID de uma credencial Correios LR do seu time. Use GET /credenciais para listar.
tipoenumsimA = agendada, C = coleta domiciliar, CA = coleta na agência.
servicoEnvioenumsimpac ou sedex. Deve haver código de serviço (5 dígitos) cadastrado para a opção escolhida na credencial.
remetenteobjectsimDados do remetente da etiqueta reversa (cliente final). Veja schema abaixo.
orderIdstringnãoID do pedido do time. Se informado, o pedido precisa existir, ter trackingCode e estar em status shipped ou delivered.
valorDeclaradonumbernãoValor declarado em reais (0 a 10000). Opcional.
descricaostringnãoTexto livre, até 255 caracteres.
objDescstringnãoDescrição do objeto coletado (até 255 caracteres). Default: "Devolução".

Schema do remetente

Todos os campos são obrigatórios. CEP só os 8 dígitos. DDD com 2 dígitos. Telefone com 8-9 dígitos.

CampoTipoObrig.Descrição
remetente.nomestringsimNome completo.
remetente.logradourostringsimRua/Avenida.
remetente.numerostringsimNúmero do endereço.
remetente.complementostringsimPode ser string vazia ("").
remetente.bairrostringsimBairro.
remetente.cidadestringsimCidade.
remetente.ufstring(2)simUF, sigla com 2 letras.
remetente.cepstring(8)simApenas dígitos.
remetente.dddstring(2)simDDD do telefone.
remetente.telefonestringsimTelefone, 8-9 dígitos sem máscara.
remetente.emailstringsimE-mail válido.

Exemplo de body

{
  "credentialId": "9a2c1f80-1234-4abc-9def-000000000001",
  "tipo": "A",
  "servicoEnvio": "pac",
  "valorDeclarado": 89.90,
  "descricao": "Devolução tamanho",
  "objDesc": "Tênis tamanho 41",
  "orderId": "ord_123456",
  "remetente": {
    "nome": "Maria Silva",
    "logradouro": "Rua das Flores",
    "numero": "100",
    "complemento": "Apto 12",
    "bairro": "Centro",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "01310100",
    "ddd": "11",
    "telefone": "987654321",
    "email": "[email protected]"
  }
}

Resposta de Sucesso (201)

{
  "ok": true,
  "id": "lr_uuid_interno",
  "idCliente": "lr1a2b3c4d5e6f...",
  "orderId": "ord_123456",
  "numeroPedido": "1234567890",
  "numeroEtiqueta": "AA123456789BR",
  "prazoValidade": "2026-05-18T00:00:00.000Z",
  "createdAt": "2026-04-18T12:00:00.000Z"
}

Para LR avulsa, o campo orderId retornado começa com lr_avulso_ — esse valor é interno e não aparece nas listagens (é mascarado como null).

Erros comuns

Veja a tabela completa de códigos. Os mais frequentes:

  • 422 correios — Correios rejeitou (telefone, CEP, código de serviço errado).
  • 404 credential — credentialId não pertence ao time.
  • 404 order — pedido não enviado/entregue ou sem código de rastreio.
  • 429 limit — cota mensal estourada.

Exemplos

cURL

curl -X POST "https://seurastreio.com.br/api/public/logistica-reversa" \
  -H "Authorization: Bearer sr_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "credentialId": "9a2c1f80-1234-4abc-9def-000000000001",
    "tipo": "A",
    "servicoEnvio": "pac",
    "remetente": {
      "nome": "Maria Silva",
      "logradouro": "Rua das Flores",
      "numero": "100",
      "complemento": "",
      "bairro": "Centro",
      "cidade": "São Paulo",
      "uf": "SP",
      "cep": "01310100",
      "ddd": "11",
      "telefone": "987654321",
      "email": "[email protected]"
    }
  }'

JavaScript

const res = await fetch("https://seurastreio.com.br/api/public/logistica-reversa", {
  method: "POST",
  headers: {
    Authorization: "Bearer sr_live_sua_chave_aqui",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    credentialId: "9a2c1f80-1234-4abc-9def-000000000001",
    tipo: "A",
    servicoEnvio: "pac",
    remetente: {
      nome: "Maria Silva",
      logradouro: "Rua das Flores",
      numero: "100",
      complemento: "",
      bairro: "Centro",
      cidade: "São Paulo",
      uf: "SP",
      cep: "01310100",
      ddd: "11",
      telefone: "987654321",
      email: "[email protected]",
    },
  }),
});
if (!res.ok) {
  const err = await res.json();
  console.error(err.code, err.message);
}
const data = await res.json();
console.log(data.numeroEtiqueta);

Python

import requests

payload = {
    "credentialId": "9a2c1f80-1234-4abc-9def-000000000001",
    "tipo": "A",
    "servicoEnvio": "pac",
    "remetente": {
        "nome": "Maria Silva",
        "logradouro": "Rua das Flores",
        "numero": "100",
        "complemento": "",
        "bairro": "Centro",
        "cidade": "São Paulo",
        "uf": "SP",
        "cep": "01310100",
        "ddd": "11",
        "telefone": "987654321",
        "email": "[email protected]",
    },
}

r = requests.post(
    "https://seurastreio.com.br/api/public/logistica-reversa",
    headers={"Authorization": "Bearer sr_live_sua_chave_aqui"},
    json=payload,
)
print(r.status_code, r.json())
Cada chamada com sucesso conta para a cota mensal de logística reversa do time. Veja seu uso atual em Dashboard → Time.