OpenProof
Volver al inicio

Documentación de la API

Fácil integración

API REST v1

Integra OpenProof desde backend, scripts o servicios externos para registrar hashes, consultar estados y enlazar viewers públicos con ejemplos listos para usar.

Lenguaje global de ejemplos

Base URL

https://tu-dominio-openproof.com/api/v1

Autenticación

Las rutas privadas aceptan API key bearer o sesión válida según el contexto.

Authorization: Bearer OPENPROOF_API_KEY

Viewer público

Usa la respuesta de verificación para enlazar el viewer oficial devuelto en publicProofPath.

/p/<transactionId>

Inicio rápido
Elige un lenguaje una sola vez y todos los snippets se sincronizan.
Quickstart · Python
import requests

response = requests.post(
    'https://tu-dominio-openproof.com/api/v1/documents/verify',
    json={
        'fileHash': 'a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a'
    },
    timeout=10,
)

payload = response.json()
print(payload['data'].get('publicProofPath'))

Endpoints

POSTBearer requerido/api/v1/documents
Registra un hash documental con nombre de archivo y metadatos opcionales.
Request · Python
import requests

payload = requests.post(
    'https://tu-dominio-openproof.com/api/v1/documents',
    headers={'Authorization': 'Bearer OPENPROOF_API_KEY'},
    json={
        'fileHash': 'a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a',
        'filename': 'contrato-marzo-2026.pdf',
        'metadata': {
            'description': 'Contrato firmado con proveedor',
            'tags': ['legal', 'proveedores'],
        },
    },
    timeout=10,
)

print(payload.json())
Response
{
  "success": true,
  "data": {
    "documentId": "2fbd2479-c2b7-467a-9d85-4f1119caaf39",
    "transactionId": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
    "status": "processing",
    "createdAt": "2026-03-30T18:45:00Z"
  }
}
Requiere sesión verificada o API key bearer válida.
El `transactionId` puede llegar vacío mientras el worker todavía no haya emitido la transacción on-chain.
POSTRuta pública/api/v1/documents/verify
Verifica si un hash ya fue registrado y devuelve la ruta pública del viewer cuando existe constancia compartible.
Request · Python
import requests

response = requests.post(
    'https://tu-dominio-openproof.com/api/v1/documents/verify',
    json={
        'fileHash': 'a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a'
    },
    timeout=10,
)

payload = response.json()
print(payload['data'].get('publicProofPath'))
Response
{
  "success": true,
  "data": {
    "exists": true,
    "transactionId": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
    "publicProofPath": "/p/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
    "blockHeight": 831542,
    "timestamp": "2024-01-15T10:30:00Z",
    "confirmations": 1542
  }
}
No requiere autenticación y está sujeta a rate limiting público.
`publicProofPath` es la ruta recomendada para enlazar el viewer oficial desde tus propias aplicaciones.
GETBearer requerido/api/v1/documents/{id}
Obtiene el detalle privado de un documento perteneciente al owner autenticado.
Request · Python
import requests

payload = requests.get(
    'https://tu-dominio-openproof.com/api/v1/documents/2fbd2479-c2b7-467a-9d85-4f1119caaf39',
    headers={'Authorization': 'Bearer OPENPROOF_API_KEY'},
    timeout=10,
)

print(payload.json())
Response
{
  "success": true,
  "data": {
    "id": "2fbd2479-c2b7-467a-9d85-4f1119caaf39",
    "fileHash": "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a",
    "filename": "contract.pdf",
    "metadata": {
      "description": "Contrato firmado con proveedor",
      "tags": ["legal", "proveedores"]
    },
    "transactionId": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
    "blockHeight": 831542,
    "timestamp": "2024-01-15T10:30:00Z",
    "confirmations": 1542,
    "status": "confirmed",
    "createdAt": "2026-03-30T18:45:00Z",
    "updatedAt": "2026-03-30T18:52:00Z"
  }
}
Solo devuelve documentos asociados al owner autenticado o al owner de la API key.
GETBearer requerido/api/v1/documents
Lista los documentos del usuario autenticado o del owner de la API key.
Request · Python
import requests

payload = requests.get(
    'https://tu-dominio-openproof.com/api/v1/documents',
    headers={'Authorization': 'Bearer OPENPROOF_API_KEY'},
    timeout=10,
)

print(payload.json())
Response
{
  "success": true,
  "data": [
    {
      "id": "2fbd2479-c2b7-467a-9d85-4f1119caaf39",
      "fileHash": "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a",
      "filename": "contrato-marzo-2026.pdf",
      "transactionId": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
      "status": "confirmed",
      "createdAt": "2026-03-30T18:45:00Z",
      "updatedAt": "2026-03-30T18:52:00Z"
    }
  ]
}
Útil para dashboards, backoffices o conciliación de registros ya procesados.
GETRuta pública/api/v1/transactions/{txid}
Expone información pública de una transacción Bitcoin vinculada al registro.
Request · Python
import requests

payload = requests.get(
    'https://tu-dominio-openproof.com/api/v1/transactions/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
    timeout=10,
)

print(payload.json())
Response
{
  "success": true,
  "data": {
    "txid": "4a5e1e4baab89f3a32518a88c31bc87f...",
    "blockHeight": 831542,
    "blockHash": "000000000000000000029d7e3cb4c3a0...",
    "timestamp": "2024-01-15T10:30:00Z",
    "confirmations": 1542,
    "fee": 0.00001234,
    "outputs": [
      {
        "address": "bc1qexample...",
        "value": 0.00000546,
        "opReturn": "a7ffc6f8bf1ed76651c14756a061d662"
      }
    ]
  }
}
Diseñada para viewers públicos, auditorías técnicas y validación de anclaje on-chain.
Rate Limits

La API tiene los siguientes límites de uso:

100

requests/minuto

1,000

requests/hora

10,000

requests/día

Los headers de respuesta incluyen información sobre tu uso actual:

Headers de ejemplo
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705312260
Códigos de error
400Bad Request - Parámetros inválidos
401Unauthorized - API key inválida o ausente
404Not Found - Recurso no encontrado
429Too Many Requests - Rate limit excedido
500Server Error - Error interno del servidor

¿Listo para integrar OpenProof?