aituber-api について
aituber-api は、スクリプト、アイデア、Webページ、PDFからAI動画を生成するためのAPIスキルです。ナレーション動画の書き出しや、接続済みソーシャルチャンネルへの公開にも対応します。
主な機能
- 01スクリプトやアイデアから動画を生成
- 02URLやPDFを動画に変換
- 03ナレーション音声とビジュアルを選択
- 04MP4動画を書き出し
- 05接続済みソーシャルチャンネルへ公開
活用シーン
- 01スクリプトをナレーション動画にする
- 02記事やPDFを動画にする
- 03完成した動画を書き出す
- 04動画をソーシャルチャンネルに公開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aituberapp/ ai-video-skill --skill aituber-apiインストール後、Claude Code で/aituber-apiを入力して読み込まれたか確認します。
同梱ファイルREADME.mdLICENSE
詳細
AITuber API
スクリプトやアイデアから AI 動画を作成します。15 秒の Shorts から 20 分の長尺コンテンツまで対応します。この API は、ナレーション音声(1,300 種類以上の音声、あらゆる言語に対応)、AI 生成ビジュアル、音声と同期した字幕、MP4 エクスポート、および YouTube、TikTok、Instagram、Facebook、Threads、X への公開を処理します。
ベース URL: https://app.aituber.app/api/v1
OpenAPI 仕様: https://app.aituber.app/api/v1/openapi.json
API ドキュメント: https://aituber.app/api
ヒント: 以下のエンドポイントリファレンスとクレジット費用は、稼働中の API 定義から生成されているため、現在の API と一致しています。インタラクティブな操作やレスポンススキーマを確認するには、OpenAPI 仕様またはドキュメントページをご利用ください。
認証
GET /voices を除くすべてのエンドポイントで、Bearer トークンが必要です。AITuber ダッシュボードの https://app.aituber.app/dashboard/api-keys で API キーを作成してください。キーは ak_ で始まります。
Authorization: Bearer <AITUBER_API_KEY>
キーは AITUBER_API_KEY 環境変数に保存してください。
完全なワークフロー
AITuber では、生成後に利用できる一般的なフローが 2 つあります。
- エクスポートフロー: 音声を選択し、動画を生成し、ステータスを確認し、エクスポートしてダウンロードします
- 公開フロー: 音声を選択し、動画を生成し、ステータスを確認し、チャンネル一覧を取得して公開し、公開ステータスを確認します
ステップ 1:音声を選択する
curl "https://app.aituber.app/api/v1/voices?gender=male&accent=American"
認証は不要です。音声オブジェクトの配列を返します。生成時に id フィールドを voiceId として使用するか、voiceId を省略してデフォルトの音声を使用してください。
ステップ 2:動画を生成する
スクリプトから(ナレーションは自分で作成します):
curl -X POST "https://app.aituber.app/api/v1/videos/generate" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": "The human brain contains roughly 86 billion neurons. Every thought, memory, and emotion is the result of electrical signals racing through this incredible network.",
"voiceId": "VOICE_ID_FROM_STEP_1",
"imageStyleId": "cinematic",
"aspectRatio": "9:16"
}'
アイデアから(AI がスクリプトを作成します):
curl -X POST "https://app.aituber.app/api/v1/videos/generate" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": "5 mind-blowing facts about black holes",
"inputType": "idea",
"expectedDurationSeconds": 60
}'
{ "videoId": "uuid", "status": "pending" } を返します。
動画の種類(すべて同じエンドポイントを使用します):
- 顔出しなしのナレーション(画像) - デフォルトです。Ken Burns アニメーション付きの AI 画像を使用します。スクリプトまたはアイデアを送るだけです。
- 顔出しなしのナレーション(動画クリップ) - AI 動画クリップを使用します。
mediaType: "video"を設定してください。 - ストック映像 - ナレーションに合った実際のストック映像を使用します。
mediaType: "stock"を設定してください。 - スケルトンテンプレート - バイラルな「もし…が起きたら」という X 線スタイルです。
templateId: "skeleton"を設定してください。テンプレートがmediaTypeとスタイルを処理します。 - キャラクターテンプレート - キャラクターを中心としたストーリーです。
templateId: "character"とinputType: "idea"を設定してください。アイデアモードのみ利用できます(AI がキャラクターの一貫性を保つスクリプトを作成します)。 - 記事またはリンクから動画を作成 - スクリプトの代わりに公開ウェブページを送信します。
inputType: "source"とsource: { kind: "url", url: "https://..." }を設定してください。動画の作成中にページを取得して読み込むため、scriptは不要です。expectedDurationSecondsは必須です。 - PDF から動画を作成 - スクリプトの代わりに PDF を送信します。まず
POST /uploads(purpose: "document-source"、PDF のみ、最大 25MB)でアップロードしてassetIdを取得し、次にinputType: "source"とsource: { kind: "document", assetId: "..." }を設定してください。expectedDurationSecondsは必須です。
6 と 7 では、source.mode によってテキストの扱いが決まります。summarize(デフォルト)は内容に忠実な短いナレーションを作成し、read-out はテキストを一語一句そのまま読み上げ、expectedDurationSeconds を上限として扱います。処理を指示するには、source.instructions を追加してください。たとえば、"費用のセクションに重点を置く" と指定できます。ページやファイルを自分で読ませたい場合は、代わりにテキストを script に送り、分かる場合は source.title を指定してください。
スクリプトモードで映像を指定するには、角括弧内に指示を追加します:[夜の暗い森] 木々の間を風が吹き荒れた。 各 [角括弧] で、そのシーンに表示する内容を AI に伝えます。
ステップ 3:完了を確認する
curl "https://app.aituber.app/api/v1/videos/VIDEO_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY"
5~10 秒ごとに確認してください。生成には通常 1~3 分かかります。status が completed(または failed)になるまで待ちます。
ステップ 4:MP4 にエクスポートする
curl -X POST "https://app.aituber.app/api/v1/exports" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "videoId": "VIDEO_ID", "resolution": "1080p" }'
エクスポートは無料です。有効な有料サブスクリプションが必要です。GET /videos/VIDEO_ID をポーリングし、exportStatus が completed になるまで確認してください(通常 30 秒~5 分かかります)。
ステップ 5:MP4 をダウンロードする
curl "https://app.aituber.app/api/v1/exports/download?videoId=VIDEO_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY"
{ "url": "https://...", "videoId": "..." } を返します。URL は 2 分で期限切れになる署名付きの一時リンクです。すぐにダウンロードしてください。
ステップ 6:接続済みチャンネルに公開する
公開するには、AITuber ダッシュボードでチャンネルが接続済みであり、公開機能を含む有効な有料サブスクリプションが必要です。動画がまだエクスポートされていない場合、API が自動的にエクスポートを開始します(先に POST /exports を呼び出す必要はありません)。
チャンネルを一覧表示します。
curl "https://app.aituber.app/api/v1/channels" \
-H "Authorization: Bearer $AITUBER_API_KEY"
1 回の呼び出しで YouTube、TikTok、Instagram、Facebook、Threads、X に公開します。
curl -X POST "https://app.aituber.app/api/v1/publications" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"videoId": "VIDEO_ID",
"caption": "New short is live",
"shortCaption": "New short is live. What do you think?",
"publishNow": true,
"channels": [
{
"channelId": "YOUTUBE_CHANNEL_ID",
"title": "5 Mind-Blowing Facts",
"tags": ["facts", "science"],
"categoryId": "27"
},
{
"channelId": "TIKTOK_CHANNEL_ID",
"tiktokPrivacyStatus": "public",
"isAiGenerated": true
},
{
"channelId": "INSTAGRAM_CHANNEL_ID",
"instagramPlacement": "reels"
},
{ "channelId": "FACEBOOK_CHANNEL_ID" },
{ "channelId": "THREADS_CHANNEL_ID" },
{ "channelId": "X_CHANNEL_ID" }
]
}'
プラットフォームごとのチャンネル設定:
- YouTube:
title、tags、categoryId、madeForKids - TikTok:
tiktokPrivacyStatus、allowDuet、allowStitch、isAiGenerated - Instagram:
instagramPlacement、shareToFeed - TikTok と X:
allowComment。これを変更できるプラットフォームはほかにありません。
公開ステータスをポーリングします。
curl "https://app.aituber.app/api/v1/publications/PUBLICATION_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY"
アップロードが published、scheduled、failed などの安定した状態になるまで、10~15 秒ごとにポーリングします。
エンドポイントリファレンス
GET /voices
動画ナレーションに使用できるすべての AI 音声を、人気順に返します。認証は不要です。
| Param | Type | Required | Description |
|---|---|---|---|
| gender | string | No | 音声の性別で絞り込みます。値:「male」、「female」、「neutral」。 |
| accent | string | No | アクセントで絞り込みます(大文字と小文字は区別されません)。例:「American」、「British」、「Australian」、「Indian」。 |
| age | string | No | 年齢層で絞り込みます。値:「young」、「middle_aged」、「old」。 |
| useCase | string | No | 推奨用途で絞り込みます(大文字と小文字は区別されません)。例:「narration」、「conversational」、「news」、「audiobook」、「social_media」。 |
| language | string | No | 特定の言語向けに最適化された音声に絞り込みます(ISO 639-1 コード)。例:「en」、「es」、「fr」、「hi」、「zh」。 |
| search | string | No | 名前または説明で音声を検索します(大文字と小文字は区別されません)。例:「roger」、「energetic」、「calm」。 |
GET /voices/cloned
AITuber ダッシュボードでクローンした音声を返します。
GET /avatars
トークヘッド動画で使用できるすべてのアバターを返します。全員が利用できる組み込みアバターと、自分のキャラクターが含まれます。
GET /elements
保存済みの要素(人物/キャラクター、製品/小道具、場所)と、組み込みの要素を返します。
| Param | Type | Required | Description |
|---|---|---|---|
| type | character | prop | location | No | 要素の種類で絞り込みます。すべてを取得する場合は省略します。 |
POST /elements
参照写真を使って、再利用可能な要素(人物/キャラクター、製品/小道具、場所)を保存します。
| Param | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | 要素名。@handle の生成に使用します。英字、数字、スペース、ハイフンが適しています(例:「Maya」、「Red Bottle」)。 |
| type | character | prop | location | Yes | character = 人物またはマスコット(アバターとしても使用可能)、prop = 物体または製品、location = 場所。 |
| description | string | No | 任意の補足情報(対象の内容や使用するタイミングなど)。外見は記述しないでください。要素の見た目は写真によって決まります。 |
| imageUrl | string | No | 参照写真の公開 URL(JPEG、PNG、WebP、最大 25MB)。ダウンロードして保存します。これと imageAssetId のいずれかを指定します。 |
| imageAssetId | string (uuid) | No | POST /uploads でアップロードした、用途が element-image のアセット。これと imageUrl のいずれかを指定します。 |
POST /uploads
メディアファイルをAITuberライブラリに追加し、他のエンドポイントに渡せるassetIdを返します。
| Param | Type | Required | Description |
|---|---|---|---|
| purpose | background-video-library-upload | background-video-upload | clip-reference-image | clip-reference-video | clip-reference-audio | rebuild-still | document-source | element-image | visual-style-reference | ugc-demo | music | voice-sample | agent-attachment | Yes | このファイルの用途です。指定された用途のみ受け付けられます。各用途で利用可能になるエンドポイントについては、エンドポイントの説明を参照してください。 |
| sourceUrl | string | No | ファイルのダウンロード元となる公開URLです(画像用途のみ)。これを指定する場合は、contentTypeとfileSizeBytesは指定しないでください。 |
| contentType | image/jpeg | image/png | image/webp | video/mp4 | video/quicktime | video/webm | audio/mpeg | audio/wav | audio/mp4 | audio/x-m4a | audio/aac | audio/mp3 | audio/wave | audio/x-wav | audio/ogg | audio/webm | application/pdf | No | 直接アップロードするファイルの種類です。バイトデータをPUTするためのuploadUrlを返します。用途(画像、動画、音声、またはドキュメント)と一致している必要があります。 |
| fileSizeBytes | integer | No | 直接アップロードするファイルのサイズ(バイト)です。上限は用途によって異なります(画像は25MB、動画は200MB、音声は50MB、ドキュメントは25MB)。 |
| durationSeconds | number | No | 動画(ugc-demo、1~180)および音声(music、1~600)のアップロードでは必須です。クリップまたはトラックの長さを秒単位で指定します。セグメントのタイミングに使用されます。 |
| videoWidth | integer | No | 動画のアップロード(ugc-demo)でのピクセル単位の幅です。デモのフレーミングを適切にするため、指定することをおすすめします。 |
| videoHeight | integer | No | 動画のアップロード(ugc-demo)でのピクセル単位の高さです。デモのフレーミングを適切にするため、指定することをおすすめします。 |
| fileName | string | No | 表示用のファイル名です(document-sourceではIDの代わりに表示されます)。ディレクトリ部分は削除されます。 |
GET /ugc/reactions
カメラに反応する人物の短いクリップを返します。system(組み込みライブラリ)とcustom(生成したリアクション)に分かれています。
POST /ugc/reactions
画像から動画を生成するAIを使って、キャラクターがカメラに反応する短いクリップを生成します。
| Param | Type | Required | Description |
|---|---|---|---|
| avatarImageUrl | string | No | ダッシュボードでのみ使用します。公開APIの呼び出し元は代わりにelementIdを渡してください。公開APIで指定するavatarImageUrlは、AITuberがホストするアセットURLである必要があります。 |
| elementId | string (uuid) | No | 反応させるキャラクター要素です。GET /elements(type character)からIDを取得するか、POST /elementsで作成してください。 |
| avatarId | string (uuid) | No | レガシーのアバターIDです。elementIdを推奨します。 |
| reactionPrompt | string | No | リアクションを直接指定します。例:「驚いて、目を見開き、後ろにのけぞる」。これを指定する場合はhookTextを指定しないでください。 |
| hookText | string | No | キャラクターが反応するきっかけとなる文です。AIが適切な表情に変換します。これを指定する場合はreactionPromptを指定しないでください。 |
| quality | good | premium | No | 生成品質です。premiumは費用が高くなりますが、より高品質な仕上がりになります。 |
GET /ugc/reactions/{id}
生成したリアクションを返します。
| Param | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | POST /ugc/reactionsから取得したリアクションIDです。 |
POST /ugc/videos
完成したUGCスタイルのフック動画を作成します。人物のリアクションクリップにフックテキストを重ね、オプションでその後に商品デモ動画を続けます。
| Param | Type | Required | Description |
|---|---|---|---|
| hookText | string | はい | 画面に表示するフックテキスト(5〜200文字)。 |
| reactionId | string (uuid) | いいえ | GET /ugc/reactions から取得したリアクションクリップ。 |
| ugcVideoId | string (uuid) | いいえ | ダッシュボードで使用する reactionId の別名です。パブリック API を呼び出す場合は reactionId を使用します。 |
| demoVideoAssetId | string (uuid) | いいえ | オプションの商品デモ動画。POST /uploads(purpose ugc-demo)でアップロードします。リアクションの後に再生されます。 |
| demoVideoUrl | string | いいえ | ダッシュボード専用です。パブリック API を呼び出す場合は、代わりに demoVideoAssetId を指定します。 |
| demoDurationSeconds | number | いいえ | ダッシュボード専用です。demoVideoUrl が設定されている場合は必須です。 |
| demoVideoWidth | integer | いいえ | ダッシュボード専用です。 |
| demoVideoHeight | integer | いいえ | ダッシュボード専用です。 |
| hookTextPosition | top | center | bottom | いいえ | フックテキストの表示位置。 |
| aspectRatio | 9:16 | 16:9 | 1:1 | いいえ | 動画の縦横比。 |
| backgroundMusicId | string (uuid) | いいえ | ダッシュボード専用です。BGM トラック ID。 |
| backgroundMusicVolume | number | いいえ | ダッシュボード専用です。BGM の音量(0〜100)。 |
| captionStyleId | string | いいえ | GET /caption-styles から取得したキャプションスタイル ID。デフォルト:「tiktok」。 |
| title | string | いいえ | オプションの動画タイトル。 |
POST /music
テキストプロンプトを使って、AI でオリジナル曲を生成します。
| Param | Type | Required | Description |
|---|---|---|---|
| prompt | string | はい | 曲のテーマやサウンドの説明です。例:「夏のドライブ旅行をテーマにした、アップビートなインディーポップトラック」。カスタムモードでは任意のコンテキストです。歌詞は lyrics、サウンドは style で指定します。 |
| instrumental | boolean | いいえ | ボーカルや歌詞のないトラックにする場合は true を設定します。 |
| customMode | boolean | いいえ | AI に prompt から決めさせる代わりに、style、title、lyrics を自分で指定する場合は true を設定します。 |
| style | string | いいえ | カスタムモード専用です。音楽スタイルを指定します。例:「ローファイ・ヒップホップ、落ち着いた雰囲気、ジャズピアノ」。 |
| title | string | いいえ | カスタムモード専用です。曲のタイトル。 |
| lyrics | string | いいえ | カスタムモード専用です。歌う歌詞をそのまま指定します。instrumental が true の場合は無視されます。 |
GET /music
音楽ライブラリ内のトラックを一覧表示します。POST /music で生成した曲と、POST /uploads(purpose music)でアップロードした音声が含まれます。
GET /music/{id}
生成した曲を返します。
| Param | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | はい | POST /music で取得した曲 ID。 |
POST /music-videos
ミュージックビデオを作成します。曲に、AI ビジュアル、同期字幕、オプションの波形を組み合わせます。
| Param | Type | Required | Description |
|---|---|---|---|
| musicId | string (uuid) | No | POST /music で生成済みの曲です。musicAssetId とどちらか一方を指定してください。 |
| musicAssetId | string (uuid) | No | POST /uploads(purpose music)でアップロードしたトラックです。musicId とどちらか一方を指定してください。 |
| visualMode | ai-images | ai-video | cover-image | Yes | ai-images(数秒ごとに新しい AI 画像を表示)、ai-video(短い AI クリップ)、cover-image(曲全体を通して静止画を表示)のいずれかを指定します。 |
| visualDirection | string | No | ビジュアルのアートディレクションを任意で指定します。例:「夜のネオン輝くサイバーパンク都市、ムーディー」。保存済みの要素を @handle で指定すると(GET /elements を参照)、再利用できます。例:「屋上にいる @Robo-Cat」。登場するすべてのシーンで同じ見た目になるよう、その写真が画像モデルに渡されます。ai-images では、要素を指定するたびにシーンごとに参照料金が加算されます。 |
| imageStyleId | string | No | ai-images/ai-video の画像スタイルです。ID は GET /image-styles で取得できます。 |
| imageQuality | basic | good | premium | max | No | ai-images の画像品質です(品質が高いほど費用が増えます)。 |
| secondsPerImage | number | No | ai-images で各画像を表示する秒数です。秒数を減らすと画像の数が増え、必要なクレジットも増えます。 |
| videoQuality | basic | good | premium | max | No | ai-video のクリップ品質です(品質が高いほど費用が増えます)。 |
| coverImageAssetId | string (uuid) | No | cover-image モードで使用する画像です。POST /uploads(purpose element-image)でアップロードした画像を指定します。このモードでは必須です。 |
| aspectRatio | 9:16 | 16:9 | 1:1 | No | 動画の寸法です。 |
| captionsEnabled | boolean | No | 歌詞に同期した字幕を表示します。インストゥルメンタルのトラックでは自動的にオフになります。 |
| captionStyleId | string | No | GET /caption-styles で取得した字幕スタイル ID です。 |
| captionPosition | top | center | bottom | No | 画面上の字幕の位置です。 |
| showWaveform | boolean | No | 音声波形のアニメーションを表示します。 |
| musicTrimStartSeconds | number | No | 曲のこの位置(秒)から動画を開始します。デフォルトは曲の先頭です。 |
| musicTrimEndSeconds | number | No | 曲のこの位置(秒)で動画を終了します。デフォルトは曲の全長です。 |
POST /ideas
ニッチな分野や視聴者層向けに、具体的でバイラル風の動画トピック案を生成します。
| Param | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | アイデアを考える対象となるニッチな分野、視聴者層、またはテーマです。例:「顔出しなしの YouTube Shorts チャンネル向けの宇宙の豆知識」。 |
| language | string | No | アイデアの言語です(「en」「es」「hi」などの ISO 639-1 コード)。デフォルト:「en」。 |
| count | number | No | 生成するアイデアの数です(5~15)。デフォルト:10。 |
| source | tool_page | inline | No | 分析用の、リクエスト元です。ダッシュボードで使用します。省略しても問題ありません。 |
| templateId | string | No | 分析用の、リクエスト元となった作成テンプレートです。ダッシュボードで使用します。省略しても問題ありません。 |
POST /scripts
トピックについて、目標の動画尺に合わせた、異なるナレーション台本を 2 種類生成します。
| Param | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | 台本の題材となるトピックやアイデアです。例:「深海に関する驚きの事実 5 選」。 |
| duration | number | Yes | 目標の動画尺(秒)です(15~1200)。この尺にナレーションが収まるよう、台本の長さが調整されます。 |
| language | string | No | 台本の言語です(「en」「es」「hi」などの ISO 639-1 コード)。デフォルト:英語。 |
| source | tool_page | inline | No | 分析用の、リクエスト元です。ダッシュボードで使用します。省略しても問題ありません。 |
| templateId | string | No | 分析用の、リクエスト元となった作成テンプレートです。ダッシュボードで使用します。省略しても問題ありません。 |
GET /image-styles
POST /videos/generate で imageStyleId として使用できるすべての画像スタイルを返します(mediaType が images の場合)。組み込みスタイル、厳選されたテンプレートスタイル(medical-xray のような ID。templateId: "medical" 用に作成されています)、AITuber ダッシュボードで作成されたカスタムスタイルが含まれます。
GET /caption-styles
POST /videos/generate で captionStyleId として使用できるすべてのキャプションスタイルを返します。組み込みスタイルと、AITuber ダッシュボードで作成されたカスタムスタイルが含まれます。
POST /videos/generate
スクリプト、アイデア、または記事やドキュメントのテキストから、新しい AI 動画の生成を開始します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| thumbnail | object | いいえ | |
| thumbnail.instructions | string | いいえ | |
| script | string | いいえ | 動画のコンテンツです。このフィールドの使い方はinputTypeによって異なります。スクリプトモード(inputType: "script"、デフォルト):正確なナレーションテキストを指定します。音声はこのテキストを一語一句そのまま読み上げます。5語以上である必要があります。最大30,000文字です(通常の読み上げ速度で20分の動画に十分な長さです)。AIが自動的に内容をビジュアルセグメントに分割し、対応するビジュアルを生成します。**ビジュアルの指定:**デフォルトでは、ナレーションの各部分にどのビジュアルを表示するかをAIが決定します。より細かく指定するには、各ナレーションセグメントの前に角括弧でビジュアルの指示を追加します。[夜の暗い森] 風が木々の間を吹き抜けてうなった。[影からのぞく光る目] 何かが見ていた。各[角括弧内のテキスト]で、そのシーンに何を表示するかをAIに正確に伝えます。その後のテキストはナレーションです。**動画に実在の人物、製品、場所を登場させる(@メンション):**保存済みの要素をハンドルで参照します。例:[@Maya holding @Red-Bottle] すべてを始めた創業者をご紹介します。画像モデルには要素の参照写真が渡されるため、動画全体を通して同じ顔や製品が一貫して表示されます。ハンドルはGET /elementsで確認できます。POST /elementsで新しい要素を作成できます。ルール:mediaTypeがimagesまたはvideoの場合に動作します。stockでは動作しません。要素の見た目は写真で決まるため、スクリプト内で外見を説明しないでください。メンションは通常の名前として読み上げられ(@は読み上げられません)、不明なハンドルは通常の単語として扱われます。アイデアモード(inputType: "idea"):短いトピックまたはコンセプトを指定します。AIが完全なナレーションスクリプトを作成します。800文字未満にしてください。expectedDurationSecondsと組み合わせると、動画の長さを調整できます。ソースモード(inputType: "source"):記事、ウェブページ、文書のテキストを指定します。これはナレーションではありません。AIが内容を読み取り、それに忠実な短いナレーションスクリプトを作成します。最大200,000文字です。スクリプトの長さを指定するにはexpectedDurationSeconds(必須)と組み合わせ、テキストの出典を伝えるにはsourceオブジェクトと組み合わせます。**ソースモードでは、代わりにsource.url(ウェブページ)またはsource.assetId(アップロードしたPDF)を送信すれば、このフィールドを省略できます。**動画の作成時にページまたはファイルを取得して読み取るため、ご自身で読む必要はありません。あらゆる言語に対応しています。テキストが書かれている言語で、音声が自然に読み上げます。 |
| inputType | script | idea | source | いいえ | scriptフィールドの解釈方法です。- script(デフォルト):指定したテキストが正確なナレーションになります。読み上げられるすべての言葉を指定できます。- idea:トピックを指定すると、AIが魅力的なナレーションスクリプトを作成します。目標の長さを調整するにはexpectedDurationSecondsを使用します。- source:記事または文書のテキストを指定すると、AIがそこから短い動画スクリプトを作成します。AIはそのテキストに忠実に従い、内容を創作しません。スクリプトの長さを設定するため、expectedDurationSecondsは必須です。ページまたはPDFをこちらで読み取る場合はsource.urlまたはsource.assetIdを送信するか、scriptにテキストを直接送信してください。 |
| source | object | いいえ | ソーステキストの取得元です。inputType: "source"の場合にのみ指定できます。それ以外のinputTypeと一緒に送信すると400が返されます。使い方は2通りあります。urlまたはassetIdを送信してページまたはファイルをこちらで読み取る(その場合、scriptは不要です)か、ご自身でページを読み取り、そのテキストをscriptに送信します。 |
| source.kind | url | document | いいえ | テキストの取得元です。ウェブページにはurl、アップロードしたファイルにはdocumentを指定します。 |
| source.url | string | いいえ | 読み取るウェブページです。kind: "url"と一緒に使用します。scriptの代わりにこれを送信すると、動画の作成時にページを取得します。ページは一般公開されている必要があります。ログインが必要なページは読み取れません。 |
| source.assetId | string (uuid) | いいえ | 読み取るアップロード済みPDFです。kind: "document"と一緒に使用します。scriptの代わりにこれを送信すると、動画の作成時にファイルを読み取ります。このIDを取得するには、先にファイルをアップロードしてください。 |
| source.mode | summarize | read-out | いいえ | テキストの処理方法です。- summarize(デフォルト):AIがテキストに忠実な短いナレーションを作成します。長さはexpectedDurationSecondsに合わせます。- read-out:テキスト自体が一語一句そのままナレーションになります。書き換えは行われず、AIによる文章作成の工程も実行されません。この場合、expectedDurationSecondsは上限となります。テキストがその長さを超える場合は文末でカットされるため、動画が指定した長さを超えることはありません。 |
| source.title | string | いいえ | ページまたは文書のタイトルです。分かる場合に指定します。こちらでページを読み取る場合は無視されます。 |
| source.instructions | string | いいえ | ソースに対して行いたいことです。例:「費用に関するセクションに焦点を当てる」「明るい雰囲気にする」。最大600文字です。 |
| backgroundVideoId | string (uuid) | いいえ | 背景モードの場合:GET /background-videosで取得したIDです。1つのクリップをナレーション全体の背景として繰り返し再生します。ソース音声はミュートされます。 |
| mediaType | images | video | stock | background | avatar | いいえ | 動画に使用するビジュアルの種類です。それぞれ異なる見た目や雰囲気になります。- images(デフォルト):AIがセグメントごとに独自の画像を生成し、滑らかなケン・バーンズ風のパン/ズームアニメーションで表示します。人気YouTubeチャンネルで使われる、従来型の「顔出しなしナレーション動画」のスタイルです。最も人気があり、最も低コストの選択肢です。imageQualityとimageStyleIdで見た目を調整できます。- video:AIがセグメントごとに短い動画クリップを生成します。画像よりも動きがあり、映画のような仕上がりですが、クレジットを多く消費します。skeletonおよびcharacterテンプレートでも内部的に使用されます。- stock:各セグメントに合う実際のストック映像を自動的に検索して使用します。ニュース、教育、ドキュメンタリー形式のコンテンツに最適です。- avatar:アバターがスクリプトを話すトークヘッド動画です。**avatarId(GET /avatarsで取得)とvoiceIdが必要です。**スクリプトモードのみ対応(アイデアモードには非対応)。最長5分、アスペクト比は9:16または16:9です。動画1分あたり約480クレジットに加えてナレーション分のクレジットが必要で、他のメディアタイプより大幅に高コストです。生成にも時間がかかります(通常3~10分)。ほとんどの場合、テンプレートを使用しているのでなければ、デフォルト(images)のままにしてください。templateIdを使用すると、テンプレートが最適なメディアタイプを自動的に選択するため、mediaTypeを別途設定する必要はありません。 |
| avatarId | string (uuid) | いいえ | **mediaTypeが"avatar"の場合に必須です。**スクリプトを話すアバターです。有効なIDはGET /avatars(組み込みアバターと、ダッシュボードで作成したキャラクター)から取得できます。他のメディアタイプでは無視されます。 |
| motionPrompt | string | いいえ | アバターの動きやジェスチャーに関する任意の指示です。例:「興奮した様子で、手振りを交えながらカメラに身を乗り出して話す」。mediaTypeが"avatar"の場合にのみ適用されます。 |
| voiceId | string | いいえ | ナレーションに使用する音声IDです。利用可能な1,300種類以上の音声をGET /voicesで確認して試聴するか、GET /voices/clonedからクローン音声を使用できます。省略すると、深みのある自然なアメリカ英語の男性音声「Adam」がデフォルトで使用されます。例外:mediaTypeが"avatar"の場合は必須です(デフォルトはありません。アバターに合う音声を選ぶか、GET /avatarsからそのアバターのdefaultVoiceIdを使用してください)。GET /voicesエンドポイントのクエリパラメーターを使って、性別、アクセント、用途で音声を絞り込めます。選択する前に各音声のpreviewUrlを使ってサンプルを試聴してください。 |
| voiceSpeed | number | いいえ | ナレーションの速度倍率です。範囲は0.7~1.2です。- 0.7:30%遅くなります。教育、瞑想、または母語話者以外の視聴者に最適です。- 1.0(デフォルト):自然な速度です。- 1.2:20%速くなります。活気のある、盛り上がる、またはテンポの速いコンテンツに最適です。多くのクリエイターは0.9~1.1の値を使用しています。 |
| aspectRatio | 9:16 | 16:9 | 1:1 | いいえ | 動画のサイズです。公開先に応じて選択してください。- 9:16(デフォルト):縦向き/ポートレートです。YouTube Shorts、TikTok、Instagram Reelsに最適です。- 16:9:横向き/ランドスケープです。標準的なYouTube動画やプレゼンテーションに最適です。- 1:1:正方形です。Instagramフィード投稿やLinkedInに最適です。mediaType: "avatar"では使用できません。 |
| expectedDurationSeconds | number | いいえ | 目標とする動画の長さ(秒)です。AIが作成するスクリプトの長さを把握するため、inputTypeが"idea"の場合は必須です。例:30秒のShortなら30、1分の動画なら60、3分の動画なら180、10分の動画なら600、20分の動画なら1200です。上限はテンプレートによって異なります: - デフォルトの顔出しなしテンプレート(templateIdなし):1200秒(20分) - templateId: "skeleton"またはtemplateId: "character":420秒(7分)(これらのテンプレートはコストの仕組みが異なり、長尺コンテンツ向けではありません) - templateId: "rebuild":60秒(1分) inputTypeが"source"の場合も、どちらのソースモードでも必須です。source.mode: "summarize"では目標値となり、AIはその長さのスクリプトを作成します。source.mode: "read-out"では上限となり、テキストは一語一句そのまま読み上げられ、その長さを超える部分は文末でカットされます。テンプレート固有の上限を超える値を渡すと、400エラーが返されます。inputTypeが"script"の場合、長さは語数で決まるため無視されます。 |
| imageQuality | basic | good | premium | max | いいえ | 画像生成の品質レベルです。mediaTypeが"images"の場合にのみ適用されます。品質を高くすると、より詳細で正確な画像が生成されますが、画像ごとのクレジット消費量は増えます。- basic(デフォルト):1クレジット/画像。高速生成。テストや下書きに適しています。- good:5クレジット/画像。ディテールと正確さが向上します。公開するコンテンツのほとんどに適しています。- premium:10クレジット/画像。ディテールが豊かで、スクリプトに非常に忠実です。プロフェッショナルなコンテンツに最適です。- max:20クレジット/画像。最高品質です。制作水準の高いコンテンツに最適です。通常、60秒の動画には15~18枚の画像が使われます(3~5秒ごとに1枚)。クレジットを計算する際はこれを考慮してください。どの品質レベルでも、@メンションされた保存済み要素の参照写真を使用できます。シーンで写真を1枚使用するごとに、上記の品質レベルの料金に加えて3クレジットが加算されます。 |
| imageStyleId | string | いいえ | AI生成画像のビジュアルスタイルです。mediaTypeが"images"の場合にのみ適用されます。各スタイルは、動画内のすべての画像に一貫した美的表現を適用します。リアル系: - photorealistic(デフォルト):超リアルな写真、DSLR品質。- cinematic:35mmフィルム調、ドラマチックな照明、映画のスチルのような美しさ。- vintage-retro:1980年代のVHS風、ネオンカラー、シンセウェーブの雰囲気。- noir:クラシックな白黒フィルム・ノワール、ドラマチックな影。イラスト系: - 3d-pixar:滑らかで丸みのある形の、3Dピクサー風カートゥーン。- anime:日本のアニメ/漫画風、セルシェーディング、鮮やかな色彩。- digital-art:プロ品質のコンセプトアート、Artstation品質。- comic-book:アメリカンコミック風、太い輪郭線、網点の陰影。アート系: - pencil-sketch:質感のある紙に描かれた、細密なグラファイト鉛筆画。- oil-painting:筆跡が見える古典的な油絵。- watercolor:透明感のある色の重なりが特徴の、柔らかな水彩画。- pop-art:アンディ・ウォーホル風、鮮やかな原色。モダン系: - kurzgesagt:フラットなベクター教育スタイル(YouTubeチャンネルのようなスタイル)。- pixel-art:レトロな16ビットビデオゲーム風。- minimalist:すっきりとシンプルで、余白を多くとったスタイル。- claymation:アードマン風のクレイアニメーション。ほかに11種類のスタイルがあります。細かく調整するにはimageStyleCustomと組み合わせてください。 |
| captionStyleId | string | いいえ | キャプション(字幕)のビジュアルスタイルです。キャプションは単語ごとのタイミングに同期し、動画に直接描画されます。組み込みスタイル: - wrap-1(デフォルト):2語のグループで、現在の単語をハイライトします。最も人気のあるスタイルです。- cinematic:白い細字で、フレーズごとにキーワードを1つ、光彩のあるイタリック体のセリフフォントで表示します。- koe:小さな小文字のセリフ体で、落ち着いたフレーズを1つずつ表示します。単語のハイライトはありません。- pill:白い角丸ボックスに黒い文字を載せ、短いフレーズを1つずつ表示します。- hormozi:黒いピル型背景に黄色のハイライトを付けた、大胆な大文字スタイルです。Alex Hormoziに着想を得ています。- beast:文字間隔が弾むアニメーション付きの、太字のBangersフォントです。MrBeastに着想を得ています。- noah:色付きのハイライトを付けた、太字のイタリック体Oswaldです。- handwritten:手書きフォントを使った自然でカジュアルなスタイルです。個人的で本物らしい雰囲気になります。- subtitle:暗い帯の上に表示する、すっきりとしたストリーミング風の字幕です。プロフェッショナルで読みやすいスタイルです。- impact:単語を1つずつ表示する、非常に大きく太い文字です。最大限の強調に適しています。- pop:弾む単語を使った遊び心のあるスプリングアニメーションです。楽しく活気のあるスタイルです。- chronicle:歴史、神話、壮大な物語向けの古風なセリフ体です。- cyber:SF、テクノロジー、サイバーパンクコンテンツ向けの未来的なネオンスタイルです。- grit:犯罪実録、ストリート、緊迫感のある物語向けの荒々しいマーカースタイルです。- luxe:高級、ファッション、セレブ関連のコンテンツ向けのエレガントなセリフ体です。- terminal:テクノロジー、ハッカー、AI関連のコンテンツ向けの等幅スタイルです。AITuber dashboardから、独自のフォント、色、アニメーションを使ったカスタムキャプションスタイルを作成することもできます。作成したスタイルIDをここで使用してください。 |
| captionsEnabled | boolean | いいえ | 動画にキャプション(字幕)を表示するかどうかです。デフォルト:true。キャプションはナレーションに合わせて単語ごとに自動同期されます。エンゲージメント、アクセシビリティ、視聴時間が大幅に向上するため、キャプションをオンにしておくことを強くおすすめします。音楽のみの動画や環境映像の場合に限り、falseに設定してください。 |
| captionPosition | string | いいえ | 動画内でキャプションを表示する垂直位置です。- bottom(デフォルト):画面下部に表示します。- center:画面中央に表示します。- top:画面上部に表示します。mediaType: "avatar"ではサポートされていません(アバターのキャプションは常にデフォルトの位置を使用します)。 |
| videoQuality | string | いいえ | 動画クリップ生成の品質です。mediaTypeが"video"の場合にのみ適用されます。- basic:生成が最も速く、ビジュアル品質は低めです。- good(デフォルト):品質と速度のバランスに優れています。- premium:高品質の動画クリップです。生成に時間がかかります。- max:1080pクリップで、最も鮮明な品質です。秒あたりの料金が最も高くなります。 |
| templateId | string | いいえ | 特定のビジュアル形式とスタイルを適用する、専用の動画テンプレートです。標準的な顔出しなしナレーション動画を作成する場合(デフォルト)は空欄にしてください。利用可能なテンプレート: - skeleton:「もし~したらどうなるか」という形式の教育動画で、骨格/X線のビジュアルを使用します。内部的にAI動画生成を使用します。YouTube Shortsで人気の高いバイラル形式です。スクリプトの例:"30日間アイスクリームだけを食べたらどうなるか"。- medical:科学的に正確な解剖学的表現を使った医療アニメーション動画です。健康教育、患者向けの解説、クリニックのコンテンツに適しています。mediaTypeはimages(デフォルト)またはvideoのみ使用できます(stockは使用できません。ストックライブラリには解剖映像がないためです)。imageStyleIdを使って、以下の厳選スタイルを任意で指定できます:medical-3d(リアルな3D)、medical-translucent(透けて見える人体)、medical-xray、medical-darkstudio(黒背景に臓器)、medical-cartoon(患者向けの親しみやすいスタイル)、または省略して自動選択。アイデアの例:"人工膝関節全置換術の仕組みを段階的に解説"。- character:キャラクターを中心としたアニメーション動画です。AIがすべてのシーンで一貫したキャラクターを生成し、アニメーション化します。内部的にAI動画生成を使用します。スクリプトの例:"学校での初日に友情の意味を学ぶロボット"。- rebuild:AIによる建設タイムラプスです。1つの場所が散らかった状態または何もない状態から完成する様子を、固定された1つのショットで映します。カメラは動かないため、視聴者は最初の瞬間から最後の瞬間まで同じフレームを比較できます。ナレーションもキャプションもありません。作業の音が聞こえ、動画全体にBGMが追加されます。最後の数秒には、完成した場所が空っぽのままではなく、実際に使われている様子が必ず映ります。長さは15~60秒です。プロンプトだけ、beforeImageUrlとafterImageUrl、またはそれらの組み合わせで作成できます。プロンプトでは、変化する「物理的な場所」を説明する必要があります。講義、ジョーク、製品レビューは受け付けられません。アイデアの例:"汚れた運河が遊歩道と照明のある公園に変わる"。**重要:**テンプレートを設定すると、ビジュアル設定はテンプレートが処理するため、script(またはトピックを指定したinputType: "idea")だけを入力してください。skeleton、character、rebuildではmediaTypeも自動的に固定されます。medicalではmediaTypeを選択できます。images(デフォルト)またはvideoを送信してください。stockを送信すると400が返されます。アバターが話すトークヘッド動画にはテンプレートを使用しないでください。代わりにmediaType: "avatar"とavatarIdを設定してください。 |
| beforeImageUrl | string | いいえ | templateId: "rebuild"で最初のフレームとして使用する、一般公開されたHTTPS画像URLです。動画はこの画像から始まり、カメラは最後まで同じ角度を保ちます。場所は実在する必要はありません。写真、イラスト、レンダリングのいずれも使用できます。アップロードした画像は無料で、生成予定だった静止画の代わりに使われるため、クレジット消費量を抑えられます。任意です。他のテンプレートでは無視されます。 |
| afterImageUrl | string | いいえ | templateId: "rebuild"で最後のフレームとして使用する、一般公開されたHTTPS画像URLです。動画は、ほかの場面と同じカメラアングルでこの画像を最後に表示します。完成した建物の写真ではなく、完成した状態のレンダリングやイラストを使うこともよくあります。アップロードした画像は無料で、生成予定だった静止画の代わりに使われます。任意です。他のテンプレートでは無視されます。 |
GET /videos
組織のすべての動画を新しい順に返します。
| Param | Type | Required | Description |
|---|---|---|---|
| limit | number | No | 1 ページあたりに返す動画の最大数です。デフォルト:50、最大:100。 |
| cursor | string (uuid) | No | ページネーションカーソル:前のページの最後の動画の id です。その動画より古い動画を返します。最初のページでは省略してください。空の配列は、これ以上動画がないことを意味します。 |
GET /videos/{id}
単一の動画の詳細を返します。
| Param | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | POST /generate または GET /videos で返された動画 ID です。 |
DELETE /videos/{id}
動画と生成されたアセットを完全に削除します。
| Param | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | 削除する動画 ID です。 |
GET /clip-models
単独のクリップ生成で利用可能な AI 動画モデルと、その機能(テキストから動画、画像から動画、参照画像)、対応するアスペクト比、解像度、長さの上限、および解像度ごとの秒あたりのクレジットコストを返します。
POST /clips
テキストプロンプト、画像、またはその両方から、単一の AI 動画クリップ(1~30 秒)の生成を開始します。
| Param | Type | Required | Description |
|---|---|---|---|
| title | string | No | 省略可能なクリップのタイトルです。デフォルトではプロンプトの冒頭が使われます。 |
| modelKey | string | Yes | 使用する生成モデルです。有効なキー、機能、秒あたりのコストは GET /clip-models で確認できます。 |
| prompt | string | No | クリップに表示する内容です。テキストから動画を生成するモデルでは必須です。画像をアニメーション化する場合は省略できます。 |
| aspectRatio | auto | 16:9 | 9:16 | 4:3 | 3:4 | 1:1 | 21:9 | 3:2 | 2:3 | 9:21 | 5:4 | 4:5 | No | クリップの縦横比です。GET /clip-models でモデルの supportedAspectRatios を確認してください。デフォルト:"16:9"。 |
| resolution | string | No | 出力解像度です(例:"720p"、"1080p")。モデルの supportedResolutions を確認してください。解像度が高いほど、秒あたりのクレジット消費量が増えます。デフォルト:"720p"。 |
| durationSeconds | integer | auto | No | クリップの長さを秒数で指定します。自動再生時間に対応するモデルでは "auto" を指定できます。デフォルト:5。 |
| firstFrameUrl | string | No | 最初のフレームとして使う公開画像 URL です(画像から動画)。supportsFirstFrame に対応するモデルでのみ使用できます。 |
| lastFrameUrl | string | No | 最後のフレームとして使う公開画像 URL です。supportsLastFrame に対応するモデルでのみ使用できます。 |
| referenceImageUrls | array of string | No | スタイルや被写体の参照に使う公開画像 URL です。supportsReferenceImages に対応するモデルでのみ使用できます。maxReferenceImages の上限を守ってください。 |
| referenceVideoUrls | array of string | No | 動き、編集、または延長に使う公開動画 URL です。まずモデルの機能を確認してください。 |
| referenceAudioUrls | array of string | No | 音声、リップシンク、リズム、またはタイミングに使う公開音声 URL です。まずモデルの機能を確認してください。 |
GET /clips
単独で生成した AI クリップを新しい順に返します。
| Param | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | 1 ページあたりのクリップの最大数(1~50)です。デフォルト:20。 |
| cursor | datetime (ISO 8601) | No | ページネーションカーソル:前のページの最後のクリップの createdAt です。最初のページでは省略してください。 |
GET /clips/{id}
生成ステータスを含むクリップを返します。
| Param | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | POST /clips で返されたクリップ ID です。 |
POST /exports
完成した動画のレンダリングを開始し、ダウンロード可能な MP4 ファイルを作成します。
| Param | Type | Required | Description |
|---|---|---|---|
| videoId | string (uuid) | はい | エクスポートする動画の ID です。動画の status: completed である必要があります。 |
| resolution | 1080p | 4k | いいえ | エクスポート解像度です。 - 1080p(デフォルト):フル HD(縦向きの場合は 1920x1080 または 1080x1920)。レンダリングが速くなります。 - 4k:Ultra HD(縦向きの場合は 3840x2160 または 2160x3840)。レンダリングに時間がかかり、ファイルサイズも大きくなります。 |
GET /exports/download
動画のレンダリング済み MP4 ファイルをダウンロードするための、一時的な署名付き URL を返します。
| Param | Type | Required | Description |
|---|---|---|---|
| videoId | string (uuid) | いいえ | 動画 ID です。この動画の最新の完了済みエクスポートを検索します。 |
| exportId | string (uuid) | いいえ | POST /exports から返される、特定のエクスポート ID です。videoId で最新のエクスポートが自動的に検索されるため、通常は不要です。 |
GET /channels
組織に接続されているすべてのソーシャルメディアチャンネル(YouTube、TikTok、Instagram、Facebook、Threads、X)を返します。
| Param | Type | Required | Description |
|---|---|---|---|
| platform | youtube | tiktok | instagram | facebook | threads | x | all | いいえ | プラットフォームで絞り込みます。接続されているすべてのチャンネルを一覧表示するには、"all" を指定するか、省略してください。 |
POST /publications
完成した動画を、1 つ以上の接続済みソーシャルメディアチャンネル(YouTube、TikTok、Instagram、Facebook、Threads、X)に公開します。
| Param | Type | Required | Description |
|---|---|---|---|
| videoId | string (uuid) | Yes | 公開する動画です。status: completed である必要があります。 |
| sceneExportId | string (uuid) | No | 動画がすでにエクスポートされている場合のエクスポート ID(任意)です。省略すると、エクスポートが自動的に開始されます。 |
| caption | string | No | YouTube、TikTok、Instagram、Facebook で使用する説明または長いキャプションです。最大 2200 文字です。 |
| shortCaption | string | No | X と Threads で共有する短いキャプションです。X の標準的な重み付き 280 文字制限内に収められます。省略した場合は caption がデフォルトになります。 |
| addMadeWithCaption | boolean | No | 各キャプションの末尾に「Made with AITuber, the AI video generator: aituber.app」を追加します。デフォルト:true。各キャプションは、必要に応じてプラットフォームの制限内に収まるよう短縮されます。 |
| publishNow | boolean | No | すぐに公開する場合は true(デフォルト)に設定します。予約する場合は false に設定し、scheduledAt を指定します。 |
| scheduledAt | datetime (ISO 8601) | No | 公開を予約する ISO 8601 形式の日時です。未来の日時を指定する必要があります。publishNow が false の場合にのみ使用されます。 |
| channels | array of objects | Yes | 公開先のチャンネルを 1 つ以上指定します。各エントリーには、プラットフォーム固有の設定を含めることができます。 |
| channels[].channelId | string (uuid) | Yes | GET /channels で取得したチャンネル ID です。status: connected である必要があります。 |
| channels[].title | string | No | 動画タイトル(YouTube)です。最大 100 文字です。省略した場合は、生成時の動画タイトルが使用されます。 |
| channels[].tags | array of string | No | 検索で見つけてもらうための YouTube タグです。最大 30 個で、各タグは最大 100 文字です。 |
| channels[].categoryId | string | No | YouTube のカテゴリ ID です。デフォルト:「22」(People & Blogs)。一般的なカテゴリ:「24」Entertainment、「27」Education、「26」Howto & Style、「28」Science & Technology、「20」Gaming、「10」Music、「17」Sports、「1」Film & Animation、「23」Comedy。 |
| channels[].madeForKids | boolean | No | YouTube の COPPA 準拠フラグです。デフォルト:false。 |
| channels[].allowComment | boolean | No | 視聴者のコメントを許可します。デフォルト:true。TikTok と X のみ対応しています。TikTok ではコメントをオフにします。X には完全にオフにする設定がないため、返信をメンションしたアカウントに制限します。YouTube、Instagram、Facebook、Threads では無視されます。 |
| channels[].tiktokPrivacyStatus | public | friends | private | No | プライバシー設定です。デフォルト:「public」。 |
| channels[].allowDuet | boolean | No | デュエットを許可します。デフォルト:true。 |
| channels[].allowStitch | boolean | No | スティッチを許可します。デフォルト:true。 |
| channels[].isAiGenerated | boolean | No | TikTok で動画に AI 生成ラベルを付けます。デフォルト:false。 |
| channels[].instagramPlacement | reels | stories | timeline | No | Instagram:投稿先です。デフォルト:「reels」。 |
| channels[].shareToFeed | boolean | No | Instagram:リールをフィードにもシェアします。デフォルト:true。 |
GET /publications/{publicationId}
公開の現在のステータスを返します。
| Param | Type | Required | Description |
|---|---|---|---|
| publicationId | string (uuid) | Yes | POST /publications で取得した公開 ID です。 |
DELETE /publications/{publicationId}
公開前の、将来に予約された公開をキャンセルします。
| Param | Type | Required | Description |
|---|---|---|---|
| publicationId | string (uuid) | Yes | キャンセルする公開 ID です。 |
GET /subscription
現在のプランとクレジット残高を返します。
GET /background-videos
背景動画の一覧を取得します。認証は不要です。
| Param | Type | Required | Description |
|---|---|---|---|
| categorySlug | string | No | |
| cursor | string (uuid) | No |
GET /background-videos/categories
背景動画カテゴリの一覧を取得します。認証は不要です。
POST /uploads/confirm-background-video
背景動画のアップロードを確定します。認証は不要です。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| assetId | string (uuid) | はい | |
| title | string | はい |
クレジットコスト
| 操作 | コスト |
|---|---|
| 画像(ベーシック) | 1クレジット/画像 |
| 画像(高品質) | 5クレジット/画像 |
| 画像(プレミアム) | 10クレジット/画像 |
| 画像(最高品質) | 20クレジット/画像 |
| シーンごとの参照写真 | +3クレジット |
| 音声ナレーション | 約30クレジット/分 |
| AI 動画クリップ(ベーシック) | 5クレジット/秒(5秒のクリップあたり約25) |
| AI 動画クリップ(高品質) | 10クレジット/秒(5秒のクリップあたり約50) |
| AI 動画クリップ(プレミアム) | 26クレジット/秒(5秒のクリップあたり約130) |
| AI 動画クリップ(最高品質) | 30クレジット/秒(5秒のクリップあたり約150) |
| ストック映像 | 約50クレジット/分 |
| 背景動画 | 10クレジット/分、ナレーションは別途 |
| MP4 へのエクスポート | 無料 |
| 公開 | 無料 |
ベーシック画質で一般的な60秒の動画を作成する場合、約47クレジットかかります(ナレーション+画像約17枚)。生成する前に、GET /subscription で残高を確認してください。
エラー処理
| HTTP ステータス | 意味 |
|---|---|
| 400 | 不正なリクエスト(詳細はエラーメッセージを確認してください) |
| 401 | API キーがないか、無効です |
| 402 | クレジットが不足しています。レスポンスには creditsRequired と creditsAvailable が含まれます |
| 403 | この機能を利用するには、有効な有料サブスクリプションが必要です |
| 404 | リソースが見つかりません |
402 と 403 はプランまたはクレジットの制限であり、バグではありません
これらのレスポンスが返っても、データは失われず、クレジットも消費されません。単に失敗したと伝えて終了しないでください。不足しているものを平易な言葉で伝え、プランに含まれる内容を説明し、ユーザーがプランとクレジットを管理するページを案内してください:https://app.aituber.app/dashboard/billing。プランを推奨したり、価格を比較したり、アップグレードを勧めたりしないでください。購入はウェブサイトで行い、API からは行いません。
402 PAYMENT_REQUIRED は、クレジット残高が不足していることを意味します。creditsRequired と creditsAvailable で不足分がわかります。クレジットは有料プランに付属し、請求サイクルごとに追加されます。
より安価な方法はいつでも利用できます。短いスクリプトにする、mediaType: "video" の代わりに mediaType: "images" を使う、または imageQuality: "basic" を使う方法です。黙って品質を下げるのではなく、選択肢として提示してください。
403 PAID_PLAN_REQUIRED(エクスポート時のメッセージは PAID_PLAN_REQUIRED_FOR_EXPORT で、data.feature は export または other)は、アカウントに有料プランがないことを意味します。MP4 のダウンロード、AI クリップの単独生成、UGC リアクションクリップは、有料プランにのみ含まれます。プランが有効になったら、呼び出しを再試行してください。
403 PUBLISH_FEATURE_REQUIRED は、公開機能が Creator プラン以上に含まれることを意味します。公開自体にクレジットはかかりません。
クレジットやプランを購入するエンドポイントは、意図的に用意されていません。クレジットに有効期限はなく、GET /subscription は常に最新のプランと残高を返します。価格、割引、節約額、収益額をでっち上げないでください。API が返した内容だけを引用してください。
完全な例(bash)
# 1. Check credits
curl -s "https://app.aituber.app/api/v1/subscription" \
-H "Authorization: Bearer $AITUBER_API_KEY" | jq .
# 2. Browse voices
curl -s "https://app.aituber.app/api/v1/voices?gender=female&useCase=narration" | jq '.[0:3]'
# 3. Generate video (omit voiceId to use the default voice)
VIDEO_ID=$(curl -s -X POST "https://app.aituber.app/api/v1/videos/generate" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": "Did you know that octopuses have three hearts and blue blood?",
"imageStyleId": "cinematic",
"aspectRatio": "9:16"
}' | jq -r '.videoId')
echo "Video ID: $VIDEO_ID"
# 4. Poll until completed
while true; do
STATUS=$(curl -s "https://app.aituber.app/api/v1/videos/$VIDEO_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY" | jq -r '.status')
echo "Status: $STATUS"
if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then break; fi
sleep 10
done
# 5. Export to MP4
curl -s -X POST "https://app.aituber.app/api/v1/exports" \
-H "Authorization: Bearer $AITUBER_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"videoId\": \"$VIDEO_ID\"}"
# 6. Poll export status
while true; do
EXPORT_STATUS=$(curl -s "https://app.aituber.app/api/v1/videos/$VIDEO_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY" | jq -r '.exportStatus')
echo "Export: $EXPORT_STATUS"
if [ "$EXPORT_STATUS" = "completed" ] || [ "$EXPORT_STATUS" = "failed" ]; then break; fi
sleep 10
done
# 7. Download
DOWNLOAD_URL=$(curl -s "https://app.aituber.app/api/v1/exports/download?videoId=$VIDEO_ID" \
-H "Authorization: Bearer $AITUBER_API_KEY" | jq -r '.url')
curl -L -o video.mp4 "$DOWNLOAD_URL"
echo "Downloaded: video.mp4"