Catta API v1
Guia de integração da Catta API: autenticação, créditos, endpoints, respostas e erros.
Primeiros passos
Use a base da versão v1 e valide a chave com o status do workspace antes de executar uma busca.
Base URL
Todas as rotas desta documentação usam HTTPS, retornam JSON e começam pela mesma base.
https://api.catta.com.br/v1A versão faz parte da URL. Monte os caminhos de busca a partir dessa base, por exemplo
https://api.catta.com.br/v1/search/name.
Primeira requisição
Consulte GET /workspace para validar a autenticação e conferir créditos e disponibilidade. Esse
endpoint não consome créditos.
curl "https://api.catta.com.br/v1/workspace" \
-H "Token: <api_key>"{
"handle": "empresa-exemplo",
"api_credits": 1200,
"can_search": true,
"search_status": "available",
"has_debt": false,
"is_banned": false
}Autenticação
Cada workspace possui uma chave própria, enviada no header Token em todas as requisições.
Chave de API
A chave fica disponível em Configurações → API no workspace. Envie seu valor no header
Token. A ausência do header ou uma chave bem-formada que não pertença a um workspace retorna
401; uma chave fora do formato esperado retorna 422 com o campo apiKey em params.
Segurança da credencial
Créditos e disponibilidade
Cada busca válida reserva um crédito antes de consultar os dados e só o consome quando encontra resultado.
Consumo de créditos
| Resultado da busca | Efeito sobre os créditos |
|---|---|
| Um ou mais registros | Consome 1 crédito, independentemente da quantidade retornada na página. |
| Nenhum registro | Não consome crédito; a reserva é devolvida ao workspace. |
Estado do workspace
Consulte GET /workspace sempre que precisar sincronizar a disponibilidade. Os campos
api_credits, can_search e search_status formam o estado operacional da integração.
search_status | Significado |
|---|---|
available | O workspace tem créditos e pode executar buscas. |
out_of_credits | Não existem créditos disponíveis. |
has_debt | As buscas estão temporariamente indisponíveis por pendência na conta. |
banned | O workspace foi desativado permanentemente. |
GET /workspace mesmo quando can_search for false. Apenas os endpoints
em /search/* exigem disponibilidade e reservam crédito.Endpoints
A v1 expõe o status do workspace e seis buscas por tipo. Todas as operações usam GET.
| Método | Caminho | Uso |
|---|---|---|
GET | /workspace | Consulta créditos e disponibilidade. |
GET | /search/name | Busca pessoas ou empresas por nome. |
GET | /search/cpf-cnpj | Consulta por CPF, CNPJ completo ou raiz de CNPJ. |
GET | /search/phone | Busca registros por telefone. |
GET | /search/address | Busca por endereço, número ou CEP. |
GET | /search/activity | Busca empresas por CNAE ou atividade. |
GET | /search/mother-name | Busca pessoas físicas pelo nome da mãe. |
Parâmetros comuns
Os parâmetros são enviados na query string. Cada endpoint detalha abaixo quais deles aceita.
| Parâmetro | Formato e comportamento |
|---|---|
state | Obrigatório nas buscas. Use uma UF brasileira; nome, nome da mãe, telefone com DDD, CNAE exato, raiz de CNPJ e CPF/CNPJ aceitam BR para busca nacional. |
query | Obrigatório nas buscas. O formato depende do endpoint. |
city | Opcional. Código IBGE da cidade com 7 dígitos. Não pode ser usado com state=BR. |
neighborhood | Opcional nas seis buscas. Nome do bairro, de 1 a 160 caracteres; exige city e uma UF. |
phone_type | Opcional nos endpoints compatíveis: landlines para fixos ou mobiles para celulares. |
person_type | Opcional nos endpoints compatíveis: individuals para pessoas físicas ou companies para pessoas jurídicas. |
page | Opcional nos endpoints paginados. A primeira página é usada quando o parâmetro é omitido. |
Para limitar os resultados a um bairro, combine neighborhood, city e state.
O filtro está disponível em Nome, CPF/CNPJ, Telefone, Endereço, Atividade e Nome
da mãe. Sem neighborhood, o comportamento da consulta permanece igual.
A busca ignora acentos e diferenças entre maiúsculas e minúsculas. Todas as
palavras informadas precisam aparecer no bairro, sem exigir a mesma ordem:
sao jose encontra São José, mas Jose não encontra Josefina. Cidade e bairro
precisam pertencer ao mesmo endereço cadastrado. Em Endereço, a rua, o CEP e os
demais termos também precisam corresponder a esse mesmo endereço.
O filtro é aplicado antes da contagem e da paginação. A lista addresses
contém somente os endereços que correspondem ao recorte; company_address
continua sendo o endereço cadastral da empresa. O bairro não representa a
localização atual da pessoa nem a origem do DDD do telefone.
Exemplo: empresas de uma atividade no bairro Ponta Verde, em Maceió:
curl --get "https://api.catta.com.br/v1/search/activity" \
-H "Token: <api_key>" \
--data-urlencode "state=AL" \
--data-urlencode "query=6201501" \
--data-urlencode "city=2704302" \
--data-urlencode "neighborhood=Ponta Verde"Informar neighborhood sem cidade, com state=BR, vazio ou acima de 160
caracteres retorna 422 com os campos inválidos em params. O formato da
resposta, a paginação e o consumo de créditos não mudam.
Formatos de resposta
Nome, telefone, endereço, atividade e nome da mãe retornam um objeto paginado com start,
limit, length, total e results. Cada página contém até 10 resultados. A busca por CPF/CNPJ
completo é direta: retorna um registro ou {} quando nada é encontrado. No mesmo endpoint,
uma raiz de CNPJ com oito caracteres retorna o objeto paginado, mesmo com apenas um
estabelecimento. Sem resultados, a raiz retorna total: 0 e results: [].
Nas buscas por nome, nome da mãe e telefone com state=BR, cada resultado reúne a mesma
identidade por CPF/CNPJ, com telefones e endereços separados por UF. total conta
identidades, não ocorrências estaduais. São aceitas páginas de 1 a 10, com até
100 resultados navegáveis. Nome da mãe retorna cada pessoa encontrada pelo CPF
dela. Registros sem documento utilizável permanecem separados.
A busca nacional usa os mesmos endpoints da v1. Consultas com uma UF específica continuam retornando o formato estadual existente.
Nome e nome da mãe com state=BR são ordenados por relevância:
nome completo, sequência de palavras e demais correspondências. A melhor
correspondência entre nome civil, social, razão social e fantasia determina a
posição; atualização e identidade desempatam. Ocorrências em mais UFs não
aumentam a relevância. Essa ordenação não acrescenta busca aproximada.
Consultas por UF mantêm a ordenação estadual existente.
Buscas nacionais muito amplas ou que excedam o tempo disponível retornam 422
com code: "search_national_limit"; refine a consulta ou selecione uma UF. Não há
resultado parcial nem cobrança de crédito nessa falha. Mudanças concorrentes
nos resultados podem retornar 409 com code: "search_results_changed"; repita
a busca. A seleção e o total podem ser reutilizados por até cinco minutos;
os dados das identidades da página são relidos a cada requisição.
id e lgpd_removed: true. Trate esse estado sem tentar reutilizar dados armazenados
anteriormente./workspaceStatus do workspace
Retorna o estado operacional do workspace vinculado à chave. A requisição exige autenticação, mas não exige disponibilidade para busca e não consome créditos.
curl "https://api.catta.com.br/v1/workspace" \
-H "Token: <api_key>"| Campo | Descrição |
|---|---|
handle | Identificador do workspace no Catta. |
api_credits | Créditos disponíveis para buscas com resultado. |
can_search | Indica se a chave pode executar buscas neste momento. |
search_status | Estado operacional: available, out_of_credits, has_debt ou banned. |
has_debt | Indica bloqueio temporário por pendência na conta. |
is_banned | Indica desativação permanente do workspace. |
/search/nameBusca por nome
Busca pessoas físicas ou jurídicas por nome, nome civil ou razão social. Os resultados são
paginados. Use uma UF para a consulta estadual ou BR para a consulta nacional.
curl "https://api.catta.com.br/v1/search/name?state=AL&query=Empresa%20Exemplo&page=1" \
-H "Token: <api_key>"Para buscar em todo o país, mantendo um resultado por CPF/CNPJ:
curl "https://api.catta.com.br/v1/search/name?state=BR&query=Pessoa%20Exemplo%20Completa&page=1" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | Use uma UF brasileira ou BR para busca nacional. |
query | Sim | Nome, nome civil ou razão social. |
person_type | Não | individuals ou companies. |
phone_type | Não | landlines ou mobiles. |
city | Não | Código IBGE; não pode ser combinado com state=BR. |
neighborhood | Não | Nome do bairro; exige city e uma UF. |
page | Não | Página buscada. Com state=BR, número inteiro de 1 a 10. |
/search/cpf-cnpjBusca por CPF ou CNPJ
Aceita CPF completo (11 dígitos), CNPJ completo (14 caracteres) ou raiz de CNPJ
(8 caracteres), com ou sem pontuação. A entrada determina a consulta e a resposta;
não é necessário informar outro tipo de busca. Aceita state=BR ou uma UF.
| Entrada normalizada | Resultado |
|---|---|
| CPF com 11 dígitos | Um registro ou {}. Sem paginação. |
| CNPJ com 14 caracteres | Um estabelecimento ou {}. Sem paginação. |
| Raiz com 8 caracteres | Estabelecimentos paginados, com total exato. |
CNPJ e raiz aceitam letras ASCII e números, preservando zeros iniciais. No CNPJ completo, as duas posições finais continuam numéricas. A resposta usa CNPJ uppercase sem máscara. Um documento completo nunca é truncado para buscar sua raiz.
curl "https://api.catta.com.br/v1/search/cpf-cnpj?state=BR&query=12ABC34501DE35" \
-H "Token: <api_key>"
curl "https://api.catta.com.br/v1/search/cpf-cnpj?state=BR&query=12ABC345&page=2" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | UF brasileira ou BR. |
query | Sim | CPF, CNPJ completo ou raiz. Exemplos: 529.982.247-25, 12.ABC.345/01DE-35, 00.123.456. |
phone_type | Não | landlines ou mobiles. |
city | Não | Código IBGE; exige UF. |
neighborhood | Não | Nome do bairro; exige city e UF. |
page | Não | Somente para raiz: inteiro de 1 a 10, primeira página por padrão. Não altera a resposta de documento completo. |
Na raiz, a resposta usa { start, limit, length, total, results }, com dez
estabelecimentos por página, ordenados pelo CNPJ completo. total conta todos
os estabelecimentos distintos da seleção, inclusive além das cem posições navegáveis.
O formato permanece paginado mesmo quando há zero ou um estabelecimento.
Exemplo de raiz sem resultados:
{ "start": 0, "limit": 10, "length": 0, "total": 0, "results": [] }Cada CNPJ completo é um estabelecimento separado. Em BR, os telefones e endereços
de cada estabelecimento são reunidos por UF. Com uma UF, mantém-se o formato estadual.
A indicação de matriz ou filial vem do cadastro e não é deduzida da ordem do CNPJ.
A raiz não realiza atualização externa de cada estabelecimento.
Entradas fora dos comprimentos/formatos aceitos e páginas inválidas para raiz
retornam 422. Uma raiz que exceda o orçamento da busca exige refinamento, sem
contagem parcial. Resultado vazio ou falha restitui a reserva de crédito.
/search/phoneBusca por telefone
Busca registros por telefone. Na UF, mantém a consulta com ou sem DDD.
Com state=BR, exige número completo com DDD; aceita máscaras e código de país 55.
Não acrescenta dígitos nem restringe a UF pelo DDD. Os resultados são paginados
por CPF/CNPJ, com os dados reunidos por UF, e ordenados por recência e identidade.
Pessoas ou empresas que compartilham um telefone permanecem separadas.
curl "https://api.catta.com.br/v1/search/phone?state=AL&query=0000000000&page=1" \
-H "Token: <api_key>"curl "https://api.catta.com.br/v1/search/phone?state=BR&query=%2B55%20%2811%29%2098765-4321&page=1" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | Use uma UF brasileira ou BR para busca nacional. |
query | Sim | Telefone com ou sem formatação. Com BR, informe DDD + número (10 ou 11 dígitos), opcionalmente com 55. |
person_type | Não | individuals ou companies. |
city | Não | Código IBGE da cidade; não pode ser combinado com BR. |
neighborhood | Não | Nome do bairro; exige city e uma UF. |
page | Não | Página buscada. Com BR, número inteiro de 1 a 10. |
/search/addressBusca por endereço
Busca por endereço ou CEP, que podem ser acompanhados do número. Os resultados são paginados. O CEP pode ser informado com ou sem pontuação.
57035020 224, 57035-020, 224 e CEP: 57035-020, nº 224 buscam pelo mesmo
CEP e número. Complementos informados permanecem como termos da busca.
O tipo de via no início da consulta é opcional: Rua São João, R. São João e
São João buscam pelo mesmo nome, incluindo avenidas e outros tipos de via.
Informe a cidade e o número para distinguir endereços com nomes iguais.
Títulos comuns aceitam abreviações, como Desembargador/Des., Doutor/Dr.
e Professor/Prof.. Em nomes mais específicos, a busca também pode encontrar
cadastros sem o título, dando preferência aos que correspondem ao informado.
Em nomes curtos, como Doutor Arnaldo, o título continua necessário até que
uma cidade seja informada. Número e complemento continuam restringindo a busca.
Buscas com título que excedam o tempo disponível retornam 422 com
code: "search_address_limit", sem resultado parcial nem cobrança de crédito.
Informe um CEP ou refine pela cidade e pelo número para tornar a consulta mais específica.
curl "https://api.catta.com.br/v1/search/address?state=AL&query=Avenida%20Exemplo%20100&page=1" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | Use uma UF brasileira. Busca nacional não está disponível. |
query | Sim | Nome da via ou CEP, com número opcional. |
person_type | Não | individuals ou companies. |
phone_type | Não | landlines ou mobiles. |
city | Não | Código IBGE da cidade. |
neighborhood | Não | Nome do bairro; exige city e uma UF. |
page | Não | Página buscada. |
/search/activityBusca por atividade
Busca empresas pelo código CNAE ou pelo nome da atividade econômica. Códigos podem ser enviados
com 6 ou 7 dígitos e máscara opcional. Com state=BR, exige o código CNAE exato;
pesquisa principal e secundárias, retornando cada estabelecimento uma vez, com suas UFs
reunidas. O total é exato para a seleção, inclusive além das cem posições navegáveis,
e a ordenação nacional usa a identidade do estabelecimento. Busca textual exige UF.
Os resultados são paginados no mesmo envelope { start, limit, length, total, results }.
curl "https://api.catta.com.br/v1/search/activity?state=BR&query=6201501&page=1" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | UF brasileira ou BR, com CNAE exato. |
query | Sim | Código CNAE, por exemplo 6201-5/01; nome da atividade apenas com UF. |
phone_type | Não | landlines ou mobiles. |
city | Não | Código IBGE da cidade; exige UF. |
neighborhood | Não | Nome do bairro; exige city e uma UF. |
page | Não | Página buscada. Com BR, inteiro de 1 a 10. |
/search/mother-nameBusca por nome da mãe
Busca pessoas físicas pelo nome da mãe. Os resultados são paginados. Use uma UF
para a consulta estadual ou BR para a consulta nacional. Cada filho permanece
como uma identidade distinta pelo próprio CPF.
curl "https://api.catta.com.br/v1/search/mother-name?state=AL&query=Maria%20Exemplo&page=1" \
-H "Token: <api_key>"Para buscar em todo o país e reunir os dados de cada pessoa por UF:
curl "https://api.catta.com.br/v1/search/mother-name?state=BR&query=Maria%20Exemplo%20Completa&page=1" \
-H "Token: <api_key>"| Parâmetro | Obrigatório | Observação |
|---|---|---|
state | Sim | Use uma UF brasileira ou BR para busca nacional. |
query | Sim | Nome da mãe. |
phone_type | Não | landlines ou mobiles. |
city | Não | Código IBGE; não pode ser combinado com state=BR. |
neighborhood | Não | Nome do bairro; exige city e uma UF. |
page | Não | Página buscada. Com state=BR, número inteiro de 1 a 10. |
Erros
Falhas usam status HTTP e um corpo JSON com message. Erros de validação também incluem params.
Formato da resposta
{
"message": "Algumas informações enviadas não puderam ser processadas. Revise os campos e tente novamente.",
"params": [
{
"param": "state",
"message": "O estado a ser buscado não é válido."
}
]
}Status HTTP
| Status | Significado |
|---|---|
401 | O header Token não foi enviado ou a chave bem-formada não pertence a um workspace. |
403 | Um endpoint em /search/* foi chamado por um workspace sem créditos, inadimplente ou permanentemente desativado. GET /workspace continua disponível para consultar esse estado. |
404 | O caminho solicitado não existe na API. |
405 | O endpoint existe, mas não aceita o método HTTP usado. |
422 | A chave está malformada, algum parâmetro é inválido ou a busca precisa de refinamento. |
500 | Uma falha interna impediu o processamento da requisição. |
Retentativas e observabilidade
Não registre o header Token nem respostas com dados pessoais em ferramentas de observabilidade.
Defina timeout no cliente e, antes de repetir uma busca após uma falha de rede, considere que a
primeira requisição pode ter sido processada e consumido crédito.
Suporte
Quer desenhar o melhor fluxo para o seu produto?
Fale com a equipe sobre integração, volume de buscas ou uso responsável da API.