Consultas Raise

API REFERENCE

REST · JSON · Sessão por cookie

Documentação da API

A API do painel expõe o mesmo motor de consultas usado na interface: catálogo de funcionalidades, execução de consultas, lote de score/renda, histórico por usuário e administração de contas. Todas as rotas falam JSON e respondem no domínio do painel.

Base URL /
Formato application/json
Autenticação cookie painel_session
Validade da sessão 12 horas

01 Visão geral

O acesso é feito com uma sessão assinada guardada em cookie. Depois do login, o cookie acompanha automaticamente as requisições feitas pelo navegador. Em clientes externos (cURL, scripts), basta reenviar o cookie recebido no login.

i
O painel pode ser publicado sob um prefixo, como /painel, quando fica atrás de um proxy reverso. Nesse caso, todas as rotas abaixo ganham o prefixo — por exemplo /painel/api/consulta.
PáginaAcessoDescrição
GET /PúblicoLanding page com os planos.
GET /loginPúblicoTela de login.
GET /appSessãoPainel de consultas. Sem sessão, redireciona para /login.
GET /docsPúblicoEsta documentação.

02 Autenticação

O login valida usuário e senha e devolve um cookie de sessão assinado. Não há token Bearer: a credencial de acesso é o próprio cookie.

POST /api/session/login Público Autentica e cria a sessão.
CampoTipoDescrição
usernameobrigatórioNome de usuário cadastrado no painel.
passwordobrigatórioSenha do usuário.
Requisição
curl -i -c cookies.txt \
  -X POST https://consultas.raisetech.online/api/session/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"SUA_SENHA"}'
Resposta · 200
{
  "username": "admin"
}
GET /api/session Público Informa se a sessão atual está autenticada.
Resposta · autenticado
{
  "authenticated": true,
  "username": "admin",
  "role": "admin"
}
Resposta · sem sessão
{
  "authenticated": false,
  "username": null,
  "role": null
}
POST /api/session/logout Sessão Encerra a sessão e invalida o cookie.
Resposta · 200
{
  "ok": true
}
!
A senha trafega em texto claro no corpo da requisição — por isso o uso de HTTPS é obrigatório. O cookie de sessão é assinado, dura 12 horas e não é renovado automaticamente a cada requisição.

03 Catálogo de consultas

Antes de consultar, leia o catálogo. Ele traz os grupos do menu e, para cada funcionalidade, a chave usada na API, o rótulo exibido no painel, o tipo de dado esperado e se a consulta exige um valor.

GET /api/features Sessão Lista as 36 funcionalidades, agrupadas.
Resposta · 200
{
  "groups": ["Pessoa", "Empresa", "Veículo", "PIX", "Outros"],
  "features": [
    {
      "key": "cpf",
      "label": "CPF Completo",
      "icon": "🆔",
      "placeholder": "CPF (somente números)",
      "kind": "num",
      "group": "Pessoa",
      "requires_value": true
    }
  ]
}
CampoDescrição
keyIdentificador a ser enviado em feature na consulta.
labelNome exibido na interface.
kindnum ou texto — apenas sugere o teclado no painel.
groupGrupo do menu: Pessoa, Empresa, Veículo, PIX ou Outros.
requires_valuefalse em comandos sem parâmetro, como gcnpj.

04 Executar consulta

Rota principal: executa uma funcionalidade do catálogo para um valor. O resultado pode vir do cache local (7 dias) ou de uma consulta nova ao provedor, o que leva alguns segundos.

POST /api/consulta Sessão Executa a consulta e devolve o resultado estruturado.
CampoTipoDescrição
featureobrigatórioChave da funcionalidade (ex.: cpf, placa, gcnpj).
valoropcionalValor consultado. Obrigatório quando a funcionalidade exige parâmetro.
force_refreshopcionaltrue ignora o cache e consulta o provedor novamente. Padrão: false.
Requisição
curl -b cookies.txt \
  -X POST https://consultas.raisetech.online/api/consulta \
  -H "Content-Type: application/json" \
  -d '{"feature":"cpf","valor":"00000000000"}'
