Muse API で Meta Muse の AI 画像とセリフ付き動画を生成する方法(日本語チュートリアル)
12分で読めます • 2026年10月30日
useapi.net はサードパーティの API です。Meta とは提携しておらず、Meta の承認も受けていません。
目次
はじめに
useapi.net の Muse API を使うと、Meta のパーソナル AI エージェント Muse(muse.ai)で、POST リクエスト1回ごとに AI 画像1枚、またはセリフ付きの10秒の動画1本をコードから生成できます。生成したファイルにはすべてアセット ID が付き、そのまま次のジョブの入力に使えます。
ここでいう Muse は、muse.ai で提供されている Meta のエージェントです。2026年3月まで muse.ai の名前を使っていた動画ホスティング企業 Skiv のことではありません。この API はホスト型なので、muse2api のようなセルフホスト型のツールと違って、デプロイするものは何もありません。Meta 公式の API、muse2api、ホスト型 API の比較は Meta Muse 動画 API の比較記事(英語)にまとめています。
API は、muse.ai で契約している Muse のプランをそのまま使って動き、無料プランでも使えます。この記事では、ヴィンテージの BMW のバイク、赤い髪のライダー、ゴールデンゲートブリッジの下のビーチという、ごく普通の3枚の写真から始めて、彼女がそのバイクで波しぶきを上げて走る1枚の画像に合成します。次にその画像を動画にして、彼女にセリフを叫ばせます。3つ目のジョブでは、別の写真に写っている女性が動画の中で彼女と入れ替わり、走りの映像はそのまま残ります。途中で、テキストからの画像生成と、100年前の肖像写真を復元・カラー化して写真の人物が顔を上げて話し出す動画も作ります。最後に、日本語のセリフを話させる例も載せています。以下のリクエストは、このページの画像や動画を実際に生成したときのものです。
Muse が静止画から作った動画のライダーを、別の写真の女性に差し替えたもの(ステップ 8)。
この記事は useapi.net の運営者が、自社のホスト型 API について書いたものです。
利用枠の消費量
useapi.net は API であり、それ自体が画像や動画のサービスではありません。すべての呼び出しは Setup Muse で追加した Muse アカウント上で実行され、そのアカウントの Muse の週間利用枠を使います。useapi.net が画像や動画ごとに料金を取ることはありません。Muse は使用量を整数のパーセントで返すため、画像1枚では変化が見えないこともよくあります。
次の表は、無料プランで各ステップが消費した利用枠(前後の percentUsed の差)と、各ジョブの所要時間です。
| ステップ | エンドポイント | 出力 | 消費した利用枠 | 所要時間 |
|---|---|---|---|---|
| テキストから画像、9:16 | POST /jobs/image | 1152×2048 | 未計測 | 30秒 |
| テキストから画像、正確に 16:9 | POST /jobs/image | 2048×1152 | 0% | 21秒 |
| ライダー + バイク + ビーチ | POST /jobs/image | 2048×1152 | 0% | 31秒 |
| 画像を動画にする | POST /jobs/video | 1280×720、10秒 | 3% | 88秒 |
| 古い写真の復元 | POST /jobs/image | 1344×1792 | 1% | 34秒 |
| 肖像写真が話し出す | POST /jobs/video | 832×1104、10秒 | 2% | 68秒 |
| 動画の人物差し替え | POST /jobs/video | 1248×704、10秒 | 3% | 138秒 |
| 日本語のセリフ | POST /jobs/video | 1280×720、10秒 | 未計測 | 61秒 |
アップロードは利用枠を消費しません。無料プランでは、動画1本で週間利用枠の2〜3%、画像1枚で0〜1%を消費したので、無料アカウント1つで週に約30〜50本の動画、または数百枚の画像を作れる計算です(ステップ 9)。
API を使い始める
月額15ドルのサブスクリプション1つで、useapi.net のすべての API を使えます。トークン1つで、すべてのサービスに対応します。各サービスにご自身のアカウントを最大3つまで接続でき、REST API、負荷分散、ポーリングは useapi.net が担当します。アカウントを増やしたい場合は、サブスクリプションを1つ追加するごとに月額10ドルで、各サービスのアカウントが3つずつ増えます。
海外で使えるクレジットカードがない場合は、暗号資産で登録することもできます(暗号資産での支払いは返金できません)。料金とボリュームプランはサブスクリプションのページをご覧ください。Stripe でお支払いの場合、初回購入から14日以内で、成功した生成が50回未満であれば全額返金されます。すでに登録済みの場合は、新たに購入せず Stripe カスタマーポータルで数量を変更してください。
始める前に
必要なのは、useapi.net の API トークンと、Setup Muse で追加した Muse アカウントです。アカウントを追加する前に、次の点を確認してください。
- Muse は2026年10月23日に日本で提供が始まりました。日本で作ったアカウントは、そのまま追加できます。2026年10月時点で Muse を使えるのは米国、カナダ、日本、シンガポールなので、アカウントはこのいずれかの国で作成してください。追加したあとは、どこからでも API を呼び出せます。
- プランは Free(利用上限あり)、Power(月額20ドル)、Maximum(月額100ドル)の3つです(2026年10月時点)。Meta のヘルプページではドル建てで表示されており、特典や提供状況は地域によって異なる場合があると Meta は説明しています。
- muse.ai で Muse の初期設定(Meta の年齢確認を含む)を済ませ、画像を1枚作成しておいてください。
- API はメールアドレスとパスワードでログインするため、アカウントにパスワードが設定されている必要があります。メールで届くコードだけでログインしている Meta アカウントにはパスワードがないので、Meta アカウントセンター(パスワードとセキュリティ)で作成してから追加してください。パスワードがないと、追加は
400で拒否されます。 - アカウントは API 専用にして、ほかの自動化ツールでは使わないでください。ブラウザで muse.ai を開くのは問題ありませんが、上記の提供地域から(またはそのいずれかの国の VPN 経由で)開いてください。それ以外の地域から使われたと判断されると、Meta がそのアカウントの動画生成を停止することがあります。
この記事の手順は、Node.js と Python のスクリプトとして GitHub の useapi/muse-api リポジトリの images-videos/ にもまとめてあります。Claude Code と Codex 向けのエージェントスキル(Agent Skill)もあります。すべてのリクエストは Postman コレクションにも入っています。
以下の手順では curl、jq と、次の変数・ヘルパー関数を使います。
変数とヘルパー関数を表示
export USEAPI_TOKEN="user:12345-..."
export EMAIL="[email protected]"
export MUSE_PASSWORD="..." # the Muse account password, used once in step 1
API=https://api.useapi.net/v1/muse
AUTH="Authorization: Bearer $USEAPI_TOKEN"
enc() { jq -rn --arg v "$1" '$v|@uri'; }
post() { curl -sS -X POST "$API/$1" -H "$AUTH" -H "Content-Type: application/json" -d "$2"; }
get() { curl -sS "$API/$1" -H "$AUTH"; }
upload() { curl -sS -X POST "$API/assets?email=$(enc "$EMAIL")" -H "$AUTH" -H "Content-Type: $2" --data-binary @"$1" | jq -r .assetId; }
download() { curl -sSf "$API/assets/$(enc "$1")" -H "$AUTH" -o "$2"; }
# run a job async: submit it, poll GET /jobs/{jobid} every 10 s, save the final job record to $1
run() {
local job id
job=$(post "$2" "$(jq '. + {async: true}' <<< "$3")")
id=$(jq -r .jobid <<< "$job")
while [ "$(jq -r .status <<< "$job")" = started ]; do
sleep 10
job=$(get "jobs/$(enc "$id")")
done
echo "$job" > "$1"
jq '{status, error, text: .result.text, asset: .result.assets[0].assetId}' "$1"
}
生成はすべてジョブとして実行されます。async を指定しない場合、POST はジョブの完了を最大約100秒待ち、完了すればジョブレコードを返します。それまでに終わらなければ 202 が返りますが、ジョブはサーバー側で実行を続けるので、GET /jobs/jobid で結果を取得できます。この記事の動画は1本あたり61〜138秒かかったので、run はすべてのジョブを async: true で送り、GET /jobs/jobid をポーリングします。run が completed 以外の status を表示したら、先に進む前に error を確認してください。
ポーリングの代わりに Webhook で完了通知を受け取りたい場合は、以下のどのリクエストボディにも replyUrl: "https://example.com/hooks/muse"(ジョブレコードにそのまま返される任意の識別子 replyRef も指定可能)を追加できます。ジョブが終わると、API は最終的なジョブレコードを JSON でその URL に1回 POST します。
各種 ID には : や @ が含まれるため、URL のパスに入れるときは enc でエンコードします。1つのジョブの入力はすべて同じ Muse アカウント上にある必要があるため、アップロードでは email を指定しています。ジョブは入力を持っているアカウントで実行されます。
実際の手順
プロンプトは Muse にそのまま送るものなので、英語のまま載せています。
1. アカウントを追加する
POST /accounts は Muse アカウントのメールアドレスとパスワードを受け取ります。API は一度だけログインして30日間のセッションを保存し、自動で更新します。API がログインするたび(追加時とセッション更新時)に Muse からログインコードのメールが届きますが、コードを入力する必要はありません。
curl — POST /accounts
post accounts "$(jq -n --arg email "$EMAIL" --arg password "$MUSE_PASSWORD" '{email: $email, password: $password}')" | jq '{health, maxJobs, quota}'
レスポンスには health: "OK"、maxJobs(このアカウントで同時に実行できるジョブ数。デフォルトは10、1〜50で設定可能)、アカウントのプランと使用量が含まれます。ここでは tier: "HATCH_FREE"、つまり無料プランです。代わりに 596 が返った場合は、Meta がセキュリティチェックを求めています。ブラウザで一度 muse.ai にログインしてチェックを済ませ、同じメールアドレスとパスワードをもう一度送ってください。
2. 写真をアップロードする
POST /assets は、ファイルのバイナリをそのままリクエストボディとして受け取ります(multipart ではありません)。1ファイルの上限は50 MB です(アップロードは毎秒約1 MB なので、50 MB なら約1分かかります)。ファイルはアカウントの Muse ワークスペースに書き込まれ、useapi.net には何も保存されません。レスポンスの assetId(アセット ID)が、ジョブの image_N に渡す値です。
curl — POST /assets
BMW=$(upload bmw.jpeg image/jpeg)
RIDER=$(upload rider.jpeg image/jpeg)
BEACH=$(upload beach.jpeg image/jpeg)
OLD_PHOTO=$(upload old-photo.jpeg image/jpeg)
PINK=$(upload pink-hair.jpeg image/jpeg)
echo "$BMW"
# user:12345-email:6578616d706c6540676d61696c2e636f6d-image:7db53e7a1f0979cbab6ff46ec3f0a35b60e6ee579a0d738a9628cf46a0c7a0f5.jpg
5枚の入力画像:バイク、ライダー、ビーチ、古い肖像写真、2人目のライダー。
アセット ID はファイルの内容から作られます。そのため、同じファイルを同じアカウントにもう一度アップロードすると同じ ID が返り、何も書き込まれません。
3. テキストから画像を生成する
Muse にはアスペクト比のパラメーターがないので、比率はプロンプトに書きます。まずは縦長のポートレートです。
curl — POST /jobs/image
run portrait.json jobs/image "$(jq -n '{prompt: "Vertical 9:16 full-body portrait photo: a confident young woman biker with long wavy fiery red hair, green eyes and freckles, in a worn black leather jacket, dark jeans and boots, standing in a rain-soaked neon alley at dusk, looking straight at the camera, cinematic lighting, photorealistic."}')"
download "$(jq -r '.result.assets[0].assetId' portrait.json)" portrait.webp

