Zasoby i pliki LoRA
Przechowuj pliki w bibliotece i używaj ich ponownie przez URI, odczytuj swoje postacie i korzystaj z własnych wag LoRA.
Przesłane pliki i wyniki zadań są tymczasowe. Jeśli chcesz używać jednego pliku w wielu zadaniach — zdjęcia produktu, twarzy postaci, próbki głosu — zapisz go w bibliotece zasobów. Gdy model przyjmuje własne wagi stylu, dodaj swój plik LoRA.
Biblioteka zasobów
Zapisany zasób dostaje stały URI popnow://a/ast_…, który możesz wstawić w dowolne pole mediów odpowiedniego typu w dowolnym modelu, dopóki zasób istnieje:
{ "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"] } }URI to odwołanie, a nie link do pobrania: działa tylko w zapytaniach generowania wysyłanych kluczami twojego konta. Zasoby zostają, dopóki ich nie usuniesz.
Zapisz plik
POST /api/v1/assets kopiuje plik do biblioteki. Wybierz jedno źródło; nagłówek Idempotency-Key jest wymagany, a ponowne zapisanie tego samego źródła zwraca istniejący zasób.
source | Wyślij też | Co zostaje zapisane |
|---|---|---|
task_output | taskId oraz key albo index wyniku | Plik utworzony przez jedno z twoich udanych zadań |
upload | fileId | Zatwierdzony przesłany plik |
url | url | Publiczny plik 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\"}"Odpowiedzią jest sam zasób: id, uri, name, kind (image, video lub audio), rozmiar i wymiary, model, który go utworzył, oraz prywatny previewUrl ważny około 20 minut. Zapisuj uri, nigdy link podglądu.
Lista, zmiana nazwy i usuwanie
| Wywołanie | Działanie |
|---|---|
GET /api/v1/assets | Strona zasobów. Filtry kind, source, favorite, q (wyszukiwanie po nazwie), collectionId, entityId; sortowanie sort=recent|oldest|name|size; dalsze strony przez cursor |
GET /api/v1/assets/{id} | Jeden zasób z nowym linkiem podglądu |
PATCH /api/v1/assets/{id} | Zmiana name i/lub favorite |
DELETE /api/v1/assets/{id} | Usunięcie; URI przestaje działać w nowych zapytaniach |
GET /api/v1/assets/entities | Twoje postacie: nazwane zestawy obrazów ułożone na stronie, każdy obraz z własnym URI |
GET /api/v1/assets/usage | Twój plan przechowywania, zużycie, limity i to, co odblokuje następny plan |
Plany przechowywania
Przechowywanie otwiera się po pierwszym zakupie kredytów i rośnie razem z tym, co kupiłeś w sumie; nigdy się nie zmniejsza, a zapisane zasoby zawsze da się używać. GET /api/v1/assets/usage pokazuje liczby dla twojego konta.
Błędy
Błędy biblioteki dodają do zwykłej koperty maszynowo czytelne pole data.reason:
data.reason | HTTP | Znaczenie |
|---|---|---|
asset_library_locked | 400 | Biblioteka otwiera się po pierwszym zakupie kredytów |
asset_library_full | 400 | Wyczerpano miejsce lub liczbę elementów planu — usuń zasoby albo przejdź na wyższy plan |
asset_file_too_large | 400 | Plik przekracza limit na plik w twoim planie |
asset_daily_limit | 429 | Osiągnięto dzienną liczbę nowych zasobów; poczekaj do Retry-After (00:00 UTC) |
asset_storage_full | 503 | Nasz magazyn jest chwilowo pełny; spróbuj później |
Nieznany powód traktuj tak, jakby go nie było. Odczyt biblioteki ma limit 60 zapytań na minutę, a zapis 30 na minutę.
Własna LoRA
Modele, których ID kończy się na -lora, przyjmują tablicę loras — do trzech plików wag, każdy z path i scale (od 0 do 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 może być publicznym bezpośrednim linkiem do pliku .safetensors albo plikiem, który przesłałeś lub zaimportowałeś:
- Prześlij go jak każdy inny plik z
contentType: application/octet-stream(plik.safetensorsdo 2 GiB; bilet jest ważny dwie godziny). Zatwierdzenie sprawdza, czy to kompletny plik safetensors. - Zaimportuj z linku, gdy pobranie wymaga logowania, np. z prywatnego repozytorium 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 przyjmuje ID repozytorium Hugging Face (owner/repo, jeśli zawiera dokładnie jeden plik .safetensors), stronę repozytorium lub pliku na Hugging Face albo dowolny bezpośredni link HTTPS. token jest opcjonalny — to token dostępu Hugging Face lub klucz API Civitai — używany tylko do tego jednego pobrania i nigdy nie zapisywany. Odpowiedź ma taką samą postać jak zatwierdzenie: wstaw jej uri w loras[].path.
LoRA musi pasować do modelu bazowego, dla którego ją wytrenowano; wagi dla innej bazy zwykle zawodzą albo nic nie zmieniają. To ty odpowiadasz za prawo do używania wag, które dodajesz.

