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/v1

A 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.

RequisiçãoGET /workspace
curl "https://api.catta.com.br/v1/workspace" \
  -H "Token: <api_key>"
Resposta200 OK
{
  "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 buscaEfeito sobre os créditos
Um ou mais registrosConsome 1 crédito, independentemente da quantidade retornada na página.
Nenhum registroNã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_statusSignificado
availableO workspace tem créditos e pode executar buscas.
out_of_creditsNão existem créditos disponíveis.
has_debtAs buscas estão temporariamente indisponíveis por pendência na conta.
bannedO workspace foi desativado permanentemente.

Endpoints

A v1 expõe o status do workspace e seis buscas por tipo. Todas as operações usam GET.

MétodoCaminhoUso
GET/workspaceConsulta créditos e disponibilidade.
GET/search/nameBusca pessoas ou empresas por nome.
GET/search/cpf-cnpjConsulta por CPF, CNPJ completo ou raiz de CNPJ.
GET/search/phoneBusca registros por telefone.
GET/search/addressBusca por endereço, número ou CEP.
GET/search/activityBusca empresas por CNAE ou atividade.
GET/search/mother-nameBusca 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âmetroFormato e comportamento
stateObrigató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.
queryObrigatório nas buscas. O formato depende do endpoint.
cityOpcional. Código IBGE da cidade com 7 dígitos. Não pode ser usado com state=BR.
neighborhoodOpcional nas seis buscas. Nome do bairro, de 1 a 160 caracteres; exige city e uma UF.
phone_typeOpcional nos endpoints compatíveis: landlines para fixos ou mobiles para celulares.
person_typeOpcional nos endpoints compatíveis: individuals para pessoas físicas ou companies para pessoas jurídicas.
pageOpcional 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.

GET/workspace

Status 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>"
CampoDescrição
handleIdentificador do workspace no Catta.
api_creditsCréditos disponíveis para buscas com resultado.
can_searchIndica se a chave pode executar buscas neste momento.
search_statusEstado operacional: available, out_of_credits, has_debt ou banned.
has_debtIndica bloqueio temporário por pendência na conta.
is_bannedIndica desativação permanente do workspace.
GET/search/name

Busca 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âmetroObrigatórioObservação
stateSimUse uma UF brasileira ou BR para busca nacional.
querySimNome, nome civil ou razão social.
person_typeNãoindividuals ou companies.
phone_typeNãolandlines ou mobiles.
cityNãoCódigo IBGE; não pode ser combinado com state=BR.
neighborhoodNãoNome do bairro; exige city e uma UF.
pageNãoPágina buscada. Com state=BR, número inteiro de 1 a 10.
GET/search/cpf-cnpj

Busca 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 normalizadaResultado
CPF com 11 dígitosUm registro ou {}. Sem paginação.
CNPJ com 14 caracteresUm estabelecimento ou {}. Sem paginação.
Raiz com 8 caracteresEstabelecimentos 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âmetroObrigatórioObservação
stateSimUF brasileira ou BR.
querySimCPF, CNPJ completo ou raiz. Exemplos: 529.982.247-25, 12.ABC.345/01DE-35, 00.123.456.
phone_typeNãolandlines ou mobiles.
cityNãoCódigo IBGE; exige UF.
neighborhoodNãoNome do bairro; exige city e UF.
pageNãoSomente 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.

GET/search/phone

Busca 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âmetroObrigatórioObservação
stateSimUse uma UF brasileira ou BR para busca nacional.
querySimTelefone com ou sem formatação. Com BR, informe DDD + número (10 ou 11 dígitos), opcionalmente com 55.
person_typeNãoindividuals ou companies.
cityNãoCódigo IBGE da cidade; não pode ser combinado com BR.
neighborhoodNãoNome do bairro; exige city e uma UF.
pageNãoPágina buscada. Com BR, número inteiro de 1 a 10.
GET/search/address

Busca 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âmetroObrigatórioObservação
stateSimUse uma UF brasileira. Busca nacional não está disponível.
querySimNome da via ou CEP, com número opcional.
person_typeNãoindividuals ou companies.
phone_typeNãolandlines ou mobiles.
cityNãoCódigo IBGE da cidade.
neighborhoodNãoNome do bairro; exige city e uma UF.
pageNãoPágina buscada.
GET/search/activity

Busca 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âmetroObrigatórioObservação
stateSimUF brasileira ou BR, com CNAE exato.
querySimCódigo CNAE, por exemplo 6201-5/01; nome da atividade apenas com UF.
phone_typeNãolandlines ou mobiles.
cityNãoCódigo IBGE da cidade; exige UF.
neighborhoodNãoNome do bairro; exige city e uma UF.
pageNãoPágina buscada. Com BR, inteiro de 1 a 10.
GET/search/mother-name

Busca 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âmetroObrigatórioObservação
stateSimUse uma UF brasileira ou BR para busca nacional.
querySimNome da mãe.
phone_typeNãolandlines ou mobiles.
cityNãoCódigo IBGE; não pode ser combinado com state=BR.
neighborhoodNãoNome do bairro; exige city e uma UF.
pageNãoPá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

StatusSignificado
401O header Token não foi enviado ou a chave bem-formada não pertence a um workspace.
403Um endpoint em /search/* foi chamado por um workspace sem créditos, inadimplente ou permanentemente desativado. GET /workspace continua disponível para consultar esse estado.
404O caminho solicitado não existe na API.
405O endpoint existe, mas não aceita o método HTTP usado.
422A chave está malformada, algum parâmetro é inválido ou a busca precisa de refinamento.
500Uma 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

Suporte de integração

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.