Solo analizar sin guardar
Minimización de datos (RGPD) con Constaia. Analiza documentos sin guardar el fichero ni los datos extraídos con storage none y keep_results false.
Muchas veces solo necesitas una respuesta ("¿es un DNI vigente de esta persona?") y no quieres que el documento ni sus datos queden guardados en ningún sitio más. Constaia permite analizar sin conservar el fichero y, si quieres, sin conservar tampoco los resultados. Es la forma más sencilla de aplicar el principio de minimización de datos del RGPD.
Tres niveles
| Qué quieres | Opciones | Qué queda en Constaia |
|---|---|---|
| No guardar el fichero | storage: "none" (por defecto) | Los resultados del análisis (tipo, veredicto, campos), hasta que lo borres. |
| No guardar nada | storage: "none" + keep_results: false | Solo metadatos de uso y facturación. |
| Guardar un tiempo y borrar después | storage: "temporary" o "persistent" + DELETE /v1/analyses/{id} | Nada tras el borrado. |
storage: "none": el fichero no se guarda
Es el valor por defecto, salvo que hayas cambiado el de tu cuenta en el panel (ajustes de la cuenta).
- Análisis síncrono (lo normal): el fichero se procesa en memoria y nunca se escribe en el almacenamiento.
- Análisis asíncrono (
async: true) y lotes: el fichero se guarda cifrado solo mientras se procesa y se borra al terminar.
La respuesta deja constancia en storage.file_deleted_at, que puedes guardar como prueba:
"storage": { "mode": "none", "file_deleted_at": "2026-09-29T10:00:02Z", "expires_at": null }Con storage: "none" tampoco se conserva el texto OCR del documento.
keep_results: false: tampoco se guardan los datos
Con keep_results: false recibes el resultado completo una sola vez, en la respuesta, y Constaia no guarda los
datos extraídos (tipo, campos, checks, motivos). Después:
GET /v1/analyses/{id}devuelve404 resource_missing.GET /v1/analyses/{id}/exporttambién devuelve 404.- El análisis no aparece en los listados de la API.
- Solo queda lo necesario para uso y facturación: páginas, créditos, tipo de documento y el estado del veredicto.
Cuidado con export y metadata
Si pides export junto con keep_results: false, los ficheros exportados se generan igualmente y se guardan cifrados
hasta que caducan, a las 24 horas. Si no quieres que quede nada, no pidas exportaciones: toma los datos de la
respuesta. Y los metadata que envíes se guardan con el análisis: usa ids internos, no nombres ni números de documento.
import { Constaia, ConstaiaError, NotFoundError } from "@constaia/sdk";
import { fromPath } from "@constaia/sdk/node";
const constaia = new Constaia(); // lee CONSTAIA_API_KEY
try {
const analysis = await constaia.analyze(await fromPath("./dni_valid.jpg"), {
expect: "es_dni",
checks: { holder: { fullName: "María García López" } },
storage: "none",
keepResults: false,
metadata: { user_id: "u_8812" },
});
// Lo que necesitas, ahora: después ya no estará.
const record = {
analysisId: analysis.id,
status: analysis.verdict?.status,
checkedAt: analysis.completed_at,
fileDeletedAt: analysis.storage.file_deleted_at,
};
console.log(record);
await constaia.analyses.get(analysis.id); // lanza NotFoundError
} catch (err) {
if (err instanceof NotFoundError) console.log("No se conserva nada:", err.code); // resource_missing
else if (err instanceof ConstaiaError) console.error(err.code, err.message, err.requestId);
else throw err;
}Usa el análisis síncrono con keep_results: false. Si el análisis supera los 30 segundos de espera y la API
responde 202, el resultado ya no se puede consultar después: solo te llegará por el webhook analysis.completed, así
que tenlo configurado si procesas PDF largos. Ver Webhooks.
Borrar lo que sí guardaste
Si guardas ficheros o resultados un tiempo (por ejemplo, con storage: "temporary" y ttl_hours para una revisión
humana, o persistent), bórralos cuando ya no los necesites. El borrado elimina el fichero, los resultados y las
exportaciones:
const deleted = await constaia.analyses.delete("an_01J...");
console.log(deleted); // { id: "an_01J...", object: "analysis", deleted: true }Con temporary, el fichero se borra solo al cumplirse ttl_hours (de 1 a 720; por defecto 24). La respuesta indica
cuándo en storage.expires_at.
Valores por defecto de la cuenta
En el panel (app.constaia.com, ajustes de la cuenta) puedes fijar el modo de
almacenamiento y el TTL por defecto. Se aplican cuando una petición no envía storage o ttl_hours. Aun así, envía
storage: "none" explícitamente en el código de los flujos sensibles: así un cambio en el panel no los altera.
keep_results no tiene valor de cuenta: es true salvo que envíes false.
Qué guardar en tu lado
Si Constaia no guarda nada, tu registro es la única constancia de la comprobación. Normalmente basta con:
analysis.idcomo referencia (para soporte; no sirve para recuperar datos conkeep_results: false).verdict.statusy la fecha (completed_at).storage.file_deleted_at, como prueba de que el fichero no se conservó.- Solo los campos que tu proceso necesite de verdad (por ejemplo, el número de documento validado).
Dónde se procesa
El procesamiento se hace en la UE y los ficheros que se guardan se cifran en la aplicación antes de llegar al almacenamiento. Los detalles están en Almacenamiento y privacidad y en Residencia de datos.
Si además quieres que el documento lo procesen solo proveedores con sede y operación en la UE, añade
processing: "sovereign" a las opciones. La respuesta trae el objeto processing con el perfil, la región y los
proveedores que lo trataron: guárdalo junto a tu decisión como prueba. Ver
Residencia de datos.
Probarlo
Con una clave ck_test_…, analiza dni_valid.jpg con storage: "none" y keep_results: false como en el ejemplo:
la respuesta trae el resultado completo y storage.file_deleted_at, y el GET posterior devuelve 404. Más en
Modo test.
Siguientes pasos
Procesamiento masivo con lotes
Procesa cientos o miles de documentos con lotes de hasta 100, webhooks firmados, idempotencia, reintentos, límites de peticiones y export combinado.
Revisión humana
Qué hacer con el veredicto review. Por qué ocurre, cómo recibirlo por webhook, montar una cola de revisión, registrar la decisión y pedir otra foto.