ZUREE API
EN PT-BR ES
Agendar una demo técnica
API de inteligencia de documentos clínicos · V1

Papeleo médico entra. Datos clínicos estructurados salen.

Los equipos de siniestros y las plataformas de telemedicina pierden semanas con PDF de laboratorio, recetas escaneadas y resúmenes clínicos enviados por fax. Zuree los lee y devuelve hechos normalizados y codificados en LOINC — cada uno con un índice de confianza y procedencia hasta el documento de origen exacto.

Una sola API REST. Cargas idempotentes, webhooks firmados, un SDK de TypeScript tipado y una representación FHIR R4 de todo lo que extrae.

Tipos de documento
Informes de laboratorio · Recetas · Resúmenes clínicos
Cada hecho vuelve con
Codificación · Confianza · Procedencia
POST /v1/documents/:id/process
Respuesta · 202 Accepted
{ "jobId": "job_8Kd2", "status": "QUEUED" }
Webhook · document.processing_completed
{
  "type": "document.processing_completed",
  "data": {
    "documentId": "doc_3Fq9",
    "documentType": "LAB_REPORT",
    "processingStatus": "PROCESSED"
  }
}
GET /v1/patients/:id/observations
{
  "display": "Hemoglobin",
  "coding": { "system": "LOINC", "code": "718-7" },
  "valueNumeric": 13.5, "unit": "g/dL",
  "interpretation": "LOW",
  "confidence": 0.93,
  "provenance": { "documentId": "doc_3Fq9",
                  "method": "AI_TEXT" }
}
01 · El problema

El historial clínico llega como documento, no como dato.

Un solo siniestro o alta puede implicar una docena de archivos de una docena de laboratorios, cada uno con su formato, sus unidades y sus abreviaturas. Alguien tiene que leerlos.

La abstracción manual no escala

Enfermeras revisoras y peritos reescriben valores en formularios. El rendimiento queda limitado por la plantilla, y el coste por archivo no baja nunca.

El OCR en bruto no es una respuesta

Un volcado de texto todavía hay que clasificarlo, codificarlo y normalizarle las unidades antes de que un motor de reglas o un modelo pueda usarlo.

Una extracción sin origen es inservible

Si un revisor no puede rastrear un valor hasta la página de la que salió, no sostiene una decisión que haya que defender.

Construirlo en casa es un desvío

OCR, detección de plantillas, versionado de prompts, validación de esquema, reintentos idempotentes, trazas de auditoría. Meses de trabajo que no son tu producto.

02 · Cómo funciona

Diez etapas con punto de control, en orden fijo.

Cada etapa es idempotente y guarda punto de control por documento. Un reintento retoma donde se detuvo — nunca duplica trabajo ni vuelve a facturar una llamada de IA de una etapa ya completada.

Etapa 01 de 10

Ingestión

El archivo aterriza en almacenamiento de objetos privado, indexado por tenant más un SHA-256 de sus bytes. Ese hash es la identidad del documento, así que una recarga idéntica resuelve al documento existente en vez de crear un segundo.

Lo que registra el ledger
stage: INGESTION
status: ok  ·  42ms
sha256: 9f2c…a71b
dedupe: miss

Cada ejecución es auditable: un ledger de etapas con tiempos, tokens, coste y decisiones de escalado. La salida de la IA se trata como entrada no confiable — pasa validación de esquema antes de que nada aguas abajo la lea, y el JSON reparado se marca como reparado, nunca se devuelve como limpio.

03 · Antes y después

Pulsa una línea del informe. Mira el hecho en que se convierte.

La procedencia no es una nota al pie — es un campo. Cada hecho extraído apunta de vuelta al documento, al registro de extracción y al método que lo produjo.

Entrada · lab-report.pdf 2.1 MB
MERIDIAN CLINICAL LABORATORIES
Muestra 88-41207 · tomada el 01/07/2026
ANALITORESULT.UNID.REFERENCIA
Revisado por C. Okafor, MD · página 1 de 2
Salida · observation LOW
{
  "display": "Hemoglobin",
  "coding": {
    "system": "LOINC",
    "code": "718-7",
    "display": "Hemoglobin"
  },
  "valueNumeric": 13.5,
  "unit": "g/dL",
  "referenceRange": {
    "low": 12, "high": 16, "unit": "g/dL",
    "text": "12.0 - 16.0"
  },
  "interpretation": "LOW",
  "observedAt": "2026-07-01",
  "confidence": 0.93,
  "provenance": {
    "documentId": "doc_3Fq9",
    "extractionId": "ext_7Bm2",
    "method": "AI_TEXT",
    "confidence": 0.93
  }
}
04 · Guía rápida