結果はちょうど 9:16 の 1152×2048 でした。一方、横長版を Cinematic 16:9 landscape photo: … と指定すると、1920×1280、つまり 3:2 になりました。in exactly 16:9 aspect ratio と書き直すと、指定どおりの比率になりました。
curl — POST /jobs/image
run bmw-noir.json jobs/image "$(jq -n '{prompt: "In exactly 16:9 aspect ratio (landscape), a cinematic photo of a vintage 1920s black BMW motorcycle with white pinstripes, spoked wheels and a brown leather saddle, parked on wet cobblestones at night in San Francisco, the Golden Gate Bridge glowing through fog in the distance, neo-noir moonlight, reflections on the wet street, shot on 35mm film."}')"
download "$(jq -r '.result.assets[0].assetId' bmw-noir.json)" bmw-noir.webp

Muse からの返答は「That 16:9 frame with the bridge ghosting through the fog is pure neo-noir. Enjoy.」で、result.text に入っています。
4. 3枚の写真を1枚に合成する
1つのジョブには image_1〜image_9 として最大9枚の画像を渡せます。プロンプトでは、この名前で各画像を参照します。ここではバイクが image_1、ライダーが image_2、ビーチが image_3 です。写真のビーチをそのまま使うようプロンプトで指示しているので、ゴールデンゲートブリッジは写真と同じ位置に残ります。
curl — POST /jobs/image
run beach-ride.json jobs/image "$(jq -n --arg bmw "$BMW" --arg rider "$RIDER" --arg beach "$BEACH" \
'{image_1: $bmw, image_2: $rider, image_3: $beach,
prompt: "In exactly 16:9 aspect ratio (landscape), a cinematic photo: the woman from image_2 (her face, long wavy red hair, light blue top and jeans) riding the exact vintage motorcycle from image_1 along the shoreline of the beach in image_3, the front wheel cutting through the shallow surf and throwing spray, bright afternoon sun, her hair streaming in the wind, photorealistic. Use the beach, rocks and Golden Gate Bridge from image_3 as the background exactly as photographed: same position, same orientation, not mirrored or redrawn. Keep her face and the motorcycle'\''s design exactly as in the images."}')"
BEACH_RIDE=$(jq -r '.result.assets[0].assetId' beach-ride.json)
download "$BEACH_RIDE" beach-ride.webp

