Almacenamiento y privacidad
Qué guarda Constaia de tus documentos y cuánto tiempo, con los modos none, temporary y persistent, keep_results, borrado, cifrado y perfiles de proceso.
Por defecto Constaia no guarda tus documentos: los procesa y los descarta. Puedes elegir, por petición o como predeterminado de la cuenta, cuánto tiempo se conservan el fichero y los resultados.
Modos de almacenamiento
Se eligen con la opción storage de POST /v1/analyze (y de los lotes):
storage | Qué pasa con el fichero |
|---|---|
none | Análisis síncrono: el fichero se procesa en memoria y nunca se escribe en el almacenamiento. Asíncrono o en lote: se guarda cifrado solo hasta que el análisis termina y entonces se borra. |
temporary | Se guarda cifrado y se borra automáticamente pasadas ttl_hours horas (de 1 a 720; 24 por defecto). |
persistent | Se guarda cifrado hasta que lo borras con DELETE /v1/analyses/{id}. |
Si no mandas storage, se usa el predeterminado de tu cuenta, y si no has configurado ninguno, none. Lo mismo con
ttl_hours: el de la cuenta o, si no hay, 24. Los predeterminados se cambian en el
panel (Ajustes de la cuenta).
storage afecta al fichero. Los resultados (tipo, veredicto, campos) se guardan para que puedas consultarlos
con GET /v1/analyses/{id}, salvo que uses keep_results: false.
keep_results: false
Con keep_results: false los datos extraídos tampoco se guardan:
- Recibes el resultado completo una sola vez, en la respuesta (o en el webhook si es asíncrono).
- Después,
GET /v1/analyses/{id}devuelve404 resource_missingy el análisis no aparece al listar. - Constaia solo conserva los metadatos de facturación: páginas, créditos y tipo de documento.
{
"file_url": "https://example.com/dni.jpg",
"expect": "es_dni",
"storage": "none",
"keep_results": false
}Guía práctica: analizar sin guardar.
El objeto storage de la respuesta
Cada análisis te dice qué ha pasado con el fichero:
"storage": { "mode": "none", "file_deleted_at": "2026-09-29T10:00:02Z", "expires_at": null }"storage": { "mode": "temporary", "file_deleted_at": null, "expires_at": "2026-10-02T10:00:02Z" }| Campo | Descripción |
|---|---|
mode | El modo aplicado (el que pediste o el predeterminado de la cuenta). |
file_deleted_at | Cuándo se borró el fichero, o null si sigue guardado. En modo none coincide con el final del análisis. |
expires_at | En modo temporary, cuándo se borrará. null en los demás. |
Borrar un análisis
curl -X DELETE https://api.constaia.com/v1/analyses/an_01J9Z8Q3K4M5N6P7Q8R9S0T1V2 \
-H "Authorization: Bearer $CONSTAIA_API_KEY"{ "id": "an_01J9Z8Q3K4M5N6P7Q8R9S0T1V2", "object": "analysis", "deleted": true }Borra el fichero, los resultados y las exportaciones del análisis. Es irreversible: después, GET devuelve 404.
Úsalo, por ejemplo, cuando un usuario ejerce su derecho de supresión.
Exportaciones y descargas
- Las URL de
exportsson enlaces firmados que caducan a las 24 horas. Pasado ese tiempo devuelven404. Ver exportaciones. - Todas las descargas pasan por
https://api.constaia.com/v1/files/…. Nunca recibes una URL directa del almacenamiento de objetos.
Cifrado y dónde se guarda
- Cifrado en la aplicación antes de escribir nada: AES-256-GCM con una clave distinta por cuenta, derivada de una clave maestra. El proveedor de almacenamiento solo ve datos cifrados.
- Almacenamiento de objetos en la UE: en producción, Cloudflare R2 con jurisdicción UE (los datos se guardan en centros de datos de la UE), que además cifra en reposo. Solo accede el servidor de la API: ningún tráfico tuyo ni de tus usuarios va a URLs del almacenamiento; ficheros y exportaciones se sirven siempre a través de la API.
- Claves de API: se guardan como hash (SHA-256) y solo se muestran una vez al crearlas.
- Secretos de webhook: se guardan cifrados.
- Tránsito: toda la API se sirve por HTTPS.
Dónde se procesan los documentos (regiones y proveedores de IA) está en residencia de datos.
Perfiles de proceso: sovereign y standard
Con la opción processing eliges qué proveedores de IA pueden tocar un documento, en cada petición. Si no la mandas,
se usa el perfil predeterminado de tu cuenta (sovereign cuando hay un proveedor soberano disponible). El
predeterminado de la cuenta todavía no se puede cambiar desde el panel: envía processing en cada petición o
escríbenos a hola@constaia.com.
| Perfil | Proveedores de IA que puede usar |
|---|---|
sovereign | Solo proveedores con sede y operación en la UE: un modelo europeo (IONOS, Scaleway, OVHcloud) o alojado por Constaia, OCR de Mistral (París) y los lectores locales de MRZ y PDF417. |
standard | Los anteriores y, además, Claude en AWS Bedrock (Fráncfort, eu-central-1) o Gemini en Google Vertex AI (región UE). |
Sobre el perfil standard
AWS y Google procesan los datos en regiones de la UE, pero son empresas con sede en Estados Unidos y por tanto están
sujetas a legislación estadounidense como la CLOUD Act. Si eso es un problema para tu caso, usa sovereign.
Si el perfil pedido no está disponible, la API responde 422 processing_unavailable. La respuesta incluye qué perfil
se aplicó y qué proveedores procesaron el documento:
"processing": {
"profile": "sovereign",
"region": "eu",
"mode": "vlm",
"providers": [
{ "name": "tesseract", "region": "local", "role": "local", "model": "mrz" },
{ "name": "openai_compat", "region": "de-fra", "role": "llm", "model": "mistral-small-3.2" }
]
}Detalle de cada campo en POST /v1/analyze.
La lista completa de subencargados de cada perfil está en el DPA.
Registro de auditoría y DPA
- Constaia mantiene un registro de auditoría de las acciones sensibles de la cuenta (quién, desde qué IP y qué acción).
- El acuerdo de encargo de tratamiento (DPA) está en /es/legal/dpa.
Siguientes pasos
Paginación
Cómo recorrer listas de la API de Constaia con paginación por cursor (limit y starting_after) y filtros por estado, tipo y metadata, con ejemplos.
Residencia de datos y cumplimiento
Dónde procesa y guarda Constaia los documentos, los perfiles de procesamiento sovereign y standard, la futura región de EE. UU. y cómo se aplican el RGPD, la CCPA y la DPPA.