Cinco llamadas de cero a dato estructurado.

POST /v1/patients
curl -sX POST "$ZUREE_BASE_URL/v1/patients" \
  -H "Authorization: Bearer $ZUREE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pseudonym":"ext-user-42"}'

# → {"id":"<patientId>",
#     "pseudonym":"ext-user-42",
#     "createdAt":"2026-07-01T09:12:04.000Z"}
SDK @zuree/sdk · crear un paciente
import { ZureeClient } from '@zuree/sdk';

const zuree = new ZureeClient({
  apiKey: process.env.ZUREE_API_KEY!,
  baseUrl: process.env.ZUREE_BASE_URL!,
});

const patient = await zuree.patients.create({
  pseudonym: 'ext-user-42',
});
POST /v1/documents
CONTENT=$(base64 -i lab-report.pdf)

curl -sX POST "$ZUREE_BASE_URL/v1/documents" \
  -H "Authorization: Bearer $ZUREE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d "{\"patientId\":\"$PATIENT_ID\",
       \"filename\":\"lab-report.pdf\",
       \"mimeType\":\"application/pdf\",
       \"content\":\"$CONTENT\"}"

# → {"document":{"id":"<documentId>",
#                "status":"SECURITY_CHECKED"},
#     "duplicate":false}
SDK @zuree/sdk · subir un documento
import { readFile } from 'node:fs/promises';
import { randomUUID } from 'node:crypto';

const bytes = await readFile('lab-report.pdf');

const { document } = await zuree.documents.create(
  {
    patientId: patient.id,
    filename: 'lab-report.pdf',
    mimeType: 'application/pdf',
    content: bytes.toString('base64'),
  },
  { idempotencyKey: randomUUID() },
);
POST /v1/documents/:id/process
curl -sX POST \
  "$ZUREE_BASE_URL/v1/documents/$DOCUMENT_ID/process" \
  -H "Authorization: Bearer $ZUREE_API_KEY"

# → 202 {"jobId":"<jobId>",
#          "status":"QUEUED",
#          "attempts":0}
SDK @zuree/sdk · encolar el procesamiento
await zuree.documents.process(document.id);

let s = await zuree.documents.status(document.id);
while (s.status === 'PROCESSING') {
  await new Promise((r) => setTimeout(r, 2000));
  s = await zuree.documents.status(document.id);
}
POST /v1/webhooks
curl -sX POST "$ZUREE_BASE_URL/v1/webhooks" \
  -H "Authorization: Bearer $ZUREE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://your-app.example/hooks/zuree",
       "events":["document.processing_completed",
                 "document.processing_failed"]}'

# → {"id":"whe_…","secret":"whsec_…"}
SDK @zuree/sdk · reaccionar al webhook
import { verifyWebhookSignature } from '@zuree/sdk';

app.post('/hooks/zuree', async (req, res) => {
  const raw = await readRawBody(req);
  const check = verifyWebhookSignature({
    payload: raw,
    signatureHeader: req.headers['zuree-webhook-signature'],
    secret: process.env.ZUREE_WEBHOOK_SECRET!,
  });
  if (!check.ok) return res.status(401).end();

  const event = JSON.parse(raw);
  res.status(200).end();
});
GET /v1/patients/:id/observations
curl -s \
  "$ZUREE_BASE_URL/v1/patients/$PID/observations?limit=50" \
  -H "Authorization: Bearer $ZUREE_API_KEY"

# → { "items": [ { "display": "Hemoglobin",
#       "coding": {"system":"LOINC","code":"718-7"},
#       "valueNumeric": 13.5, "unit": "g/dL",
#       "interpretation": "LOW", "confidence": 0.93,
#       "provenance": {…} } ],
#     "nextCursor": "b2Zmc2V0OjUw" }
SDK @zuree/sdk · leer los hechos clínicos
for await (const obs of zuree.clinical.observationsAll(patient.id)) {
  console.log(
    obs.display,
    obs.valueNumeric ?? obs.valueText,
    obs.unit ?? '',
    `(${obs.confidence})`,
  );
}

for await (const e of zuree.clinical.timelineAll(patient.id)) {
  console.log(e.date ?? '(undated)', e.kind);
}

Idempotente por diseño

Envía un Idempotency-Key y ningún reintento duplica. Los bytes idénticos se deduplican solos.

Webhooks firmados

