Base URL:
Todas as rotas de dados exigem autenticação. Existem 3 métodos aceitos:
| Método | Como usar | Quando usar |
|---|---|---|
Bearer Token | Header Authorization: Bearer SEU_TOKEN | APIs, bots, integrações |
Query Param | Adicione ?token=SEU_TOKEN na URL | Testes rápidos, webhooks |
Session Cookie | Login via POST /api/login | Navegador / painel web |
Crie tokens na aba Tokens do painel. Cada token pode ter limite diário, limite por minuto e expiração.
# Buscar CPF com Bearer token
curl -H "Authorization: Bearer SEU_TOKEN_AQUI" http://v1.workzap.io/api/cpf/00000000272
# Buscar nome
curl -H "Authorization: Bearer SEU_TOKEN_AQUI" "http://v1.workzap.io/api/nome/Isaias?mode=prefixo&limit=10"
curl "http://v1.workzap.io/api/cpf/00000000272?token=SEU_TOKEN_AQUI"
| Status | Erro | Causa |
|---|---|---|
401 | Token inválido | Token não existe |
403 | Token bloqueado / Token inactive / Token expirado | Token não é mais válido |
429 | Limite atingido | Limite diário ou por minuto foi atingido |
Autentica o usuário e retorna um cookie de sessão.
| Campo | Tipo | Descrição |
|---|---|---|
username | string | Nome de usuário |
password | string | Senha |
curl -c cookies.txt -X POST http://v1.workzap.io/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}'
Resposta: {"success": true, "username": "admin"}
Encerra a sessão.
curl -b cookies.txt -X POST http://v1.workzap.io/api/logout
Verifica se está autenticado.
curl -b cookies.txt http://v1.workzap.io/api/me
Resposta: {"authenticated": true, "username": "admin"}
Status do banco e total de registros.
curl -b cookies.txt http://v1.workzap.io/api/status
Resposta: {"status": "online", "total_registros": 223739201}
Busca por CPF (somente números). Aceita com ou sem formatação.
| Param | Tipo | Descrição |
|---|---|---|
:cpf | string | CPF (ex: 00000000272 ou 000.000.002-72) |
curl -b cookies.txt http://v1.workzap.io/api/cpf/00000000272
Resposta:
[{
"id": 4511,
"cpf": "00000000272",
"nome": "Gherson Dywyno Esphyndola",
"nascimento": "31/03/1966",
"genero": "M - Masculino"
}]
Busca por nome. Suporta 4 modos de busca.
| Param | Tipo | Descrição |
|---|---|---|
:nome | string | Nome a buscar |
?mode | string | auto (padrão) | exato | prefixo | contem |
?limit | number | Máx resultados (padrão: 50, máx: 500) |
Modos de busca:
| Modo | Velocidade | Descrição |
|---|---|---|
auto | Rapido | Tenta exato, depois prefixo |
exato | Rapido | Nome completo identico |
prefixo | Rapido | Comeca com o texto digitado |
contem | Lento (~1min) | Contem o texto em qualquer posicao |
# Busca auto (recomendada)
curl -b cookies.txt "http://v1.workzap.io/api/nome/Isaias%20Amaral%20dos%20Santos?limit=10"
# Busca por prefixo
curl -b cookies.txt "http://v1.workzap.io/api/nome/Isaias%20Amaral?mode=prefixo&limit=10"
Busca por data de nascimento.
| Param | Tipo | Descrição |
|---|---|---|
?data | string | Data no formato dd/mm/aaaa |
?limit | number | Máx resultados (padrão: 50, máx: 500) |
curl -b cookies.txt "http://v1.workzap.io/api/nascimento?data=31/03/1966&limit=5"
Executa query SQL livre. Somente SELECT permitido. Se não incluir LIMIT, o sistema adiciona LIMIT 100 automaticamente.
| Campo | Tipo | Descrição |
|---|---|---|
sql | string | Query SELECT a executar |
curl -b cookies.txt -X POST http://v1.workzap.io/api/query \
-H "Content-Type: application/json" \
-d '{"sql":"SELECT * FROM `1analytics` WHERE genero LIKE '\''F%'\'' LIMIT 5"}'
Resposta: {"total": 5, "dados": [...]}
O banco contém uma tabela 1analytics com a seguinte estrutura:
| Coluna | Tipo | Descrição |
|---|---|---|
id | int (PK) | ID auto-incremento |
cpf | varchar(255) | CPF (somente números, 11 dígitos) |
nome | varchar(255) | Nome completo |
nascimento | varchar(255) | Data nascimento (dd/mm/aaaa ou N/D) |
genero | varchar(255) | M - Masculino / F - Feminino / I - Intersexo |
import requests
base = 'http://v1.workzap.io'
headers = {'Authorization': 'Bearer SEU_TOKEN_AQUI'}
# Buscar por CPF
r = requests.get(f'{base}/api/cpf/00000000272', headers=headers)
print(r.json())
# Buscar por nome
r = requests.get(f'{base}/api/nome/Isaias Amaral dos Santos', headers=headers, params={'limit': 10})
print(r.json())
# Query SQL
r = requests.post(f'{base}/api/query', headers=headers, json={'sql': 'SELECT COUNT(*) as total FROM `1analytics`'})
print(r.json())
const TOKEN = 'SEU_TOKEN_AQUI';
const headers = { 'Authorization': `Bearer ${TOKEN}` };
// Buscar por CPF
const res = await fetch('/api/cpf/00000000272', { headers });
console.log(await res.json());
// Query SQL
const res2 = await fetch('/api/query', {
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({ sql: "SELECT * FROM `1analytics` WHERE nome = 'Isaias Amaral dos Santos'" })
});
console.log(await res2.json());
| Status | Significado |
|---|---|
200 | Sucesso |
400 | Parâmetro inválido ou ausente |
401 | Não autenticado / Token inválido |
403 | Query não permitida / Token bloqueado/expirado |
404 | CPF não encontrado |
429 | Limite diário ou por minuto atingido |
500 | Erro interno do servidor |
503 | Banco offline |
Atenção: copie o token agora. Ele não será exibido novamente.
Realize uma pesquisa para exibir os resultados