Skip to main content
Os dois motores consomem tokens do workspace: o mesmo pool usado pela interface web do Sherlocker. Os princípios são idênticos — o que muda é a unidade de preço: o Motor de CPF/CNPJ cobra por análise; o Motor de Borderô cobra por entidade única do arquivo.
Preço em definição durante o beta. Não fixe um custo em código. Todos os valores de tokens nesta página são ilustrativos.

O débito acontece na criação — e é fail-closed

Os tokens são debitados no momento do POST, antes de o motor rodar. A confirmação varia por motor:
  • CPF/CNPJ (POST /analyses): a resposta 202 Accepted confirma o débito com os campos tokens_charged (quanto foi debitado) e balance (saldo após o débito), informados em melhor esforço — se a consulta de saldo falhar no momento da resposta, os campos podem estar ausentes, o que não altera a cobrança em si.
  • Borderô (POST /operations): a cobrança acontece normalmente na criação, mas não aparece no payload — a resposta 202 traz apenas operation_id, status e created_at. Acompanhe débitos e estornos no extrato de tokens do workspace, no app Sherlocker.
Se o saldo do workspace for insuficiente, o POST falha com 402 insufficient_tokens e nada é cobrado nem executado — o erro traz os campos required e balance para você saber quanto falta. Requisições rejeitadas com qualquer erro (400, 401, 402, 403, 409, 422) nunca cobram.

Quanto custa em cada motor

Cada POST /analyses debita o preço de uma análise:

completed cobra sempre, inclusive verdict incompleto

Uma análise que termina completed é cobrada sempre, mesmo quando o verdict é incompleto. O motivo: o motor executou o trabalho (rodou todos os blocos da engine) e incompleto significa apenas que uma ou mais fontes de dados externas ficaram indisponíveis durante a execução.Nesse caso, use o campo coverage da resposta do GET /analyses/{id} para ver exatamente quais fontes falharam (coverage[].status: "failed") e quais foram consultadas. Veja Ciclo de vida.

Estorno automático em failed

Nos dois motores: se o processamento terminar com status: "failed" (falha interna do motor), os tokens debitados na criação são estornados automaticamente. O estorno é assíncrono — ele não aparece no body do GET, mas fica registrado no extrato de tokens do workspace no app Sherlocker.

Replay idempotente não cobra

Reenviar o POST com a mesma Idempotency-Key e o mesmo conteúdo dentro da janela de 24 horas retorna 200 OK com o body original da 202sem nova cobrança. É por isso que, em retries de timeout ou erro de rede, você deve reusar a mesma key. Veja Idempotência.

Resumo: cenário × cobrança

Saldo e recarga

O saldo de tokens e a recarga (top-up) são gerenciados no app Sherlocker: a API /v1 compartilha o mesmo pool de tokens do workspace. O extrato do workspace no app mostra os débitos por análise/operação e os estornos de runs failed.

Próximos passos

Idempotência

Retry seguro sem risco de cobrança dupla

Ciclo de vida

Status, verdicts e o campo coverage

Erros

Formato RFC 7807 e o erro insufficient_tokens