Resposta · consulta resolvida
{
  "status": "RESOLVIDO",
  "detail": null,
  "from_cache": false,
  "payload": {
    "modulo": "cpf",
    "valor": "00000000000",
    "dados": {
      "DADOS_PESSOAIS": {
        "NOME": "NOME DA PESSOA",
        "SCORE": "720",
        "RENDA": "3500"
      },
      "SECOES": [
        {
          "titulo": "DADOS PESSOAIS",
          "itens": [
            { "label": "Nome", "valor": "NOME DA PESSOA" }
          ]
        }
      ]
    },
    "secoes": [
      {
        "titulo": "DADOS PESSOAIS",
        "itens": [
          { "label": "Nome", "valor": "NOME DA PESSOA" }
        ]
      }
    ],
    "expiresAt": "2026-09-20T05:23:41.000Z"
  }
}
i
payload.secoes é um espelho de payload.dados.SECOES, já pronto para renderização. Quando a seção SECOES não existe, apenas dados vem preenchido — por isso vale sempre tratar os dois caminhos.

Valores possíveis de status

StatusSignificadopayload
RESOLVIDOConsulta concluída com dados.preenchido
NAO_ENCONTRADOO provedor não encontrou registros para o valor.null
SEM_DADOSRespondeu, mas sem dados úteis.null
ERROFalha na consulta. O motivo vem em detail.null
!
O provedor responde de forma intermitente. O serviço já reenvia o comando automaticamente algumas vezes antes de devolver ERRO — quando isso acontece, vale tentar de novo antes de concluir que não há dados.
Resposta · erro
{
  "status": "ERRO",
  "detail": "o bot não respondeu após 3 tentativas — tente novamente",
  "payload": null,
  "from_cache": false
}

05 Score em lote

Consulta vários CPFs de uma vez e devolve nome, score e renda de cada um. O processamento roda em segundo plano: a chamada inicial apenas abre o lote e devolve um identificador, e o progresso é lido por polling.

POST /api/score/lote Sessão Abre um lote. Limite de 100 CPFs.
CampoTipoDescrição
cpfsobrigatórioLista de CPFs (com ou sem pontuação — só os dígitos são considerados). Duplicatas são descartadas.
force_refreshreservadoAceito no corpo, porém ainda não aplicado ao lote.
Requisição
curl -b cookies.txt \
  -X POST https://consultas.raisetech.online/api/score/lote \
  -H "Content-Type: application/json" \
  -d '{"cpfs":["00000000000","11111111111"]}'
Resposta · 200
{
  "job_id": "9f2c1ab34d5e",
  "total": 2
}
GET /api/score/lote/{job_id} Sessão Progresso e resultados do lote.
Resposta · em andamento
{
  "status": "running",
  "total": 2,
  "processed": 1,
  "results": []
}
Resposta · concluído
{
  "status": "done",
  "total": 2,
  "processed": 2,
  "results": [
    { "cpf": "00000000000", "status": "OK", "nome": "NOME DA PESSOA", "score": "720", "renda": "3500" },
    { "cpf": "11111111111", "status": "NAO_ENCONTRADO" }
  ]
}
CampoDescrição
statusrunning enquanto processa, done ao terminar.
processedQuantidade de CPFs já processados.
results[].statusOK, NAO_ENCONTRADO ou ERRO (com detail).
i
O lote processa com 4 trabalhadores simultâneos e é mantido por 1 hora após a conclusão. Depois disso o identificador expira e a consulta devolve erro.

06 Histórico

Toda consulta é registrada por usuário — serve para auditoria e para reabrir um resultado anterior sem gastar uma consulta nova.