Firma HMAC, entrega al menos una vez con backoff exponencial y un log de entregas por endpoint.

Límites de tasa programables

429 con Retry-After. El SDK reintenta automáticamente y lo respeta.

OpenAPI + FHIR R4

Spec en vivo en /v1/openapi.json. Los datos clínicos también salen como FHIR R4.

05 · Para quién es

Cuatro sectores, un mismo cuello de botella.

Seguros y siniestros

Resuelve con datos, no con adjuntos

Manda los adjuntos del siniestro directo a tu motor de reglas. Observaciones, medicaciones y procedimientos codificados llegan con índices de confianza, para aprobar automáticamente los casos limpios y derivar a una persona solo los archivos ambiguos.

  • Los umbrales de confianza deciden flujo automático o revisión manual
  • Procedencia en cada campo para decisiones y recursos defendibles
  • Log de auditoría append-only de exportaciones, borrados y accesos
Plataformas de telemedicina

El clínico ve historial, no una pila de PDF

Deja que el paciente suba lo que tenga durante el alta. Zuree devuelve una línea de tiempo cronológica unificada — análisis, medicaciones, condiciones, procedimientos, encuentros — para que la consulta empiece con contexto y no con un visor de archivos.

  • Endpoint /timeline unificado, cronológico entre tipos de hecho
  • Pipeline asíncrono con webhooks — el alta nunca se bloquea leyendo
  • Valores listos para tendencia: numéricos, unidades normalizadas, rangos intactos
Aseguradoras de salud

Insumos de suscripción realmente comparables

La evidencia médica de cien laboratorios distintos normaliza al mismo modelo codificado, así que la evaluación de riesgo compara igual con igual. LOINC donde existe código, un código LOCAL explícito de Zuree donde no — nunca una suposición silenciosa.

  • Normalización de unidades y rangos de referencia entre fuentes
  • Exportación JSON portable por paciente, además de FHIR R4
  • Ventanas de retención configurables por tenant
Startups de health tech

Envía la función, sáltate el pipeline

Podrías construir OCR, detección de plantillas, versionado de prompts, validación de esquema y una traza de auditoría. O podrías instalar el SDK esta tarde y gastar el trimestre en el producto que tus usuarios sí pidieron.

  • @zuree/sdk tipado, con paginación automática y reintento incluidos
  • Pacientes pseudonímicos — no hace falta ningún identificador real
  • Empieza en el plan más bajo y crece hacia precio por volumen
06 · Prueba de primera mano

Lanzamos una app de consumo sobre esta API antes de venderla.

Zuree Mobile es un producto de consumo en producción que corre íntegramente sobre los endpoints documentados en esta página — el mismo modelo de paciente pseudonímico, el mismo pipeline de diez etapas, la misma salida codificada. Sin endpoints privados, sin vía privilegiada.

Eso lo convierte en nuestra implementación de referencia y en nuestro banco de pruebas permanente de precisión: formatos de laboratorio desconocidos le llegan todos los días, y una regresión aparece en registros reales antes de poder alcanzar el tenant de un cliente.

  • Exactamente la ruta /documents → /process → /timeline de la guía rápida
  • Volumen de consumo sobre plantillas de laboratorio que nadie dio de alta antes
  • Sus resúmenes y su acompañamiento van por encima de la API — la API solo transcribe
zuree.app · cada carga se convierte en un registro
zuree.app · cada carga se convierte en un registro
zuree.app · confianza y enlace al documento de origen
zuree.app · confianza y enlace al documento de origen
La misma API, una capa más abajo
zuree.app  (iOS / Android)
   │
   └─ POST /v1/documents
      POST /v1/documents/:id/process
      GET  /v1/patients/:id/timeline
         │
         └─ la misma API V1 de esta página
07 · Privacidad y seguridad

Hecha para la pseudonimia, no adaptada después.

Tú identificas a los pacientes con una referencia opaca que controlas. Zuree nunca necesita un identificador del mundo real para procesar un documento.

Lo que no afirmamos

Zuree no hace ninguna afirmación de cumplimiento normativo — ni RGPD, ni HIPAA, ni ningún otro marco. Los controles de al lado son los mecanismos técnicos que implementamos y que explicaremos a tu equipo de seguridad. Determinar bases legales, plazos de retención y obligaciones de supresión en tu jurisdicción sigue siendo tuyo. Preferimos decirlo de entrada y no en la due diligence.

Sin contenido clínico en telemetría

