Integre Trace Documents em minutos
SDK oficial Node.js/TypeScript, REST API documentada e webhooks com verificação HMAC incluída.
Node.js / TypeScript
@tracedocuments/sdk
Cliente sem dependências, com tipos completos para todos os endpoints e helper de verificação de assinatura HMAC para webhooks. Compatível com Node 18+, Bun, Deno e edge runtimes.
npm install @tracedocuments/sdknpmjs.comPython
tracedocuments-python
SDK oficial Python para data engineers e fintechs. Em desenvolvimento — nos avise se você precisa hoje pelo formulário de contato.
Instale o SDK, crie um cliente com sua API Key e proteja ou verifique um PDF em 3 linhas de código.
npm install @tracedocuments/sdkimport { TraceDocumentsClient } from '@tracedocuments/sdk';
const td = new TraceDocumentsClient({
apiKey: process.env.TRACEDOCUMENTS_API_KEY!,
});
// 1. Protect a PDF
const protectResult = await td.protectDocument({
pdfBase64,
embedderTier: 'standard',
});
console.log(protectResult.documentId);
// 2. Verify a (possibly leaked) PDF later
const verify = await td.verifyDocument({ pdfBase64: leakedPdfBase64 });
if (verify.integrityStatus === 'tampered') {
console.warn('Document was modified after protection!');
}Teste a API completa sem cadastro, sem cartão e sem subir nada — basta usar a API Key pública de sandbox no cabeçalho X-Api-Key. Todas as respostas são determinísticas (mesmo input → mesmo documentId), e webhooks de sandbox nunca disparam HTTP real.
API Key pública de sandbox
Use esta chave em qualquer endpoint /api/b2b/* para receber respostas mock estáveis. Ideal para snapshot tests, demos e onboarding técnico.
X-Api-Key: td_sandbox_democurl -X POST https://api.tracedocuments.com.br/api/b2b/protect \
-H "X-Api-Key: td_sandbox_demo" \
-H "Content-Type: application/json" \
-d '{
"fileName": "contract.pdf",
"fileBase64": "JVBERi0xLjQKJeLjz9MK..."
}'curl -X POST https://api.tracedocuments.com.br/api/b2b/verify \
-H "X-Api-Key: td_sandbox_demo" \
-H "Content-Type: application/json" \
-d '{
"fileBase64": "JVBERi0xLjQKJeLjz9MK..."
}'Limites do sandbox
Sem rate-limit aplicado por organização, sem persistência (nada é gravado), sem disparo de webhooks externos. Para produção, gere uma API Key real em /app/api-keys.
Consuma /api/b2b/usage/summary em tempo real. A página carrega com a API Key de sandbox; cole a sua chave real para ver os números da sua organização nos últimos 30 dias.
Receba notificações em tempo real quando um documento for verificado ou um vazamento for detectado. O SDK valida a assinatura HMAC-SHA256 automaticamente em tempo constante.
import express from 'express';
import { parseWebhookRequest } from '@tracedocuments/sdk';
const app = express();
// IMPORTANT: capture the raw body — JSON.parse breaks the signature.
app.post('/webhooks/tracedocuments',
express.raw({ type: 'application/json' }),
(req, res) => {
try {
const { event, payload } = parseWebhookRequest({
payload: req.body,
headers: req.headers,
secret: process.env.TD_WEBHOOK_SECRET!,
});
if (event === 'leak_detected') {
console.log('Leak detected:', payload.documentId, payload.leakSource);
}
res.sendStatus(200);
} catch {
res.status(401).send('Invalid signature');
}
},
);Verifique sempre a assinatura
O cabeçalho X-TraceDocuments-Signature é obrigatório. parseWebhookRequest usa crypto.timingSafeEqual para evitar ataques de timing e nunca confia em payloads sem assinatura válida.
Todos os endpoints B2B são autenticados via cabeçalho X-Api-Key. O SDK envolve cada um deles com tipos de request/response e tratamento de erros.
| Método | Caminho | Método SDK |
|---|---|---|
| POST | /api/b2b/protect | td.protectDocument() |
| POST | /api/b2b/verify | td.verifyDocument() |
| POST | /api/b2b/batch/protect | td.batchProtect() |
| GET | /api/b2b/documents | td.listDocuments() |
| GET | /api/b2b/documents/{id} | td.getDocument(id) |
| GET | /api/b2b/status/ratelimit | td.getRateLimitStatus() |
| GET | /api/b2b/usage/summary | td.getUsageSummary() |
| GET | /api/b2b/usage/export?format=csv | td.exportUsage() |
| GET | /api/b2b/status/quota | td.getQuotaStatus() |
| POST | /api/b2b/webhooks | td.registerWebhook() |
| GET | /api/b2b/webhooks | td.listWebhooks() |
| DELETE | /api/b2b/webhooks/{id} | td.deleteWebhook(id) |
Pronto para integrar?
Crie sua API Key no painel e faça sua primeira chamada em menos de 5 minutos.