GET /api/historico Sessão Últimas consultas do usuário autenticado (até 200).
Resposta · 200
[
  {
    "id": 1841,
    "feature": "cpf",
    "valor": "00000000000",
    "status": "RESOLVIDO",
    "created_at": "2026-09-20T04:23:41.000000+00:00"
  }
]
GET /api/historico/{id} Sessão Detalhe de uma consulta, com o payload completo.
i
Cada usuário acessa apenas o próprio histórico. Contas com papel admin podem ler qualquer registro, o que sustenta a tela de auditoria.

07 Conta do usuário

Troca de senha do próprio usuário, exigindo a senha atual.

POST /api/senha Sessão Altera a senha da conta autenticada.
CampoTipoDescrição
current_passwordobrigatórioSenha atual, para confirmação.
new_passwordobrigatórioNova senha, com no mínimo 6 caracteres.
Resposta · 200
{
  "ok": true
}

08 Administração

Rotas restritas a contas com papel admin. Sem esse papel, a resposta é 403.

GET /api/admin/users Admin Lista os usuários do painel.
Resposta · 200
[
  { "username": "admin", "role": "admin", "created_at": "2026-08-23T01:06:25+00:00" }
]
POST /api/admin/users Admin Cria um usuário. Devolve 409 se já existir.
CampoTipoDescrição
usernameobrigatórioNome do novo usuário.
passwordobrigatórioSenha inicial.
roleopcionaluser (padrão) ou admin.
POST /api/admin/users/{username}/password Admin Redefine a senha de um usuário, sem exigir a senha antiga.
DELETE /api/admin/users/{username} Admin Remove um usuário.
!
A própria conta não pode ser removida, e o último administrador não pode ser excluído — a API devolve 400 nesses dois casos.
GET /api/admin/historico Admin Histórico de todos os usuários (até 500 registros).

10 Erros e status

Falhas seguem o padrão do framework, com o motivo em detail. Erros de validação vêm em 422, com a lista de campos inválidos.

CódigoQuando acontece
200Requisição bem-sucedida.
400Dados inválidos: senha curta, nenhum CPF válido no lote, lote acima de 100 CPFs, remoção da própria conta ou do último admin.
401Sem sessão válida, ou credenciais incorretas no login.
403Sem permissão de administrador, ou tentativa de ler histórico de outro usuário.
404Funcionalidade, consulta ou lote inexistente (ou expirado).
409Usuário já cadastrado.
422Corpo da requisição fora do formato esperado.
502Falha ao consultar o provedor.
Formato de erro
{
  "detail": "não autenticado"
}

11 Exemplos completos

Fluxo completo de autenticação e consulta em três linguagens.

cURL

login → consulta
# 1. autentica e guarda o cookie
curl -s -c cookies.txt \
  -X POST https://consultas.raisetech.online/api/session/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"SUA_SENHA"}'

# 2. consulta usando o cookie
curl -s -b cookies.txt \
  -X POST https://consultas.raisetech.online/api/consulta \
  -H "Content-Type: application/json" \
  -d '{"feature":"placa","valor":"ABC1D23"}'

Python

sessão persistente
import requests

BASE = "https://consultas.raisetech.online"
s = requests.Session()

s.post(f"{BASE}/api/session/login",
       json={"username": "admin", "password": "SUA_SENHA"}).raise_for_status()

r = s.post(f"{BASE}/api/consulta",
           json={"feature": "cpf", "valor": "00000000000"})
r.raise_for_status()
dados = r.json()

if dados["status"] == "RESOLVIDO":
    print(dados["payload"]["dados"].get("SECOES"))
else:
    print("sem resultado:", dados.get("detail"))

JavaScript

fetch com credenciais
const BASE = "https://consultas.raisetech.online";

await fetch(`${BASE}/api/session/login`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  credentials: "include",
  body: JSON.stringify({ username: "admin", password: "SUA_SENHA" })
});

const res = await fetch(`${BASE}/api/consulta`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  credentials: "include",
  body: JSON.stringify({ feature: "cnpj", valor: "00000000000000" })
});

const dados = await res.json();
console.log(dados.status, dados.payload && dados.payload.secoes);
Consultas Raise · PRIVATE CONSOLE — documentação da API.
painel · início · entrar