Sella fotos y videos con prueba de autenticidad. Verifica integridad en tiempo real. Genera informes periciales ISO/IEC 27037. Integra analisis IA sobre evidencia autenticada.
Para agentes IA: Si eres un agente o LLM integrando esta API, ve directamente a la
guia de integracion para agentes.
Tambien puedes leer /static/llms.txt para un resumen machine-readable.
Base URL:https://prorealitycheck.com/api/v1 Formato: JSON (application/json) — archivos via multipart/form-data Auth: Cabecera X-API-Key: rc_live_...
Quick start — 3 pasos
# 1. Obtén tu API key en /developer# 2. Sella una foto
curl -X POST https://prorealitycheck.com/api/v1/certify \
-H "X-API-Key: rc_live_YOUR_KEY" \
-F "file=@foto.jpg" \
-F "client_hash=sha256_de_la_foto" \
-F "ref_id=caso-001"# 3. Verifica la integridad
curl https://prorealitycheck.com/api/v1/verify/RC-20250320-AB12 \
-H "X-API-Key: rc_live_YOUR_KEY"
Autenticacion
Todas las llamadas requieren una API key en la cabecera X-API-Key.
POST/api/v1/request-captureInvitacion invertida — empresa paga y solicita foto
Flujo invertido: La empresa crea la invitacion, paga la sellado,
y obtiene derechos de analisis IA sobre la imagen sellada.
Solo disponible para Pro Business (39 EUR/mes) y Enterprise (499 EUR/mes).
Campo
Tipo
Descripcion
capturer_email
string
Req
Email de quien tomara la foto
note
string
Opt
Instrucciones para el capturador
expires_hours
int
Opt
Validez de la invitacion (1-720h, default 72)
analysis_type
string
Opt
Tipo de analisis: general, damage_assessment, content_description
// Respuesta
{
"token": "abc123...",
"capture_url": "https://.../capture-page?invite=abc123...",
"paid_by": "empresa@axa.com",
"analysis_enabled": true,
"message": "Invitacion creada. Cuando el cliente complete la foto, tendras derechos de analisis."
}
Flujo completo
# 1. Empresa solicita foto al cliente (paga 1 credito)
r = requests.post("https://prorealitycheck.com/api/v1/request-capture",
headers={"X-API-Key": KEY},
json={"capturer_email": "cliente@gmail.com",
"note": "Foto frontal del vehiculo siniestrado"})
invite = r.json()
# → Enviar invite["capture_url"] al cliente por email/WhatsApp# 2. Cliente abre el link, hace la foto, RC la sella# 3. Empresa recibe webhook "certify.complete" con csv_code# 4. Empresa obtiene metadatos de la evidencia sellada
ev = requests.get(f"https://prorealitycheck.com/api/v1/evidence/{csv_code}",
headers={"X-API-Key": KEY}).json()
# 5. Empresa descarga imagen y ejecuta su IA
img = requests.get(ev["download_url"]).content
ai_result = my_damage_model.analyze(img)
# 6. Empresa sube el analisis a RC (queda vinculado permanentemente)
requests.post(f"https://prorealitycheck.com/api/v1/evidence/{csv_code}/analyze",
headers={"X-API-Key": KEY},
json={
"provider_name": "AXA Damage AI v2.1",
"analysis_type": "damage_assessment",
"results": ai_result,
"confidence": 0.94
})
GET/api/v1/evidence/{csv_code}Evidencia completa + URL de descarga (para IA)
Devuelve la prueba de integridad, metadatos completos y una URL firmada para descargar la imagen original verificada. Consume 1 credito de verificacion.
Caso de uso: Tu sistema recibe un codigo CSV, llama a este endpoint para confirmar que la imagen es autentica,
descarga el original verificado via download_url y lo pasa a tu modelo de IA sabiendo que no ha sido manipulado.
import requests
KEY = "rc_live_YOUR_KEY"
CSV = "RC-20250325-AB12"# 1. Verificar y obtener URL de descarga
r = requests.get(f"https://prorealitycheck.com/api/v1/evidence/{CSV}",
headers={"X-API-Key": KEY})
data = r.json()
ifnot data["integrity"]["intact"]:
raise ValueError("Imagen manipulada — no procesar")
# 2. Descargar la imagen original verificada
img_r = requests.get(data["download_url"])
img_bytes = img_r.content
# 3. Pasar a tu modelo de IA con garantia de autenticidad# La imagen tiene SHA-256 = data["integrity"]["hash_fiel"]# Trust rating = data["metadata"]["trust_rating"] (1-5)
result = your_ai_model.analyze(img_bytes, metadata=data["metadata"])
Descarga el archivo original del vault (descifrado). No requiere API key — la autenticacion es via firma HMAC en la URL.
Param
Tipo
Descripcion
exp
int
Req
Unix timestamp de expiracion
sig
string
Req
Firma HMAC-SHA256 (32 chars)
Headers de respuesta utiles:
Header
Valor
X-RC-Hash
SHA-256 del archivo original
X-RC-Integrity
intact o unknown
X-RC-Trust-Rating
1-5
La URL expira en 1 hora. Si caduca, solicita una nueva via /api/v1/evidence/{code}.
POST/api/v1/evidence/{csv}/analyzeEnviar analisis IA sobre evidencia sellada
Registra los resultados de tu modelo de IA sobre una evidencia. Solo disponible si la evidencia fue creada via invitacion invertida (request-capture) pagada por tu cuenta.
Campo
Tipo
Descripcion
provider_name
string
Req
Nombre de tu modelo/servicio IA
analysis_type
string
Opt
damage_assessment, content_description, general
results
object
Req
Resultados del analisis (formato libre)
confidence
float
Opt
Confianza del analisis (0.0-1.0)
El analisis queda vinculado permanentemente a la evidencia. Aparece en el informe judicial PDF, en la web de verificacion y en la API.
GET/api/v1/evidence/{csv}/analysesListar analisis IA de una evidencia
Devuelve todos los analisis IA vinculados a una evidencia. Requiere derechos de analisis.
POST/api/v1/webhooksRegistrar webhook
Campo
Tipo
Descripcion
url
string
Req
URL HTTPS del receptor
events
string[]
Req
certify.complete, evidence.verified
// Respuesta
{
"status": "created",
"url": "https://tu-servidor.com/webhooks/rc",
"secret": "whsec_abc123..."// guardar — no se vuelve a mostrar
}
GET/api/v1/webhooksListar webhooks activos
Devuelve array de webhooks registrados para tu API key.
DELETE/api/v1/webhooks/{id}Eliminar webhook
Elimina un webhook por su ID.
Endpoints — Partner B2B
API para integraciones empresariales. Base: /api/partner. Auth: X-API-Key: rc_...
GET/api/partner/plansPlanes disponibles (publico)
No requiere autenticacion. Devuelve planes B2B con precios y quotas.
POST/api/partner/onboardingRegistrar partner y obtener API key
Campo
Tipo
Descripcion
partner_name
string
Req
Nombre de la empresa
partner_email
string
Req
Email de contacto
plan_id
string
Req
ID del plan (de GET /plans)
La API key solo se muestra una vez. Guardala de forma segura.
GET/api/partner/verify/{csv_code}Verificar evidencia (1 unidad de quota)
Verifica integridad y devuelve datos completos incluyendo hashes, ubicacion y trust rating.
POST/api/partner/verify/batchVerificar hasta 50 evidencias
Facturacion: Cada evidencia encontrada consume 1 unidad de quota.
Un batch de 50 codigos donde 30 existen = 30 unidades consumidas.
Las no encontradas no consumen quota.
Inserta un verificador de evidencias directamente en tu web con una sola linea de codigo.
Seguridad: El widget usa un endpoint proxy (/api/widget/verify)
para que tu API key no quede expuesta en el HTML de tu pagina. La key se valida en servidor
y solo devuelve datos publicos (sin PII, sin GPS exacto).
El rate limit es de 30 req/min por IP.
Instalacion
<!-- 1. Contenedor -->
<div id="rc-widget"></div>
<!-- 2. Script con tu widget key -->
<script src="https://prorealitycheck.com/static/widget.js"
data-key="rc_live_YOUR_KEY"
data-theme="dark"
data-lang="es">
</script>
Opciones (data-attributes)
Atributo
Valores
Default
Descripcion
data-key
rc_live_...
—
Tu API key (requerida para verificar)
data-csv
RC-XXXX
—
Pre-rellenar un codigo concreto
data-theme
light | dark
light
Tema visual
data-lang
es | en
es
Idioma
data-mode
full | compact | badge
full
Modo de visualizacion
data-target
CSS selector
#rc-widget
Punto de montaje
data-callback
functionName
—
Funcion global llamada con el resultado
Modos
full — Formulario completo con input, boton, resultado detallado (trust, fecha, ubicacion, hash).
compact — Input + boton en linea. Ideal para barras de herramientas.
badge — Insignia automatica que verifica un CSV fijo. Requiere data-csv. Ideal para paginas de evidencia.
Ejemplo: Badge en tu web
<!-- Muestra "Verificado" o "No verificado" automaticamente -->
<div id="rc-widget"></div>
<script src="https://prorealitycheck.com/static/widget.js"
data-key="rc_live_YOUR_KEY"
data-csv="RC-20250320-AB12"
data-mode="badge">
</script>
Ejemplo: Callback personalizado
<script>
function onVerification(result) {
if (result.integrity_intact) {
console.log('Evidencia integra:', result.csv_code);
// Actualizar tu UI, guardar en tu BD, etc.
} else {
console.warn('Integridad comprometida');
}
}
</script>
<div id="rc-widget"></div>
<script src="https://prorealitycheck.com/static/widget.js"
data-key="rc_live_YOUR_KEY"
data-callback="onVerification">
</script>
Firma de webhooks
Cada webhook se firma con HMAC-SHA256. Verifica la firma antes de procesar el evento.
Cabeceras del webhook
Cabecera
Descripcion
X-RC-Event
Nombre del evento (certify.complete, evidence.verified)
Si tu servidor responde 5xx, reintentamos con backoff exponencial: 2s, 4s, 8s (max 3 reintentos). Las respuestas 2xx/3xx/4xx no se reintentan.
Modo sandbox
Las API keys con is_sandbox=true devuelven respuestas sinteticas sin consumir creditos. Usa sandbox para desarrollo y testing.
Las respuestas sandbox incluyen "sandbox": true para distinguirlas de datos reales.
Los CSV generados empiezan por SANDBOX-.
Precios
Todos los precios incluyen 21% IVA. Sin permanencia.
Packs (pago unico, sin compromiso)
Pack
Creditos
PVP
Precio/unidad
PHOTO_25
25 fotos
2,90 €
0,12 €
PHOTO_50
50 fotos
4,90 €
0,10 € -16%
PHOTO_200
200 fotos
14,90 €
0,075 € -36%
VERIFY_5
5 verificaciones
5,00 €
1,00 €
VERIFY_20
20 verificaciones
15,00 €
0,75 € -25%
VERIFY_50
50 verificaciones
30,00 €
0,60 € -40%
REPORT_1
1 informe
35,00 €
35,00 €
REPORT_5
5 informes
149,00 €
29,80 € -15%
REPORT_10
10 informes
259,00 €
25,90 € -26%
Suscripciones Pro (base + overage)
Plan
Mensual
Anual
Certs incl.
Verify incl.
Informes incl.
Pro Personal
9,90 €
89 €
30
5
1
Pro Business
39,00 €
349 €
200
20
5
Enterprise
499,00 €
4.990 €
10.000
2.000
100
Tarifas de exceso (overage)
Cuando se agotan los creditos incluidos, el uso continua y se factura al final del ciclo.
Plan
Exceso cert
Exceso verify
Exceso informe
Pro Personal
0,15 €
1,50 €
30,00 €
Pro Business
0,10 €
1,00 €
25,00 €
Enterprise
0,03 €
0,50 €
20,00 €
Como funciona: Stripe crea la factura mensual → RC inyecta las lineas de exceso automaticamente
via webhook invoice.created → el cliente paga base + exceso en un solo cargo.
Guia de integracion para agentes IA
Si eres un agente, LLM o sistema automatizado integrando Reality Check, esta seccion es para ti.
Resumen para agentes: Reality Check sella fotos con hash SHA-256 + GPS + timestamp.
La imagen sellada queda en un vault cifrado AES-256. Tu puedes verificar su integridad,
descargar la imagen autenticada, y enviar resultados de analisis IA que se vinculan permanentemente.
Endpoints que necesitas (en orden)
#
Endpoint
Para que
Coste
1
GET /api/v1/status
Comprobar creditos disponibles
Gratis
2
POST /api/v1/certify
Sellar una foto (hash + GPS + timestamp)
1 sello
3
GET /api/v1/verify/{csv}
Verificar que no fue manipulada
1 verify
4
GET /api/v1/evidence/{csv}
Metadatos completos + URL de descarga
1 verify
5
GET /api/v1/download/{csv}
Descargar imagen verificada (URL firmada)
Gratis
6
POST /api/v1/evidence/{csv}/analyze
Enviar tu analisis IA
Gratis
Autenticacion
# Todas las llamadas llevan esta cabecera:
X-API-Key: rc_live_YOUR_KEY
# Excepto /api/v1/download que usa firma HMAC en la URL
Flujo completo para un agente
import requests, hashlib
BASE = "https://prorealitycheck.com"
KEY = "rc_live_YOUR_KEY"
H = {"X-API-Key": KEY}
# ── Paso 1: Comprobar creditos ──────────────────────────────
status = requests.get(f"{BASE}/api/v1/status", headers=H).json()
print(f"Sellos: {status['credits']['paid_photo']}")
# ── Paso 2: Sellar una foto ─────────────────────────────────with open("foto.jpg", "rb") as f:
data = f.read()
sha = hashlib.sha256(data).hexdigest()
r = requests.post(f"{BASE}/api/v1/certify", headers=H,
files={"file": ("foto.jpg", data)},
data={"client_hash": sha, "ref_id": "agente-analisis-001"})
csv = r.json()["csv_code"]
print(f"Sellada: {csv}")
# ── Paso 3: Verificar integridad ────────────────────────────
v = requests.get(f"{BASE}/api/v1/verify/{csv}", headers=H).json()
assert v["integrity_intact"], "Imagen manipulada"# ── Paso 4: Obtener metadatos + URL de descarga ────────────
ev = requests.get(f"{BASE}/api/v1/evidence/{csv}", headers=H).json()
print(f"GPS: {ev['metadata']['lat']}, {ev['metadata']['lon']}")
print(f"Trust: {ev['metadata']['trust_rating']}/5")
# ── Paso 5: Descargar imagen verificada ─────────────────────
img = requests.get(ev["download_url"])
img_bytes = img.content # imagen original, descifrada del vault# ── Paso 6: Ejecutar tu IA y subir resultados ──────────────# (solo disponible si la evidencia fue creada via request-capture)
resultado_ia = {
"tipo": "vehiculo",
"dano": "impacto frontal",
"severidad": "moderado",
"coste_estimado": 3200,
}
requests.post(f"{BASE}/api/v1/evidence/{csv}/analyze", headers=H,
json={
"provider_name": "Mi Agente IA v1.0",
"analysis_type": "damage_assessment",
"results": resultado_ia,
"confidence": 0.94,
})
Codigos de respuesta que tu agente debe manejar
HTTP
Significado
Accion del agente
200
OK
Procesar respuesta JSON
401
API key invalida
Parar. Verificar key. No reintentar.
402
Sin creditos
Parar. Notificar al usuario que compre en /billing
404
Evidencia no existe
Verificar CSV code. No reintentar.
422
Hash no coincide
Recalcular SHA-256. El archivo puede estar corrupto.
429
Rate limit
Esperar 60 segundos. Reintentar con backoff.
500
Error interno
Reintentar 1 vez tras 5 segundos.
Notas para agentes
Importante:
El client_hash en /certify es obligatorio — calcula SHA-256 del archivo ANTES de enviarlo
La URL de descarga (download_url) expira en 1 hora — usala inmediatamente
El endpoint /analyze solo funciona en evidencias creadas via /request-capture (flujo invertido)
Los webhooks te notifican cuando una captura solicitada se completa — no necesitas polling
Rate limit: 10 req/min para certify, 20 req/min para verify, 30 req/min para download