Endereços no Brasil
Quais campos de endereço são obrigatórios, como a CartaFlow completa o resto pelo CEP e como tratar os erros.
Os endereços da API seguem o formato dos Correios. Você só precisa enviar três campos: o nome de quem recebe, o CEP e o número. O resto a CartaFlow completa a partir do CEP.
A regra do endereço
- Obrigatórios:
name,postal_codeenumber. - Os campos que você envia são usados como vieram. A CartaFlow não troca o seu bairro nem o seu logradouro pelo que está na base de CEPs.
- Os campos que você não envia são preenchidos a partir do CEP:
street,neighborhood,cityestate. - Se um campo não vier e o CEP não o informar, a API responde 422 com o código
address_incompletee nada é criado nem cobrado. Acontece com CEPs que valem para uma cidade inteira, comuns em cidades pequenas, que não têm logradouro nem bairro.
A mesma regra vale para o destinatário e o remetente de uma correspondência (to e from) e para o endereço de uma verificação.
O endereço mais curto
"to": {
"name": "Destinatário Exemplo",
"postal_code": "01001-000",
"number": "128",
"complement": "Ap. 52"
}A correspondência volta com o endereço completo, como será impresso:
"to": {
"name": "Destinatário Exemplo",
"street": "Praça da Sé",
"number": "128",
"complement": "Ap. 52",
"neighborhood": "Sé",
"city": "São Paulo",
"state": "SP",
"postal_code": "01001-000"
}Parte do endereço vem de você, parte do CEP
Se o seu cadastro tem o bairro do jeito que o cliente escreveu, envie. A CartaFlow usa o seu bairro e busca só o que faltou.
"to": {
"name": "Destinatário Exemplo",
"postal_code": "01001-000",
"number": "128",
"neighborhood": "Centro"
}"to": {
"name": "Destinatário Exemplo",
"street": "Praça da Sé",
"number": "128",
"complement": null,
"neighborhood": "Centro",
"city": "São Paulo",
"state": "SP",
"postal_code": "01001-000"
}O logradouro, a cidade e a UF vieram do CEP. O bairro é o que você enviou.
O endereço completo
Quando você já tem todos os campos, envie todos. Nada é buscado.
"to": {
"name": "Destinatário Exemplo",
"street": "Rua Exemplo",
"number": "128",
"complement": "Ap. 52",
"neighborhood": "Centro",
"city": "São Paulo",
"state": "SP",
"postal_code": "01001-000"
}Confira antes de enviar
POST /v1/letters/quote recebe o mesmo corpo da criação e devolve o endereço completo, sem criar nem cobrar nada. Use para mostrar o endereço ao seu usuário antes de confirmar.
Os campos
| Campo | Obrigatório | Regras |
|---|---|---|
name | Sim | Nome da pessoa ou da empresa, como deve aparecer no envelope. Até 60 caracteres. |
postal_code | Sim | CEP com 8 dígitos, com ou sem hífen: 01001-000 ou 01001000. Precisa existir na base de CEPs. Nas respostas, sempre volta como 00000-000. |
number | Sim | Número do imóvel, como texto, porque alguns têm letras (128A). Use S/N quando o endereço não tem número. Até 10 caracteres. |
complement | Não | Apartamento, bloco, sala, andar. Até 60 caracteres. Não vem do CEP: só é impresso se você enviar. |
street | Não | Logradouro com o tipo e o nome, sem o número: Rua Exemplo. Até 100 caracteres. Vem do CEP quando você não envia. |
neighborhood | Não | Bairro. Até 60 caracteres. Vem do CEP quando você não envia. |
city | Não | Cidade. Até 60 caracteres. Vem do CEP quando você não envia. |
state | Não | UF: a sigla do estado, com duas letras maiúsculas. Vem do CEP quando você não envia. |
Nas respostas, todos os campos aparecem sempre. complement vale null quando o endereço não tem complemento.
UFs
ACAcreALAlagoasAPAmapáAMAmazonasBABahiaCECearáDFDistrito FederalESEspírito SantoGOGoiásMAMaranhãoMTMato GrossoMSMato Grosso do SulMGMinas GeraisPAParáPBParaíbaPRParanáPEPernambucoPIPiauíRJRio de JaneiroRNRio Grande do NorteRSRio Grande do SulRORondôniaRRRoraimaSCSanta CatarinaSPSão PauloSESergipeTOTocantinsPreencha o formulário do seu cliente pelo CEP
GET /v1/postal-codes/{postal_code} devolve o logradouro, o bairro, a cidade e a UF de um CEP. É a mesma consulta que a API faz para completar os endereços. Não tem custo.
curl "https://api.cartaflow.com.br/v1/postal-codes/01001-000" \
-H "Authorization: Bearer $CARTAFLOW_API_KEY"{
"object": "postal_code",
"postal_code": "01001-000",
"street": "Praça da Sé",
"neighborhood": "Sé",
"city": "São Paulo",
"state": "SP"
}street e neighborhood valem null quando o CEP vale para a cidade inteira. Nesse caso, peça o logradouro e o bairro ao seu cliente e envie os dois na correspondência.
Chame a API pelo seu servidor
A chave de API nunca vai para o navegador nem para o app. O formulário chama o seu servidor, e o seu servidor chama a CartaFlow. Veja Autenticação.
Remetente
O remetente é impresso em uma linha acima do destinatário. É para onde os Correios devolvem a correspondência quando não conseguem entregar.
- Envie
fromna correspondência para usar um remetente específico, com a mesma regra de campos do destinatário. - Se você não enviar
from, usamos o remetente padrão da conta, que você define no painel em Configurações > Empresa. Ele aparece emdefault_senderde GET /v1/account.
Só endereços no Brasil
A CartaFlow imprime e posta no Brasil, para endereços no Brasil. Por isso não existe campo de país, e o CEP é sempre obrigatório.
Erros de endereço
Problemas de endereço chegam como 422 validation_error, com um item em details para cada campo. O param mostra o campo, por exemplo to.postal_code ou from.street.
details[].code | O que fazer |
|---|---|
postal_code_not_found | O CEP não existe na base. Confira os 8 dígitos com o seu cliente. |
address_incomplete | O CEP vale para a cidade inteira e não informa o campo de param. Envie esse campo, normalmente street e neighborhood. |
invalid_format | O CEP não tem 8 dígitos. Remova letras e espaços. |
too_long | O campo passa do tamanho máximo. Abrevie, por exemplo Avenida para Av. e Apartamento para Ap.. |
required | Faltou name, postal_code ou number. |
{
"error": {
"type": "validation_error",
"code": "invalid_parameters",
"message": "Um campo tem problema. Veja details.",
"request_id": "req_9Vb4Xk2Lq8Mz",
"doc_url": "https://docs.cartaflow.com.br/errors#invalid_parameters",
"details": [
{
"param": "to.street",
"code": "address_incomplete",
"message": "O CEP 13165-000 vale para a cidade inteira e não informa o logradouro. Envie street e neighborhood."
}
]
}
}A lista completa de códigos está em Erros.