Standard v2.0

Developer Documentation

Integra Veltia en tu stack tecnológico en menos de 5 minutos y empieza a emitir evidencias legales con validez europea.

TU API KEY ACTUALsk_test_tu_clave_aqui

Estás viendo una clave de ejemplo. Regístrate para obtener tu clave real.

Zero-Storage & eIDAS 2.0

Veltia ha sido diseñado bajo el principio de Privacy by Design. Nuestra infraestructura permite la notarización de documentos sin necesidad de acceder a su contenido.

Hash-Only

Solo procesamos el hash SHA-256 de tus archivos. El documento original nunca sale de tus servidores.

eIDAS Compliance

Cumplimiento estricto con el reglamento (UE) Nº 910/2014 para sellos electrónicos cualificados.

Entornos de Trabajo

Veltia ofrece dos entornos aislados para garantizar la seguridad de tus operaciones.

EntornoPrefijo KeyTSA ProviderPropósito
Sandboxsk_test_FreeTSA (Open)Pruebas ilimitadas. Evidencia con marcas de agua "TEST".
Productionsk_live_Qualified (QTSA)Validez legal cualificada. Requiere créditos activos.

Trust Event API (/trust-event)

Ideal para procesos automatizados de alto volumen: contratos, evidencias de identidad o sellado de datos críticos. (Auth: x-api-key)

[ZK AXIOM]: Solo procesamos Hashes. Tus documentos nunca salen de tu red.
curl -X POST https://evrqfolssasuskyniuum.supabase.co/functions/v1/trust-event \
  -H "x-api-key: sk_test_tu_clave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "data_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41..."
  }'

Vía B: Billeteras de Identidad Digital Europea (/wallet-request)

{{ lang.currentLang === 'es' ? 'Para flujos de firma de alto nivel de garantía donde la identidad biométrica y gubernamental del usuario debe ser autenticada y vinculada a la evidencia.' : 'For high assurance signature flows where the user's biometric and governmental identity must be authenticated and bound to the evidence.' }} (Auth: x-api-key + IP Whitelisting)

1
Crear sesión de firma: Envía el hash del documento a firmar indicando el nivel de confianza deseado.
2
Obtener URI de Autorización: Veltia responde con una URI eudiw:// que puedes renderizar como código QR o usar para abrir la app de la billetera.
3
Firma y Webhook: Tras la confirmación móvil del usuario, procesamos la firma y te notificamos vía Webhook con el recibo JWS.
curl -X POST https://evrqfolssasuskyniuum.supabase.co/functions/v1/wallet-request \
  -H "x-api-key: sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "data_hash": "64_char_sha256_hash",
    "trust_level": 30,
    "subject_id": "customer_123"
  }'

Webhooks

Configura una URL en tu Dashboard para recibir notificaciones en tiempo real cuando una firma se complete.

  1. Ve a la pestaña API en tu Dashboard.
  2. Introduce tu URL de destino en "Webhook Settings".
  3. Veltia enviará un POST cada vez que un documento sea notarizado.
  4. Valida la autenticidad usando el header "x-veltia-signature" (HMAC-SHA256).
WEBHOOK HEADERS
x-veltia-signature: t=1717253119,v1=5e884898da28047151...
WEBHOOK PAYLOAD (POST)
{
  "event": "trust_event.finalized",
  "created_at": "2026-02-15T03:00:00Z",
  "data": {
    "id": "evt_8k93...x2",
    "doc_hash": "e3b0c4...41",
    "trust_level": 30,
    "is_live": false,
    "trust_receipt": "eyJhbGciOiJIUzI1NiJ9..."
  }
}
NODE.JS SIGNATURE VERIFICATION (REPLAY PROTECTION)
const crypto = require('crypto');

function verifyWebhook(rawBody, signatureHeader, webhookSecret) {
  // 1. Parse header (t=timestamp, v1=signature)
  const parts = signatureHeader.split(',');
  const timestamp = parts.find(p => p.startsWith('t=')).split('=')[1];
  const signature = parts.find(p => p.startsWith('v1=')).split('=')[1];

  // 2. Prevent Replay Attacks: Reject if timestamp is older than 5 minutes (300s)
  const age = Math.floor(Date.now() / 1000) - Number(timestamp);
  if (Math.abs(age) > 300) {
    throw new Error('Webhook timestamp expired. Replay attack blocked.');
  }

  // 3. Compute expected signature using raw request body
  const expectedSignature = crypto
    .createHmac('sha256', webhookSecret)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');

  // 4. Secure constant-time comparison to prevent timing attacks
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

Seguridad Avanzada

Protege tu cuenta restringiendo qué servidores pueden llamar a la API de Veltia.

  1. Ve a la sección "IP Whitelisting" en la pestaña API.
  2. Introduce las IPs públicas de tus servidores (separadas por comas).
  3. Veltia rechazará cualquier petición (403) que no provenga de esas IPs.
AVISO: Si la lista está vacía, se permiten peticiones desde cualquier IP por defecto.

Códigos de Error

CódigoSignificadoSolución
400Invalid HashAsegúrate de enviar un SHA-256 válido.
401UnauthorizedAPI Key incorrecta o revocada.
402No CreditsRecarga créditos en tu dashboard (sólo modo Live).
403Forbidden (IP)La IP de origen no está en tu lista blanca.
429Rate LimitLímite de 10 peticiones diarias en modo Sandbox alcanzado.