Acesso programático de informações é algo fundamental na comunicação entre sistemas mas, para nossa surpresa, uma informação tão útil e pública quanto um CEP não consegue ser acessada diretamente por um navegador por conta da API dos Correios não possuir CORS habilitado.
Dado a isso, este projeto experimental tem como objetivo centralizar e disponibilizar endpoints modernos com baixíssima latência utilizando tecnologias como Vercel Smart CDN responsável por fazer o cache das informações em atualmente 23 regiões distribuídas ao longo do mundo (incluindo Brasil). Então não importa o quão devagar for a fonte dos dados, nós queremos disponibilizá-la da forma mais rápida e moderna possível.
Através do Next.js, um framework utilizado por empresas como Marvel, Twitch, Nike, Hulu, TypeForm, Nubank, Ferrari, TikTok, Square Enix, entre outras, estamos construindo a página de apresentação do projeto e, por ser um framework híbrido, ele possibilita a construção e deploy de APIs com o mínimo de configuração possível em uma infraestrutura autoescalável da Vercel, a mesma que conta com recursos sensacionais como a Vercel Smart CDN.
Caso você esteja lendo esta versão de README, você está pegando o projeto num estágio extremamente inicial, porém empolgante, pois há várias coisas a serem definidas. Então caso queira contribuir, utilize as issues para entender quais pontos ainda não foram resolvidos, conversar conosco e contribuir tanto com idéias técnicas, quanto de quais APIs podem ser criadas.
Veja mais detalhes sobre Como contribuir no arquivo CONTRIBUTING.md
O primeiro endpoint a ser implementado precisava ser o que estava nos dando a maior dor de cabeça: busca de um endereço através do CEP. É um endpoint extremamente simples de implementar, mas vários detalhes ainda não foram resolvidos, como garantir seu comportamento através de testes E2E utilizando a Preview URL que a Vercel retorna a cada Pull Request. Depois de consolidarmos as melhores práticas para esse endpoint, poderemos replicar para todos os outros que irão vir.
Busca por CEP com múltiplos providers de fallback.
GET https://brasilapi.com.br/api/cep/v1/
[cep]
// GET https://brasilapi.com.br/api/cep/v1/05010000
{
"cep": "05010000",
"state": "SP",
"city": "São Paulo",
"neighborhood": "Perdizes",
"street": "Rua Caiubi"
}
// GET https://brasilapi.com.br/api/cep/v1/00000000
{
"name": "CepPromiseError",
"message": "Todos os serviços de CEP retornaram erro.",
"type": "service_error",
"errors": [
{
"name": "ServiceError",
"message": "CEP INVÁLIDO",
"service": "correios"
},
{
"name": "ServiceError",
"message": "CEP não encontrado na base do ViaCEP.",
"service": "viacep"
}
]
}
Busca por dados dos bancos brasileiros direto na base de dados do Bacen.
GET https://brasilapi.com.br/api/banks/v1/
[code]
// GET https://brasilapi.com.br/api/banks/v1/260
{
"ispb": "18236120",
"name": "NU PAGAMENTOS S.A.",
"code": 260,
"fullName": "Nu Pagamentos S.A."
}
// GET https://brasilapi.com.br/api/banks/v1/1111111
{
"message": "Código bancário não encontrado",
"type": "BANK_CODE_NOT_FOUND"
}
GET https://brasilapi.com.br/api/banks/v1
// GET https://brasilapi.com.br/api/banks/v1
[
{
"ispb": "18236120",
"name": "NU PAGAMENTOS S.A.",
"code": 260,
"fullName": "Nu Pagamentos S.A."
},
...
]
Busca as cidades brasileiras referente a um DDD.
GET https://brasilapi.com.br/api/ddd/v1/11
[code]
// GET https://brasilapi.com.br/api/ddd/v1/11
{
"state": "SP",
"cities": [
"EMBU",
"VÁRZEA PAULISTA",
"VARGEM GRANDE PAULISTA",
"VARGEM",
"TUIUTI",
"TABOÃO DA SERRA",
"SUZANO",
"SÃO ROQUE",
"SÃO PAULO",
...
]
}
// GET https://brasilapi.com.br/api/ddd/v1/01
{
"name": "ddd_error",
"message": "DDD não encontrado",
"type": "DDD_NOT_FOUND"
}
// GET https://brasilapi.com.br/api/ddd/v1/17
{
"name": "ddd_error",
"message": "Todos os serviços de DDD retornaram erro.",
"type": "service_error"
}
Busca de detalhes de pessoas jurídicas pelo número do CNPJ utilizando a API Minha Receita..
GET https://brasilapi.com.br/api/cnpj/v1/19131243000197
[code]
// GET https://brasilapi.com.br/api/cnpj/v1/19131243000197
{
"cnpj": "19131243000197",
"identificador_matriz_filial": 1,
"descricao_matriz_filial": "Matriz",
"razao_social": "OPEN KNOWLEDGE BRASIL",
"nome_fantasia": "REDE PELO CONHECIMENTO LIVRE",
"situacao_cadastral": 2,
"descricao_situacao_cadastral": "Ativa",
"data_situacao_cadastral": "2013-10-03",
"motivo_situacao_cadastral": 0,
...
}
// GET https://brasilapi.com.br/api/cnpj/v1/00000000000000
{"message": "CNPJ 00000000000000 não encontrado."}
// GET https://brasilapi.com.br/api/cnpj/v1/000
{"message": "CNPJ 000 inválido."}
Lista feriados nacionais de determinado ano.
GET https://brasilapi.com.br/api/feriados/v1/
[ano]
// GET https://brasilapi.com.br/api/feriados/v1/2021
[
{
"date": "2021-01-01",
"name": "Confraternização mundial",
"type": "national"
},
{
"date": "2021-02-16",
"name": "Carnaval",
"type": "national"
},
// ...
]
// GET https://brasilapi.com.br/api/feriados/v1/3000
// HTTP/1.1 404 Not Found
{
"type": "feriados_range_error",
"message": "Ano fora do intervalo suportado entre 1900 e 2199."
}
// GET https://brasilapi.com.br/api/feriados/v1/erro
// HTTP/1.1 500 Internal Server Error
{
"type": "feriados_error",
"message": "Erro ao calcular feriados."
}
O BrasilAPI é uma iniciativa feita de brasileiros para brasileiros, por favor, não abuse deste serviço. Estamos em beta e ainda elaborando os Termos de Uso, mas por enquanto por favor não utilize formas automatizadas para fazer "crawling" dos dados da API. Um exemplo prático disto é um dos maiores provedores de telefonia do Brasil estar revalidando, neste exato momento, todos os Ceps (de 00000000
até 99999999
) e estourando em 5 vezes o limite atual da nossa conta no servidor. O volume de consulta dever ter a natureza de uma pessoa real requisitando um determinado dado. E para consultas com um alto volume automatizado, iremos mais para frente fornecer alguma solução, como por exemplo, conseguir fazer o download de toda a base de Ceps em uma única request.
![]() @filipedeschamps |
![]() @lucianopf |
---|