PopNowDokumentacja API
Budowanie z API
Treść główna

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.

sourceWyślij teżCo zostaje zapisane
task_outputtaskId oraz key albo index wynikuPlik utworzony przez jedno z twoich udanych zadań
uploadfileIdZatwierdzony przesłany plik
urlurlPubliczny 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łanieDziałanie
GET /api/v1/assetsStrona 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/entitiesTwoje postacie: nazwane zestawy obrazów ułożone na stronie, każdy obraz z własnym URI
GET /api/v1/assets/usageTwó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.reasonHTTPZnaczenie
asset_library_locked400Biblioteka otwiera się po pierwszym zakupie kredytów
asset_library_full400Wyczerpano miejsce lub liczbę elementów planu — usuń zasoby albo przejdź na wyższy plan
asset_file_too_large400Plik przekracza limit na plik w twoim planie
asset_daily_limit429Osiągnięto dzienną liczbę nowych zasobów; poczekaj do Retry-After (00:00 UTC)
asset_storage_full503Nasz 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 .safetensors do 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.

Na tej stronie