Guarda archivos de IA: de la URL de PiAPI al almacenamiento duradero

Una tarea completada proporciona un resultado, pero una URL del proveedor no es una biblioteca multimedia permanente. Si el usuario necesita abrir, editar o descargar el resultado más adelante, cópialo a un almacenamiento que controles y sigue esa copia por separado de la generación.
1. Lee la salida del modelo utilizado
Consulta el identificador guardado y exige data.status igual a completed antes de extraer archivos. La estructura de data.output cambia según el modelo y la tarea. Usa el ejemplo de consulta correspondiente; no supongas que todas las respuestas tienen una misma URL de imagen o vídeo en el nivel superior.
Por ejemplo, la respuesta Kling documentada contiene un array works con recursos de vídeo. Otros modelos usan campos distintos. Guarda identificador, modelo, tipo de tarea, hora de finalización e índice del recurso seleccionado junto a tu trabajo para recuperar el mismo resultado al reintentar.
2. Copia pronto y revisa la retención por servicio
La documentación de almacenamiento de PiAPI describe reglas distintas por servicio y ubicación. Algunas entradas indican plazos cortos; otras remiten a las condiciones de la CDN del proveedor. También incluye servicios antiguos. No apliques un plazo a todos los modelos actuales ni interpretes la falta de información como conservación ilimitada.
Al terminar, inicia una copia en segundo plano mediante un webhook o polling. Persiste el trabajo antes de confirmar el callback. La secuencia siguiente muestra estados de almacenamiento propios de tu aplicación, no estados de la API de tareas PiAPI.
generation completed → copy queued → downloading → verified → saved
↘ copy failed → retry copy3. Verifica los bytes antes de marcar el archivo como guardado
Descarga la URL del resultado sin reenviar la clave API de PiAPI. Restringe destinos, valida redirecciones y limita tamaño y tiempo. Comprueba estado HTTP, bytes reales, tipo multimedia esperado y legibilidad básica. Una página de error HTML con estado 200 no es un vídeo guardado.
Escribe un objeto temporal, calcula una suma de comprobación y publica el objeto final solo tras validarlo. Usa una clave estable basada en el identificador de tarea y el índice del recurso. Registra clave, bytes, suma y hora de guardado; ofrece tu propia URL controlada según tu política de acceso.
4. Reintenta el almacenamiento por separado
Si la copia falla, mantén la generación como completada y reintenta copiar mientras exista la fuente. Un registro único persistente evita entradas multimedia duplicadas. Si la URL deja de ser legible, consulta de nuevo la tarea y su salida actual; eso no garantiza recuperar un archivo caducado. Prueba eventos duplicados, descargas parciales y URL no disponibles antes de publicar.
Referencias: almacenamiento de salidas, consulta de tarea Kling y webhooks. Es un patrón de almacenamiento de la aplicación, no una promesa de archivo permanente por parte de PiAPI.


