SDK JavaScript + API REST de certificación criptográfica. El archivo nunca sale de tu navegador ni de tu servidor. Solo viajan hashes SHA-256. Anchorum los ancla en Bitcoin. Verificable por cualquier auditor, tribunal o regulador sin cuenta.
Sin prueba criptográfica, la respuesta es costosa: peritos, litigios, credibilidad perdida. Con Anchorum, un hash de 64 caracteres lo resuelve antes de que ocurra.
Sin almacenar tu documento. Sin configuración compleja. Sin infraestructura propia.
.ots son verificables offline por cualquier auditor, tribunal o regulador — sin cuenta, sin depender de Anchorum.Las firmas digitales tradicionales prueban la identidad. Anchorum prueba la existencia e integridad del documento en el tiempo.
| Característica | ⛓️ Anchorum | Firma digital (PKI) | Notaría tradicional | Sin certificar |
|---|---|---|---|---|
| Prueba de existencia en fecha | ✓ Blockchain Bitcoin | ~ Depende del TSA | ~ Registro físico | ✗ |
| Verificable sin intermediarios | ✓ Open source / offline | ✗ Requiere CA | ✗ Requiere notario | ✗ |
| Privacidad del documento | ✓ Zero-knowledge | ~ Depende del proveedor | ✗ Se sube copia | — |
| Inmutable (ni admins pueden alterar) | ✓ Triggers PostgreSQL | ~ Depende del proveedor | ~ Registro físico | ✗ |
| Integración API (automatizable) | ✓ REST API, <200ms | ~ Complejo | ✗ Manual | — |
| Precio por documento | ✓ Desde $0.04 | $0.50–$5.00 | $10–$100+ | $0 |
| Batch hasta 1,000 docs | ✓ Un request | ✗ | ✗ | — |
Cualquier industria que necesite probar que un documento existía y no fue alterado.
SDK para frontend. API REST para backend. El mismo sello en cualquier plataforma.
anchorum-tree-v3 el sistema certifica cada cláusula individualmente. Detecta exactamente qué parte fue modificada.<!-- Paso 1: 1 línea, sin npm, sin bundler --> <script src="https://api.anchorum.co/assets/anchorum-sdk.js"></script> // Paso 2: instanciar con tu API Key const anchorum = new AnchorumClient({ apiKey: 'anc_tu_api_key' }); // Paso 3: certificar con árbol de párrafos const seal = await anchorum.certifyFile(file, { algorithm: 'anchorum-tree-v3' // o 'anchorum-text-v2' }); console.log(seal.document_id); // "164a0691-5d60..." console.log(seal.seal_summary); // "28 párrafos certificados" // Verificar integridad de un candidato const diff = await anchorum.diffParagraphs(candidateFile, seal.document_id); console.log(diff.integrity_pct); // 96.4 — "Párrafo #8 modificado"
# pip install requests import hashlib, requests # 1. Hash local — el archivo nunca sale with open('contrato.pdf', 'rb') as f: sha256 = hashlib.sha256(f.read()).hexdigest() # 2. Certificar r = requests.post( 'https://api.anchorum.co/api/v1/ingest', headers={'X-API-Key': 'anc_tu_api_key'}, json={ 'filename': 'contrato.pdf', 'hash_sha256': sha256, 'batch_id': 'CONTRATOS-ABRIL-2026', } ) doc = r.json() print(doc['document_id']) # → "164a0691-5d60-4823-a680-3f8c47b12a91" # 3. Sellar lote en Bitcoin requests.post( 'https://api.anchorum.co/api/v1/merkle/generate', headers={'X-API-Key': 'anc_tu_api_key'}, json={'batch_id': 'CONTRATOS-ABRIL-2026'} )
// Node.js — crypto nativo const crypto = require('crypto'); const fs = require('fs'); // 1. Hash local const sha256 = crypto .createHash('sha256') .update(fs.readFileSync('contrato.pdf')) .digest('hex'); // 2. Certificar const res = await fetch( 'https://api.anchorum.co/api/v1/ingest', { method: 'POST', headers: { 'X-API-Key': 'anc_tu_api_key', 'Content-Type': 'application/json', }, body: JSON.stringify({ filename: 'contrato.pdf', hash_sha256: sha256, batch_id: 'CONTRATOS-ABRIL-2026', }), } ); const doc = await res.json(); console.log(doc.document_id); // → "164a0691-5d60-4823-a680-3f8c47b12a91"
<?php // 1. Hash local $sha256 = hash_file('sha256', 'contrato.pdf'); // 2. Certificar $ch = curl_init('https://api.anchorum.co/api/v1/ingest'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'X-API-Key: anc_tu_api_key', 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'filename' => 'contrato.pdf', 'hash_sha256' => $sha256, 'batch_id' => 'CONTRATOS-ABRIL-2026', ]), ]); $doc = json_decode(curl_exec($ch), true); echo $doc['document_id']; // → "164a0691-5d60-4823-a680-3f8c47b12a91"
# 1. SHA-256 local SHA=$(sha256sum contrato.pdf | awk '{print $1}') # 2. Certificar curl -s -X POST \ https://api.anchorum.co/api/v1/ingest \ -H "X-API-Key: anc_tu_api_key" \ -H "Content-Type: application/json" \ -d "{ \"filename\": \"contrato.pdf\", \"hash_sha256\": \"$SHA\", \"batch_id\": \"CONTRATOS-ABRIL-2026\" }" | jq . # 3. Sellar lote curl -s -X POST \ https://api.anchorum.co/api/v1/merkle/generate \ -H "X-API-Key: anc_tu_api_key" \ -H "Content-Type: application/json" \ -d '{"batch_id":"CONTRATOS-ABRIL-2026"}'
Cada decisión de diseño prioriza la verificabilidad independiente de Anchorum.
<script> y listo. El SDK carga PDF.js y mammoth.js automáticamente, hashea el documento en el navegador del usuario y solo envía la huella criptográfica. El archivo nunca sale del dispositivo. Funciona en cualquier stack sin npm ni bundler.anchorum-tree-v3 construye un Merkle Tree de cláusulas detectadas por análisis de espaciado vertical. Certifica cada párrafo individualmente: si un contrato de 28 cláusulas cambia una sola, el sistema señala exactamente cuál con un porcentaje de integridad preciso.anchorum-text-v2 (texto extraído, normalizado NFD, sin tildes, minúsculas). Verifica un PDF convertido a DOCX, re-exportado o re-impreso sin invalidar la prueba. El contenido legal es lo que importa, no el contenedor.Sin contrato anual. Cancela cuando quieras. Todos los planes incluyen certificado PDF y sellado en registro público.
Estudio jurídico colombiano que integró Anchorum SDK en un fin de semana. El PDF se hashea en el navegador del cliente, la API Key vive en el servidor, Bitcoin sella cada cláusula automáticamente.
<script>, el PDF se hashea localmente, solo viajan los hashes al backend. La API Key nunca toca el frontend. Zero-Knowledge garantizado./verify con el document_id y el hash — sin API Key. (2) Descargar el archivo .ots desde GET /ots/{batch_id}/proof y verificarlo en opentimestamps.org. (3) Instalar la CLI de OpenTimestamps (pip install opentimestamps-client) y ejecutar ots verify directamente contra los nodos de Bitcoin.
/merkle/generate, el Merkle Root se envía a Bitcoin via OTS. La confirmación en un bloque Bitcoin tarda entre 1 y 3 horas dependiendo del mempool. En ese momento el estado pasa a confirmed y recibes el webhook si lo configuraste.
/ingest con el hash y el filename es todo lo que necesitas. Hay ejemplos en Python, Node.js, PHP y curl en la documentación. El plan Pay-as-you-go es especialmente adecuado para integradores: sin cuota mensual, créditos prepagados, hasta 1,000 req/min. Puedes integrar Anchorum como capa de certificación en tu plataforma y cobrarlo a tus propios clientes.
.ots estándar verificable con la CLI open source de OpenTimestamps (pip install opentimestamps-client) directamente contra los nodos de Bitcoin, sin pasar por ningún servidor de Anchorum. La blockchain de Bitcoin es la autoridad final — no nosotros. Recomendamos guardar el archivo .ots junto con el documento original como parte de tu archivo de evidencia.
anchorum-text-v2 — SHA-256 del texto extraído, normalizado (NFC), sin tildes (NFD), sin caracteres invisibles, en minúsculas. Esto permite verificar que un contrato en PDF es idéntico al mismo contrato en DOCX, o re-exportado a otra versión de Word, aunque el hash físico sea diferente. El texto legal es lo que importa, no el contenedor digital.
<script src="https://api.anchorum.co/assets/anchorum-sdk.js"></script>. El SDK carga PDF.js y Mammoth.js automáticamente. Para certificar: Anchorum.certifyFile(file, apiKey). Para verificar: Anchorum.verifyFile(file). Para auditoría de cláusulas con v3: Anchorum.diffParagraphs(fileA, fileB). El hash se calcula en el navegador del usuario — el archivo nunca viaja a nuestros servidores — y solo se envía la huella criptográfica. Sin npm, sin bundler, sin dependencias adicionales. Compatible con cualquier stack backend.
anchorum-tree-v3 divide el documento en párrafos, genera un hash SHA-256 por cláusula y los organiza en un Árbol Merkle. Al verificar, el sistema compara párrafo a párrafo y detecta exactamente qué sección fue modificada — por ejemplo: "Cláusula 4 alterada, resto del contrato intacto (99%)". Es ideal para contratos con múltiples versiones, NDAs, o cualquier documento donde se necesite auditar cambios granulares. Úsalo vía Anchorum.certifyFile(file, apiKey, 'v3') o Anchorum.diffParagraphs(fileA, fileB).
Artículos prácticos para abogados, empresas y equipos tech que necesitan evidencia digital irrefutable.
Sin tarjeta de crédito. Sin configuración compleja. Sin compromisos.
⚡ Crear cuenta gratis