31秒で完了し、週間利用枠に目に見える変化はありませんでした。
5. 画像を動画にする(再アップロード不要)
BEACH_RIDE は Muse が作ったファイルのアセット ID です。すでにアカウントのワークスペースにあるので、ダウンロードもアップロードもせずに、そのまま次のジョブの image_1 として渡せます。Animate image_1 と書くと、その画像を起点に縦横比を保った動画ができ、引用符で囲んだセリフを登場人物が話します。
curl — POST /jobs/video
run surf.json jobs/video "$(jq -n --arg img "$BEACH_RIDE" '{image_1: $img,
prompt: "Animate image_1 into a cinematic video in exactly 16:9 aspect ratio (landscape): she rides the vintage motorcycle along the shoreline, the front wheel slices through the shallow waves and sends spray flying, the old engine roars, she raises one fist and shouts with a laugh: \"Nothing beats this view!\" The camera tracks alongside her. The beach, the rocks and the Golden Gate Bridge stay exactly as in image_1 (same orientation). Keep her face and the motorcycle exactly as in image_1."}')"
SURF=$(jq -r '.result.assets[0].assetId' surf.json)
download "$SURF" surf.mp4
YouTube でも公開しています:3 photos in, 1 talking video out: Meta Muse API from REST(英語)。
10秒、1280×720、音声付きの動画になりました。Muse からの返答は「Done. 10 seconds, 16:9 landscape, straight from your image — no edits, no upscaling.」でした。
このジョブは最初の実行で37秒後に失敗し、Muse は「the video worker glitched out before it rendered anything, so no clip was made」と返答しました。API はこのような返答を 503(何も生成されていない)として返します。同じリクエストを再実行すると成功しました。内容を理由に拒否された場合は 403 が返るので、プロンプトを変える必要があります。
6. 古い写真を復元してカラー化する
画像ジョブは画像の修復もできます。この古い肖像写真は、色あせたセピア調の 685×900 ピクセル、3:4 の写真です。プロンプトでは直す内容を挙げ、同じ構図を保つよう念を押しています。
curl — POST /jobs/image
run restored.json jobs/image "$(jq -n --arg img "$OLD_PHOTO" '{image_1: $img,
prompt: "Restore the old photograph image_1 as a high-quality modern photo: remove the scratches, dust, stains, fading and grain, recover sharp detail in the face, hair and fabric, and colorize it naturally (warm natural skin tones, dark brown hair, ivory tulle shawl, a soft pink rose with green leaves, a muted warm background). Keep the exact same person, expression, pose, framing and crop, and the same portrait aspect ratio as image_1 (3:4, 685×900): do not crop, extend or reframe it."}')"
RESTORED=$(jq -r '.result.assets[0].assetId' restored.json)
download "$RESTORED" restored.webp
結果は 1344×1792 で、同じ 3:4 の構図のまま解像度は縦横それぞれ約2倍になり、ポーズもトリミングも変わっていません。Muse からの返答は「Done — restored, de-grained, and colorized, same framing and pose.」でした。
7. 古い写真の人物が話し出す
復元した画像を、そのまま動画ジョブに渡します。動画は肖像写真の縦横比を保つので、832×1104 で返ってきました。
curl — POST /jobs/video
run portrait-video.json jobs/video "$(jq -n --arg img "$RESTORED" '{image_1: $img,
prompt: "Animate image_1 into a video with the same portrait frame: the young woman slowly lifts her eyes to the camera, her smile widens, she gently touches the rose on her shoulder and says softly: \"It has been a hundred years... and you still remember me.\" A light breeze moves a few strands of her hair, soft window light, the camera stays still with a very slow push-in. Keep her face exactly as in image_1."}')"
download "$(jq -r '.result.assets[0].assetId' portrait-video.json)" portrait.mp4
YouTube でも公開しています:This old portrait just spoke: one API call (Meta Muse API, third-party)(英語)。
8. 動画の人物を差し替える
動画ジョブは動画も入力として受け取ります。video_1 はステップ 5 で作ったビーチの走行動画、image_1 はピンクの髪を2つのお団子にした2人目の女性の写真です。プロンプトでは、ライダーを入れ替えてそれ以外はすべてそのままにするよう Muse に指示し、新しいセリフも指定しています。
curl — POST /jobs/video
run swap.json jobs/video "$(jq -n --arg vid "$SURF" --arg img "$PINK" '{video_1: $vid, image_1: $img,
prompt: "Edit video_1: replace the rider with the woman from image_1 (her face, pink hair in two buns, colorful makeup and tattoos), and keep everything else the same: the motorcycle, the beach, the waves and spray, the Golden Gate Bridge, the light, the camera move and the timing. Instead of the original line she shouts: \"Catch me if you can, San Francisco!\" Keep the 16:9 frame and the same length."}')"
download "$(jq -r '.result.assets[0].assetId' swap.json)" swap.mp4
このジョブは138秒かかり、今回の手順の中で最も時間がかかりました。この記事のジョブをすべて非同期で実行しているのはそのためです。できあがった動画は、走りの映像はそのままに、バイクに乗っているのが別の女性に替わり、新しいセリフを叫んでいます。Muse からの返答は「Done. She’s in, 10 seconds, 16:9, same ride, same bridge, same waves.」でした。
YouTube でも公開しています:Replace the person in a video, keep everything else: Meta Muse API(英語)。
9. 週間利用枠を確認する
GET /accounts/email は、アカウントのプランと使用量をその時点の値で取得します。
curl — GET /accounts/email
get "accounts/$(enc "$EMAIL")" | jq '{session, quota}'
quota.percentUsed はその週に消費した利用枠の割合(整数のパーセント)、quota.resetsAt は利用枠がリセットされる日時で、期間の開始から1週間後です。上の3本の動画はそれぞれ2〜3%、画像はそれぞれ0%か1%を消費しました。テスト全体では(ここに載せていない2つのジョブも含めて)、この無料アカウントの使用量は16%から28%になりました。email を指定していない新しいジョブは登録済みのほかのアカウントに振り分けられます。そのアカウントを指定したジョブや、すべてのアカウントが上限に達しているときのジョブには、resetsAt まで 412 が返ります。
日本語でセリフを話させる
Muse は日本語のセリフも話せます。2026年10月30日に、次のプロンプトで試しました。リクエストの形はステップ 5 や 7 と同じですが、入力画像は渡さず、テキストだけから動画を生成しています。
curl — POST /jobs/video
run tokyo.json jobs/video "$(jq -n '{prompt: "A young woman stands on a quiet Tokyo side street at dusk, paper lanterns glowing behind her. She smiles at the camera and says in natural Japanese: \"東京からこんにちは。この動画は、Muse API へのリクエスト一つで作りました。\" In exactly 16:9 aspect ratio."}')"
download "$(jq -r '.result.assets[0].assetId' tokyo.json)" tokyo.mp4
結果は 1280×720、10秒、音声付きの動画で、ジョブは61秒で完了しました。音声を文字起こししたところ、プロンプトに書いたとおりのセリフが日本語で話されていました。背景の看板にも「居酒屋」と日本語で描かれています。このジョブで消費した利用枠は計測していません。
コツは、日本語のセリフを引用符で囲んでプロンプトに入れ、in natural Japanese と書き添えることです。Muse は引用符で囲んだセリフをそのまま話します。
わかったこと
- アスペクト比は
in exactly 16:9 aspect ratioと書きます。Cinematic 16:9 landscape photoでは一度 3:2 で返ってきました。 - 動画はどれも約10秒です。プロンプトで5秒と指定しても10秒でした。
- 画像から作る動画は、プロンプトで別の比率を指定しない限り、元の画像の縦横比を保ちます。
in exactly 9:16 aspect ratioと書くと、16:9 のビーチの画像が 720×1280 の縦長動画になりました。引き伸ばしではなく、構図を作り直しています。 - 動画のプロンプトで引用符で囲んだセリフは、登場人物がそのまま話します。
- 生成したファイルは
assetId(アセット ID)で次のジョブに渡します。ファイルはアカウントのワークスペースに残るので、編集を続ける途中でダウンロードする必要はありません。 - 変えてはいけない部分を明記します。「Same position, same orientation, not mirrored or redrawn」と書いたことで、合成画像に写真のビーチがそのまま残りました。
- Muse 自身の言葉(「glitched out」など)を含む
503は、再実行すれば成功することがあります。403は拒否なので、プロンプトを変える必要があります。 - 動画ジョブは
async: trueで送ります。同期リクエストの待ち時間は最大約100秒ですが、人物の差し替えには138秒かかりました。
よくある質問
- Meta Muse(muse.ai)の API はありますか? あります。useapi.net の Muse API を使えば、契約中の Muse のプランで画像も音声付きの約10秒の動画も生成できます。Meta 公式の Model API は Muse Image を1枚あたり0.01ドルで提供していますが、2026年10月時点で動画生成には対応しておらず、muse.ai の Muse エージェントの API もありません。
- Meta Muse は日本で使えますか?日本のアカウントで API は使えますか? 使えます。日本で作成したアカウントを useapi.net の Setup Muse でそのまま追加できます。無料プランのアカウントでも問題ありません。muse.ai で初期設定を済ませて画像を1枚作り、パスワードを設定しておけば準備完了です。詳しくは始める前にをご覧ください。
- Muse の動画で日本語のセリフを話させられますか? 話させられます。useapi.net の Muse API で試したところ、日本語のセリフを引用符で囲んでプロンプトに入れるだけで、1回の POST /jobs/video でそのセリフを話す 1280×720、10秒の動画が61秒で返ってきました。プロンプトと動画は日本語でセリフを話させるに載せています。
- 料金はどのくらいかかりますか? useapi.net は画像や動画ごとに料金を取りません。ジョブは契約中の Muse のプランの週間利用枠を使い、無料プランでも動きます。今回のテストの結果から、無料アカウント1つで週に約30〜50本の動画を作れる計算です。有料の Power(月額20ドル)と Maximum(月額100ドル)では週間利用枠が増えます(2026年10月時点、ドル建て。日本での請求額は購入画面でご確認ください)。
- muse2api との違いは何ですか? useapi.net の Muse API はホスト型のサービスなので、デプロイするものはありません。アカウントはメールアドレスとパスワードで一度追加すれば、ログイン状態は useapi.net 側で維持します。完了したジョブは Webhook で受け取れます。muse2api は、自前でデプロイ・ホスティングし、運用も続ける必要があるプロジェクトです。詳しくは比較記事(英語)をご覧ください。
おわりに
ご質問は Discord サーバー または
Telegram チャンネルへどうぞ。
コード例は GitHub リポジトリにあります。
同じ操作は、ホスト型の Muse MCP サーバーのツールとしても提供しており、Claude Code、Cursor、VS Code から使えます。





