PopNowDocs API
Costruire con l’API
Contenuto principale

Asset e file LoRA

Conserva i file nella tua libreria e riusali tramite URI, leggi i tuoi personaggi e porta i tuoi pesi LoRA.

I caricamenti e i risultati delle attività sono temporanei. Quando vuoi riusare un file in molte attività — una foto prodotto, il volto di un personaggio, un campione di voce —, salvalo nella tua libreria di asset. Se un modello accetta pesi di stile personalizzati, porta il tuo file LoRA.

La libreria di asset

Un asset salvato riceve un URI stabile, popnow://a/ast_…, che puoi inserire in qualsiasi campo media del tipo giusto di qualsiasi modello, finché lo conservi:

{ "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"] } }

L’URI è un riferimento, non un link di download: funziona solo nelle richieste di generazione fatte con le chiavi del tuo account. Gli asset restano finché non li elimini.

Salva un file

POST /api/v1/assets copia un file nella libreria. Scegli una fonte; l’header Idempotency-Key è obbligatorio e salvare di nuovo la stessa fonte restituisce l’asset già esistente.

sourceInvia ancheSalva
task_outputtaskId e la key o l’index del risultatoUn file prodotto da una tua attività riuscita
uploadfileIdUn caricamento confermato
urlurlUn file pubblico 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 risposta è l’asset: id, uri, name, kind (image, video o audio), dimensioni e peso, il model che l’ha generato e una previewUrl privata valida circa 20 minuti. Salva l’uri, mai il link di anteprima.

Elenca, rinomina ed elimina

ChiamataEffetto
GET /api/v1/assetsUna pagina di asset. Filtra con kind, source, favorite, q (ricerca per nome), collectionId, entityId; ordina con sort=recent|oldest|name|size; prosegui con cursor
GET /api/v1/assets/{id}Un asset con un nuovo link di anteprima
PATCH /api/v1/assets/{id}Modifica name e/o favorite
DELETE /api/v1/assets/{id}Lo elimina; il suo URI smette di funzionare nelle nuove richieste
GET /api/v1/assets/entitiesI tuoi personaggi: insiemi di immagini con un nome, organizzati sul sito, ogni immagine con il proprio URI
GET /api/v1/assets/usageIl tuo piano di archiviazione, quanto usi, i limiti e cosa sblocca il piano successivo

Piani di archiviazione

L’archiviazione si apre con il tuo primo acquisto di crediti e cresce con il totale acquistato nel tempo; non si riduce mai e gli asset salvati restano sempre utilizzabili. GET /api/v1/assets/usage mostra i numeri del tuo account.

Errori

Gli errori della libreria aggiungono un data.reason leggibile dalle macchine all’involucro consueto:

data.reasonHTTPSignificato
asset_library_locked400La libreria si apre dopo il tuo primo acquisto di crediti
asset_library_full400Spazio o numero di elementi del piano esauriti — elimina asset o passa al piano superiore
asset_file_too_large400Il file supera il limite per file del tuo piano
asset_daily_limit429Raggiunto il numero giornaliero di nuovi asset; attendi Retry-After (00:00 UTC)
asset_storage_full503L’archiviazione è temporaneamente piena da parte nostra; riprova più tardi

Tratta un motivo sconosciuto come se mancasse. La lettura è limitata a 60 richieste al minuto, il salvataggio a 30.

Porta la tua LoRA

I modelli il cui ID termina con -lora accettano un array loras: fino a tre file di pesi, ognuno con path e scale (da 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 può essere un link diretto pubblico a un file .safetensors oppure un file che hai caricato o importato:

  • Caricalo come qualsiasi altro file con contentType: application/octet-stream (un file .safetensors fino a 2 GiB; il ticket vale due ore). La conferma verifica che sia un file safetensors completo.
  • Importalo da un link quando il file richiede l’accesso, per esempio in un repository privato di 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 accetta un ID di repository Hugging Face (owner/repo, se contiene esattamente un file .safetensors), una pagina di repository o di file di Hugging Face, o qualsiasi link diretto HTTPS. token è facoltativo — un token di accesso Hugging Face o una chiave API di Civitai — e viene usato solo per questo download, senza essere mai salvato. La risposta ha la stessa forma di una conferma: inserisci il suo uri in loras[].path.

Una LoRA deve corrispondere al modello base per cui è stata addestrata; pesi pensati per un’altra base di solito falliscono o non hanno effetto. Spetta a te avere il diritto di usare i pesi che porti.

In questa pagina