FivSense · Veridian
Documentação da API
Uma habilidade externa, consumida por HTTP, que entende o estado do humano, infere perfil e estilo de comunicação e prevê o próximo comportamento — validada por outcomes reais.
Autenticação
Toda chamada aos endpoints /v1 autenticados usa o header Authorization: Bearer <api_key>. Cada chave pertence a um tenant e resolve o limite de requisições. A chave crua é exibida uma única vez no cadastro — guarde-a com segurança; nós guardamos apenas o hash.
Não tem chave ainda? Crie uma em segundos.
POST /v1/predict
Envia a conversa até o instante atual e recebe state, profile, communication_style e prediction. Stateless: cada request carrega a conversa que precisa. Adicione ?debug=1 para incluir explanation.
POST /v1/predict
Authorization: Bearer <api_key>
Content-Type: application/json
{
"objective": "sale",
"locale": "pt-BR",
"conversation": [
{ "role": "agent", "text": "Olá! Posso ajudar?" },
{ "role": "customer", "text": "Quanto custa? Achei caro." }
]
}{
"state": {
"understanding": 0.62, "confusion": 0.18, "trust": 0.44,
"interest": 0.71, "hesitation": 0.55, "frustration": 0.12,
"commitment": 0.33,
"objections": [{ "type": "price", "strength": 0.7, "confidence": 0.8 }]
},
"profile": {
"decision_style": "analytical", "directness": 0.6,
"detail_orientation": 0.7, "skepticism": 0.5,
"risk_sensitivity": 0.6, "decisiveness": 0.4, "confidence": 0.75
},
"communication_style": {
"preferred_tone": "consultative", "preferred_verbosity": "medium",
"preferred_detail_level": "high", "evidence_preference": "data",
"recommended_pace": "medium", "question_style": "open"
},
"prediction": {
"will_reply": 0.82, "will_convert": 0.41,
"will_abandon": 0.22, "needs_human": 0.15
}
}objectivesale · support · collection · retention · scheduling · otherlocaleBCP-47, ex.: pt-BR (padrão)conversation[]1..200 mensagens { role: agent|customer, text (1..4000), ts? }objections.type (taxonomia fechada v1): price, trust, timing, need, competitor, decision_authority, risk, missing_information, priority, other.
POST /v1/outcomes
Fecha o flywheel (P9): devolva o que de fato aconteceu ligado ao prediction_id. Outcomes reais são o ground truth — é o que torna as probabilidades calibradas ao longo do tempo.
POST /v1/outcomes
Authorization: Bearer <api_key>
{ "prediction_id": "...", "replied": true, "converted": false }POST /v1/signup — onboarding self-serve
Provisiona um tenant e emite uma api_key na hora, sem processo humano (P10). Não coletamos dados pessoais: só o nome da organização e um caso de uso opcional.
POST /v1/signup
Content-Type: application/json
{ "organization": "Minha Empresa", "use_case": "sale" }
-> 201
{
"tenant_id": "t_9f3c...",
"api_key": "fv_live_...", // mostrada só aqui — guarde agora
"key_prefix": "fv_live_ab12cd",
"rate_limit_per_min": 120,
"docs_url": "/docs"
}GET /v1/health
Verificação pública de disponibilidade. Retorna versão do schema.
GET /v1/health
-> { "ok": true, "service": "fivsense", "schema_version": "1.0.0" }Rate limits & headers
O limite é por tenant, por minuto (janela fixa). Respostas trazem os headers padrão abaixo; ao exceder, o status é 429 com Retry-After.
X-RateLimit-Limit— cota por minuto do tenant.X-RateLimit-Remaining— chamadas restantes na janela.X-RateLimit-Reset— epoch (s) em que a janela zera.X-Request-Id— id da requisição (ecoado se você enviar).X-FivSense-Schema-Version— versão do contrato.
Erros
Todo erro sai no mesmo envelope JSON, com request_id para suporte.
{
"error": {
"code": "invalid_request",
"message": "Falha na validação do corpo da requisição.",
"details": [{ "path": "conversation.0.role", "message": "..." }]
},
"request_id": "..."
}400invalid_json / invalid_request401unauthorized — chave ausente ou inválida429rate_limited500internal_error
SDKs
Clientes finos oficiais para TypeScript e Python (predict + outcomes).
import { FivSense } from "@fivsense/sdk";
const fv = new FivSense({ apiKey: process.env.FIVSENSE_API_KEY! });
const out = await fv.predict({
objective: "sale",
conversation: [{ role: "customer", text: "Achei caro." }],
});
console.log(out.prediction.will_convert);from fivsense import FivSense
fv = FivSense(api_key=os.environ["FIVSENSE_API_KEY"])
out = fv.predict(
objective="sale",
conversation=[{"role": "customer", "text": "Achei caro."}],
)
print(out["prediction"]["will_convert"])Privacidade & escopo
O FivSense é uma camada de percepção e previsão — não é CRM, chatbot nem orquestrador, e nunca responde ao consumidor final. Perfil são padrões comunicacionais observáveis com confidence, nunca diagnóstico: não inferimos saúde mental nem atributos sensíveis/protegidos.
IDs são pseudonimizados (HMAC), PII é removida antes de persistir e a conversa crua nunca é logada. Conformidade LGPD/GDPR por padrão.