Pular para o conteúdo

Referencia da API

O Valter expoe uma API REST na porta 8000 com autenticacao por API key, rate limiting via Redis, paginacao baseada em cursor e respostas de erro em JSON estruturado.

AmbienteURL
Desenvolvimentohttp://localhost:8000
ProducaoURL do deploy na Railway

Todos os endpoints versionados usam o prefixo /v1/. Endpoints sem versionamento (/health, /metrics) ficam na raiz.

Terminal window
# Development
curl http://localhost:8000/v1/retrieve -X POST -H "Content-Type: application/json" ...
# Production
curl https://<railway-url>/v1/retrieve -X POST -H "Content-Type: application/json" ...

A autenticacao por API key e controlada pela variavel de ambiente VALTER_AUTH_ENABLED (obrigatoriamente true em producao).

Passe a key como Bearer token:

POST /v1/retrieve HTTP/1.1
Authorization: Bearer vlt_k1_abc123...
Content-Type: application/json

Cada API key carrega um ou mais scopes que restringem quais endpoints ela pode acessar:

ScopeAcesso
readSearch, consultas de grafo, verify, enrich, health
writeWorkflows de ingestao, criacao de memorias
adminMetricas, gerenciamento de datasets, todas as operacoes
  • As keys sao hasheadas com SHA-256 antes do armazenamento (nao bcrypt).
  • Todo uso de API key e registrado em um audit log persistente com timestamp, endpoint e fingerprint da key.
  • Keys invalidas ou ausentes retornam 401 UNAUTHORIZED.
  • Scope insuficiente retorna 403 FORBIDDEN.

O rate limiting usa uma sliding window no Redis com contadores por key (INCR).

Tipo de operacaoLimite padraoVariavel de ambiente
Endpoints de leitura100 requests/minVALTER_RATE_LIMIT_READ
Endpoints de escrita10 requests/minVALTER_RATE_LIMIT_WRITE

Toda resposta inclui headers de rate limit:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1709136000

Quando o limite e excedido, a API retorna 429 RATE_LIMITED.

Todos os erros retornam um envelope JSON consistente com um objeto error:

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"trace_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"details": null
}
}
CodigoHTTP StatusDescricao
INVALID_REQUEST400Request body ou parametros malformados
UNAUTHORIZED401API key ausente ou invalida
FORBIDDEN403Key valida mas scope insuficiente
NOT_FOUND404Recurso nao encontrado
TIMEOUT408Consulta ao backend excedeu o tempo limite
VALIDATION_ERROR422Falha na validacao do Pydantic
RATE_LIMITED429Rate limit excedido
INTERNAL_ERROR500Erro nao tratado no servidor
SERVICE_UNAVAILABLE503Servico backend (Neo4j, Qdrant, etc.) inacessivel

O campo trace_id correlaciona com os logs estruturados (formato JSON via structlog) para depuracao.

Endpoints de listagem suportam paginacao baseada em cursor usando cursors opacos codificados em base64.

ParametroTipoDescricao
cursorstringCursor opaco de uma resposta anterior. Omita na primeira request.
page_sizeintegerNumero de resultados por pagina (deve ser <= top_k).
CampoTipoDescricao
pagination.cursorstring | nullCursor para a proxima pagina, ou null se nao houver mais resultados.
pagination.has_morebooleanSe existem paginas adicionais.
pagination.total_estimateinteger | nullEstimativa do total de resultados.

Os cursors codificam o ultimo score, o ultimo document ID, o numero da pagina e um hash da query para validacao. Um cursor de uma query nao pode ser reutilizado em outra query diferente.

{
"data": [...],
"meta": { "trace_id": "...", "latency_ms": 42.5 },
"pagination": {
"cursor": "eyJsYXN0X3Njb3JlIjogMC44NSwgInBhZ2UiOiAxfQ==",
"has_more": true,
"total_estimate": 156
}
}

As requests passam pelo middleware stack nesta ordem:

OrdemMiddlewareFinalidade
1CORSOrigens permitidas configuraveis para requests cross-origin
2MetricsIPAllowlistRestringe o acesso a /metrics a IPs em VALTER_METRICS_IP_ALLOWLIST (CIDR suportado). Le cf-connecting-ip e x-forwarded-for para resolucao de IP com suporte a proxy.
3RequestTrackingAtribui um trace_id (UUID) a cada request, registra contagem e histogramas de duracao no Prometheus
4RateLimitRate limiting via sliding window no Redis por API key
5AuthenticationValidacao de API key + verificacao de scope. Pula autenticacao para /health, /metrics, /docs, /openapi.json, /redoc.

O audit logging roda dentro do middleware de autenticacao para todos os endpoints, exceto health, metrics e paths de documentacao.

GrupoEndpoints principaisDocumentacao
SearchPOST /v1/retrieve, POST /v1/similar_cases, POST /v1/search/features, POST /v1/factual/dual-searchEndpoints de Search
GraphPOST /v1/graph/* (13 endpoints)Endpoints de Graph
Verify & EnrichPOST /v1/verify, POST /v1/context/enrich, POST /v1/factual/extractVerify & Enrich
IngestPOST /v1/ingest/* (20+ endpoints)Endpoints de Ingest
AdminGET /v1/health, GET /metrics, GET/POST /v1/memories, GET /v1/datasets/*Admin & Utilidades
MCP Tools28 tools via stdio/HTTPReferencia de MCP Tools