PopNowDocs de la API
Construir con la API
Contenido principal

Recursos y archivos LoRA

Guarda archivos en tu biblioteca y reutilízalos por URI, lee tus personajes y trae tus propios pesos LoRA.

Las subidas y los resultados de las tareas son temporales. Cuando quieras reutilizar un archivo en muchas tareas —una foto de producto, la cara de un personaje, una muestra de voz—, guárdalo en tu biblioteca de recursos. Si un modelo acepta pesos de estilo personalizados, trae tu propio archivo LoRA.

La biblioteca de recursos

Un recurso guardado recibe un URI estable, popnow://a/ast_…, que puedes poner en cualquier campo de medios del tipo adecuado de cualquier modelo mientras lo conserves:

{ "model": "google/nano-banana-2.1/edit",
  "input": { "prompt": "Put this mug on a wooden café table, morning light",
             "image_urls": ["popnow://a/ast_01k3m8x9q2z4v7n5p6r8s0t1w3"] } }

El URI es una referencia, no un enlace de descarga: solo funciona en solicitudes de generación hechas con claves de tu cuenta. Los recursos se quedan hasta que los borres.

Guarda un archivo

POST /api/v1/assets copia un archivo a la biblioteca. Elige una fuente; la cabecera Idempotency-Key es obligatoria y guardar otra vez la misma fuente devuelve el recurso existente.

sourceEnvía tambiénGuarda
task_outputtaskId y la key o el index del resultadoUn archivo que produjo una de tus tareas correctas
uploadfileIdUna subida confirmada
urlurlUn archivo público http/https (JPEG, PNG, WebP, GIF, MP4, WebM, MP3, WAV, FLAC, Ogg)
curl -X POST "https://api.popnow.ai/api/v1/assets" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: save-$TASK_ID-0" \
  -d "{\"source\": \"task_output\", \"taskId\": \"$TASK_ID\", \"index\": 0, \"name\": \"Hero shot\"}"

La respuesta es el recurso: id, uri, name, kind (image, video o audio), tamaño y dimensiones, el model que lo generó y una previewUrl privada válida unos 20 minutos. Guarda el uri, nunca el enlace de vista previa.

Lista, renombra y borra

LlamadaQué hace
GET /api/v1/assetsUna página de recursos. Filtra con kind, source, favorite, q (búsqueda por nombre), collectionId, entityId; ordena con sort=recent|oldest|name|size; continúa con cursor
GET /api/v1/assets/{id}Un recurso con un enlace de vista previa nuevo
PATCH /api/v1/assets/{id}Cambia name y/o favorite
DELETE /api/v1/assets/{id}Lo borra; su URI deja de funcionar en solicitudes nuevas
GET /api/v1/assets/entitiesTus personajes: conjuntos de imágenes con nombre, ordenados en la web, cada imagen con su propio URI
GET /api/v1/assets/usageTu plan de almacenamiento, lo que usas, sus límites y lo que desbloquea el siguiente plan

Planes de almacenamiento

El almacenamiento se abre con tu primera compra de créditos y crece con lo que hayas comprado con el tiempo; nunca se reduce y los recursos guardados siempre se pueden usar. GET /api/v1/assets/usage te muestra las cifras de tu cuenta.

Errores

Los errores de la biblioteca añaden un data.reason legible por máquina al sobre habitual:

data.reasonHTTPSignificado
asset_library_locked400La biblioteca se abre tras tu primera compra de créditos
asset_library_full400Se agotó el espacio o el número de elementos de tu plan: borra recursos o sube de plan
asset_file_too_large400El archivo supera el límite por archivo de tu plan
asset_daily_limit429Se alcanzó el número diario de recursos nuevos; espera a Retry-After (00:00 UTC)
asset_storage_full503Nuestro almacenamiento está lleno temporalmente; inténtalo más tarde

Trata un motivo que no reconozcas como si no hubiera motivo. La lectura está limitada a 60 solicitudes por minuto y el guardado a 30 por minuto.

Trae tu propio LoRA

Los modelos cuyo ID termina en -lora aceptan un array loras: hasta tres archivos de pesos, cada uno con path y scale (de 0 a 4):

{ "model": "alibaba/qwen-image-2.1-lora/text-to-image",
  "input": { "prompt": "A cozy reading nook in watercolor style",
             "loras": [{ "path": "popnow://f/fil_01k3m8x9q2z4v7n5p6r8s0t1w3", "scale": 1 }] } }

path puede ser un enlace directo público a un archivo .safetensors, o un archivo que subiste o importaste:

  • Súbelo como cualquier otro archivo con contentType: application/octet-stream (un archivo .safetensors de hasta 2 GiB; el ticket dura dos horas). La confirmación comprueba que sea un archivo safetensors completo.
  • Impórtalo desde un enlace cuando el archivo requiera iniciar sesión, por ejemplo en un repositorio privado de Hugging Face:
curl -X POST "https://api.popnow.ai/api/v1/files/import" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "your-name/your-lora-repo", "token": "hf_..."}'

url acepta un ID de repositorio de Hugging Face (owner/repo, si contiene exactamente un archivo .safetensors), una página de repositorio o de archivo de Hugging Face, o cualquier enlace directo HTTPS. token es opcional —un token de acceso de Hugging Face o una clave de API de Civitai— y solo se usa para esta descarga; nunca se guarda. La respuesta tiene la misma forma que una confirmación: pon su uri en loras[].path.

Un LoRA tiene que corresponder al modelo base para el que se entrenó; los pesos de otra base suelen fallar o no hacer nada. Eres responsable de tener derecho a usar los pesos que traes.

En esta página