Logs, métricas, analytics, rastreadores de errores, payloads de webhook y registros de auditoría llevan IDs opacos, códigos y recuentos — nunca contenido de documento.

Aislamiento de tenant en cada consulta

La identidad del tenant se resuelve en el servidor a partir de tu clave de API. Un tenant_id nunca se acepta en el cuerpo de una petición.

Almacenamiento privado, URLs efímeras

Los buckets son privados; las URLs firmadas caducan en minutos. Las cargas pasan análisis de malware y el tipo de contenido se verifica desde los bytes.

Transparencia de proveedor de IA

Cada extracción registra qué proveedor, qué modelo exacto, qué versión de prompt y qué versión de pipeline la produjo — legible por la API.

Borrado coordinado

Borrar un documento lo elimina de la base de datos, del almacenamiento de objetos, de la cola de procesamiento y de los archivos temporales — dejando un registro de auditoría de IDs y recuentos, no de contenido.

Retención en tus términos

Indefinida por defecto — Zuree nunca borra lo que no pediste. Activa una ventana de antigüedad de documento por tenant y los archivos vencidos se purgan por la misma vía.

La disciplina de alcance es parte de la postura de seguridad: Zuree transcribe documentos a datos estructurados. No diagnostica, no interpreta hallazgos, no lee imágenes, no recomienda tratamiento ni actúa como apoyo a la decisión clínica — y rechazamos peticiones de función que cruzan esa línea.

08 · Precios

Planes mensuales fijos con cuota de documentos incluida.

Un documento es un archivo que envías a /process. Las recargas deduplicadas y los reintentos retomados nunca se cobran dos veces. El exceso se mide por documento, así que un pico cuesta dinero — no una conversación de upgrade.

Para pilotos y primeras integraciones

Starter

Pon un flujo en producción sin pasar por un ciclo de compras.

$490$417 /mes
Facturación mensual · cancela cuando quierasFacturación anual · $4998 al año
Documentos incluidos
1000 / mes
Exceso
$0.34 / documento
  • Los tres tipos de documento de V1
  • Webhooks firmados y acceso completo al SDK
  • Exportación FHIR R4 y JSON portable
  • Soporte por correo, siguiente día laborable
  • Dos claves de API, un entorno
Empezar en Starter
El más común en volumen de producción

Growth

Para equipos que procesan siniestros o altas de pacientes cada día.

$2450$2083 /mes
Facturación mensual · cancela cuando quierasFacturación anual · $24.990 al año
Documentos incluidos
10.000 / mes
Exceso
$0.19 / documento
  • Todo lo de Starter
  • Presupuestos mayores de peticiones y concurrencia
  • Ventana de retención configurable por tenant
  • Tenants separados de sandbox y producción
  • Canal compartido en Slack, respuesta el mismo día
  • Ingeniero de onboarding asignado 30 días
Elegir Growth
Alto volumen y cargas reguladas

Scale

Para aseguradoras y plataformas donde el volumen de documentos es el negocio.

$8900$7565 /mes
Facturación mensual · cancela cuando quierasFacturación anual · $90.780 al año
Documentos incluidos
60.000 / mes
Exceso
$0.11 / documento
  • Todo lo de Growth
  • Tarifas de exceso con compromiso de volumen
  • Cola de procesamiento prioritaria
  • Onboarding de plantillas de tus principales emisores
  • Apoyo en revisión de seguridad y lista de subencargados
  • Objetivos contractuales de disponibilidad y respuesta
Hablar de Scale
En todos los planes

Los tres tipos de documento de V1, codificación LOINC, procedencia, confianza, webhooks, la spec OpenAPI, el SDK de TypeScript, exportación FHIR R4 y borrado auditado. Ninguna función queda tras un muro de pago — solo cambian volumen y soporte.

No se factura

Cargas duplicadas (bytes idénticos), reintentos retomados de una etapa con punto de control, documentos devueltos como UNSUPPORTED y toda lectura de datos que ya tienes.

Sandbox

Un tenant de sandbox gratuito con 100 documentos acompaña toda evaluación técnica, para que midas la precisión sobre tu propio corpus antes de firmar nada.

Calculadora de volumen

¿Cuánto costaría tu volumen?

Arrastra hasta el volumen mensual de documentos que esperas. Elegimos el plan más barato para ese volumen, exceso incluido.

4200 documentos / mes
100120.000
Recomendado · Starter
$1578 /mes
Tarifa de plataforma$490
Incluido en el plan1000 docs
Exceso · 3200 docs$1088
Coste efectivo por documento$0.376
Agendar una demo técnica

