PopNowAPI ドキュメント
API で作る
本文

アセットと LoRA ファイル

ファイルをアセットライブラリに保存して URI で使い回す方法、キャラクターの読み取り、自前の LoRA 重みの持ち込み。

アップロードしたファイルやタスクの結果は一時的なものです。商品写真、キャラクターの顔、声のサンプルなど、多くのタスクで同じファイルを使い回したいときはアセットライブラリに保存しましょう。カスタムのスタイル重みを受け付けるモデルには、自前の LoRA ファイルを持ち込めます。

アセットライブラリ

保存したアセットには popnow://a/ast_… という固定の URI が付きます。アセットを残している限り、どのモデルでも対応する種類のメディアフィールドに入れられます。

{ "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 は参照であってダウンロードリンクではありません。使えるのは、自分のアカウントのキーで送る生成リクエストの中だけです。アセットは削除するまで残ります。

ファイルを保存する

POST /api/v1/assets でファイルをライブラリにコピーします。取得元を 1 つ選び、Idempotency-Key ヘッダーは必須です。同じ取得元をもう一度保存すると、既存のアセットが返ります。

sourceあわせて送るもの保存されるもの
task_outputtaskId と、出力の key または index成功した自分のタスクが作ったファイル
uploadfileIdコミット済みのアップロード
urlurl公開された 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\"}"

レスポンスはアセットそのものです。id、uri、name、kind(image、video、audio)、サイズと寸法、生成した model、約 20 分有効な非公開の previewUrl が入っています。保存するのは uri で、プレビューのリンクではありません。

一覧・名前変更・削除

呼び出し内容
GET /api/v1/assetsアセットを 1 ページ分。kind、source、favorite、q(名前検索)、collectionId、entityId で絞り込み、sort=recent|oldest|name|size で並べ替え、cursor で続きを取得
GET /api/v1/assets/{id}1 件のアセットと新しいプレビューのリンク
PATCH /api/v1/assets/{id}name や favorite を変更
DELETE /api/v1/assets/{id}削除。以後の新しいリクエストでは URI が使えなくなります
GET /api/v1/assets/entitiesキャラクター。Web サイトで並べた名前付きの画像セットで、画像ごとに URI があります
GET /api/v1/assets/usage保存プラン、使用量、上限、次のプランで増える分

保存プラン

ストレージは最初のクレジット購入で使えるようになり、これまでの購入額に応じて増えていきます。減ることはなく、保存したアセットはいつでも使えます。実際の数値は GET /api/v1/assets/usage で確認できます。

エラー

アセットライブラリのエラーには、通常の外枠に機械可読な data.reason が加わります。

data.reasonHTTP意味
asset_library_locked400ライブラリは最初のクレジット購入後に開きます
asset_library_full400プランの容量か件数を使い切った。アセットを削除するかプランを上げる
asset_file_too_large400ファイルがプランの 1 ファイル上限を超えている
asset_daily_limit429今日の新規アセット数が上限に達した。Retry-After(UTC 00:00)まで待つ
asset_storage_full503こちらのストレージが一時的にいっぱい。あとで再試行

知らない reason は、reason がないものとして扱ってください。ライブラリの読み取りは 1 分 60 回、保存は 1 分 30 回までです。

自前の LoRA を使う

ID が -lora で終わるモデルは loras 配列を受け付けます。重みファイルは 3 つまでで、それぞれ path と scale(0〜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 には .safetensors ファイルの公開直リンクか、アップロード・インポートしたファイルを指定します。

  • アップロード:ほかのファイルと同じく contentType: application/octet-stream でアップロードします(.safetensors ファイル、最大 2 GiB。チケットは 2 時間有効)。コミット時に完全な safetensors ファイルかを確認します。
  • リンクからインポート:非公開の 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 には Hugging Face のリポジトリ ID(owner/repo。.safetensors ファイルがちょうど 1 つの場合)、Hugging Face のリポジトリページやファイルページ、任意の HTTPS 直リンクを指定できます。token は任意で、Hugging Face のアクセストークンか Civitai の API キーです。このダウンロード 1 回だけに使い、保存はしません。レスポンスはコミットと同じ形なので、uri を loras[].path に入れてください。

LoRA は学習元のベースモデルと合っている必要があります。別のベース用の重みはたいてい失敗するか、効果がありません。持ち込む重みを使う権利があることは、ご自身で確認してください。

このページの内容