Constaia
Conceptos

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):

storageQué pasa con el fichero
noneAná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.
temporarySe guarda cifrado y se borra automáticamente pasadas ttl_hours horas (de 1 a 720; 24 por defecto).
persistentSe 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} devuelve 404 resource_missing y el análisis no aparece al listar.
  • Constaia solo conserva los metadatos de facturación: páginas, créditos y tipo de documento.
Lo mínimo posible
{
  "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: none, análisis síncrono
"storage": { "mode": "none", "file_deleted_at": "2026-09-29T10:00:02Z", "expires_at": null }
storage: temporary, ttl_hours: 72
"storage": { "mode": "temporary", "file_deleted_at": null, "expires_at": "2026-10-02T10:00:02Z" }
CampoDescripción
modeEl modo aplicado (el que pediste o el predeterminado de la cuenta).
file_deleted_atCuándo se borró el fichero, o null si sigue guardado. En modo none coincide con el final del análisis.
expires_atEn modo temporary, cuándo se borrará. null en los demás.

Borrar un análisis

Terminal
curl -X DELETE https://api.constaia.com/v1/analyses/an_01J9Z8Q3K4M5N6P7Q8R9S0T1V2 \
  -H "Authorization: Bearer $CONSTAIA_API_KEY"
Respuesta
{ "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 exports son enlaces firmados que caducan a las 24 horas. Pasado ese tiempo devuelven 404. 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.

PerfilProveedores de IA que puede usar
sovereignSolo 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.
standardLos 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:

Respuesta
"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

En esta página