Solo estimaciones, sin impuestos. La facturación anual aplica un 15% de descuento sobre la tarifa de plataforma; el exceso se mantiene en la tarifa del plan. Los volúmenes comprometidos por encima de 120.000 documentos al mes se cotizan individualmente.

09 · Preguntas

Lo que seguridad e ingeniería preguntan primero.

¿Qué tipos de documento soporta V1?+

Informes de laboratorio, recetas e informes médicos / resúmenes clínicos. Un documento que Zuree reconoce pero que queda fuera de ese alcance devuelve estado UNSUPPORTED en vez de una extracción adivinada — y no se factura. Los tipos adicionales son una conversación de roadmap, no una ampliación silenciosa.

¿Zuree interpreta resultados o hace recomendaciones?+

No. Zuree transcribe y normaliza lo que dice el documento. No es un sistema de diagnóstico, de consejo médico, de interpretación radiológica, de recomendación de tratamiento ni de apoyo a la decisión clínica. El campo interpretation de una observación refleja la marca impresa en el informe de origen contra su propio rango de referencia — es transcripción, no juicio.

¿Cómo manejan una salida mala del modelo?+

La salida de la IA se trata como entrada no confiable. Toda respuesta se valida contra esquema antes de que nada aguas abajo la lea. Las respuestas en bruto se guardan de forma inmutable, separadas de los hechos normalizados, para que una extracción siempre pueda rederivarse y auditarse. El JSON que hubo que reparar se marca como tal — nunca se devuelve como limpio. Y ningún campo toma valor por defecto en silencio: una confianza ausente sigue ausente en vez de convertirse en un número plausible.

¿El contenido del documento va a un proveedor de IA externo?+

Sí — la extracción lo exige. Qué proveedor y qué modelo exacto trató un documento dado queda registrado en el registro de extracción y es legible vía GET /v1/documents/{id}/extraction, junto con las versiones de prompt y de pipeline. Los proveedores viven detrás de una interfaz interna, así que la mezcla puede cambiar; la atribución de cada registro dice exactamente qué procesó qué. El tratamiento por parte del proveedor se rige por su contrato, que compartimos en la due diligence.

¿Cuáles son los límites de tasa?+

Los límites numéricos se fijan por despliegue y plan, no en el contrato de la API — los de tu tenant constan en tu cuenta. El mecanismo es estable en cualquier caso: un 429 con Retry-After, que el SDK respeta automáticamente con backoff y jitter. El procesamiento por lotes se encola contra un presupuesto de concurrencia en vez de rechazarse, así que enviar mil documentos de una vez está bien.

¿Podemos sacar nuestros datos, y podemos borrarlos?+

Ambas cosas. Una exportación JSON portable completa por paciente incluye la contabilidad de proveedor por documento, y los datos clínicos también están disponibles como FHIR R4. El borrado es explícito e iniciado por el tenant — DELETE /v1/documents/{id} elimina un documento y sus datos derivados en la base de datos, el almacenamiento de objetos, la cola y los archivos temporales, dejando un registro de auditoría de quién y cuándo, nunca de qué.

¿Qué cuenta como documento facturable?+

Un archivo que completa una ejecución de procesamiento. Volver a subir bytes idénticos devuelve el documento existente con "duplicate": true y no se cobra otra vez. Un reintento que retoma una etapa con punto de control no vuelve a facturar la llamada de IA de una etapa ya terminada. Las lecturas de datos que ya tienes no se miden.

Docs

Referencia completa de la API

Todos los endpoints y campos, con ejemplos en curl y SDK uno al lado del otro.

Leer la documentación →
SDK

@zuree/sdk

Cliente TypeScript tipado con paginación automática, reintento y verificación de webhook.

npm i @zuree/sdk
Spec

OpenAPI, en vivo

Genera un cliente en tu lenguaje desde la spec del propio despliegue en marcha.

/v1/openapi.json
Interoperabilidad

Exportación FHIR R4

El mismo modelo clínico, renderizado como recursos FHIR para tu stack actual.

Ver el mapeo →
Agendar una demo técnica

Tráenos diez de tus documentos más difíciles.

Cuarenta y cinco minutos con un ingeniero, no un pitch. Pasamos tus archivos reales por el pipeline, te mostramos los registros de extracción y la procedencia, y te decimos con claridad dónde falla.

Agendar una demo técnica Obtener acceso al sandbox

Tenant de sandbox con 100 documentos gratis. Sin tarjeta, sin compras.