curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Kling V4 Flash
Kling V4 Flash 動画生成
テキスト、1 枚の開始画像、画像・動画参照からの生成、動画編集・延長に対応。720p のみ、生成時間 3~20 秒、24fps。
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
このエンドポイントは非同期で処理されます。送信後、返された
task_id を使い、GET /v1/tasks/{task_id} でタスクの状態と結果を取得してください。curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
モードの選択
5 つのモードはすべて同じモデル名kling-v4-flash を使用します。入力素材と omni_reference_task_type に応じてモードが選択されます。
| モード | 入力方法 |
|---|---|
| テキストから動画 | 画像・動画・音声素材を指定しない |
| 画像から動画 | first_frame_image、image_with_roles の first_frame、または image_urls の唯一の画像で開始フレームを 1 枚指定 |
| 参照素材から動画 | video_urls または image_with_roles の reference_image を指定。omni_reference_task_type: "reference" の明示も可能 |
| 動画編集 | omni_reference_task_type: "edit" と入力動画を指定 |
| 動画延長 | omni_reference_task_type: "extend" と入力動画を指定 |
omni_reference_task_type のデフォルトは auto で、省略時と同じです。reference を明示的に指定すると、image_urls の画像は参照画像として扱われます。
edit または extend を指定せずに video_url だけを渡すと HTTP 400 が返されます。動画を参照素材として使用する場合は video_urls を使ってください。リクエストヘッダー
string
必須
Bearer 認証:
Bearer <token>。<token> は APIMart API Key です。リクエストパラメータ
string
必須
kling-v4-flash を指定してください。string
生成・編集内容を記述します。画像からの生成のみ省略可能で、他のモードでは必須です。参照素材は各配列の順番で 1 から数え、
@Image1 / @Video1 で指定します。編集時の入力動画は @Video1、参照画像は @Image1、@Image2 などです。integer
3~20 の整数秒で、通常の既定値は 5。編集で省略すると入力時間を切り上げます。延長では追加部分の長さです。明示的な 0 は HTTP 400、null は省略と同じです。この整数時間で課金され、実際の動画は約 1 フレーム長くなる場合があります。integer
duration の別名で、規則は同じです。両方指定する場合は双方が 3~20 の範囲内で同じ値である必要があり、違反すると HTTP 400 です。string
デフォルト:"720p"
720p のみ。省略時も 720p です。1080p は HTTP 400。mode による品質区分の指定には対応しません。string
テキスト生成、参照生成、編集は
16:9、9:16、1:1、21:9 に対応し、auto は参照生成のみで使えます。画像からの生成では aspect_ratio / size を指定できず、空でない値は HTTP 400 になります。空文字列は省略扱いです。比率を変えるには開始画像を事前にトリミングしてください。| モード | デフォルトの動作 |
|---|---|
| テキストから動画 | 16:9 |
| 画像から動画 | aspect_ratio / size は指定不可。開始画像の比率に従い、変更する場合は事前にトリミング |
| 参照素材から動画 | auto |
| 動画編集 | 入力動画に従う |
| 動画延長 | このフィールドは指定不可。元の動画のアスペクト比を維持 |
string[]
画像からの生成では開始画像 1 枚のみ。2 枚は HTTP 400 です。参照生成・編集では最大 10 枚の参照画像です。画像のみを参照として使用する場合は
omni_reference_task_type: "reference" を明示してください。素材 URL は公開アクセス可能なものを使用します。開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。object[]
各要素に
url と role を指定します。画像からの生成は first_frame 1 枚のみ、参照生成・編集は reference_image を使います。終了・中間フレームは非対応です。参照画像は最大 10 枚、参照動画を含め合計 15 素材までです。開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。string
画像から動画の開始フレーム URL。
image_with_roles の first_frame、または image_urls の 1 枚目でも指定できます。開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。string[]
参照動画は最大 5 本、合計 20 秒以内。超過時は HTTP 400 となり、切り詰めは行いません。編集・延長ではタスク種別を明示し、
video_url の代わりに 1 本だけ指定することもできます。参照動画は MP4 / MOV のみ、幅・高さともに 700~4553px が必要です。長さはコンテナではなく動画ストリームで判定し、各動画は 3 秒以上、合計 20 秒以内にしてください。いずれかの参照動画が 3 秒未満の場合、送信時に HTTP 400 となり、課金されません。string
編集・延長の入力動画 URL。
omni_reference_task_type: "edit" または "extend" が必須で、省略時は HTTP 400。編集入力は 3~20 秒で、3 秒未満または 20 秒超は課金せず拒否されます。編集用動画は MP4 / MOV のみ、幅・高さともに 700~4553px が必要です。3~20 秒の制限はコンテナではなく動画ストリームの長さで判定します。形式、幅、高さ、編集入力の長さが範囲外の場合、送信時に HTTP 400 となり、課金されません。延長入力には編集モードの高さ制限と 3 秒の下限は適用されません。例えば 480p、2 秒の動画も延長できます。string
デフォルト:"auto"
auto、reference、edit、extend に対応しています。auto:素材に応じてテキスト・画像・参照素材からの生成を自動選択。省略時と同じです。reference:参照素材からの生成。image_urlsの画像を参照画像として扱います。edit:動画編集。入力動画が必要です。extend:動画延長。入力動画が必要です。
string
動画を含む参照生成用です。
origin は最初の参照動画の音声を保持し、auto は音声を再生成します。デフォルトは auto です。origin には参照動画が必要で、最初の参照動画に音声トラックがなければ出力にも付きません。編集では音声を再生成し、元の音声を保持しないため、編集リクエストではこのパラメータを省略してください。延長では指定できません。出力サイズとフレームレート
出力は720p 区分で、実際のピクセル数は比率によって異なります。フレームレートは 24fps です。実際の長さは duration より約 1 フレーム長くなる場合があり、3 秒の指定では約 3.04 秒になります。
| 比率 / モード | 実際のピクセル数 |
|---|---|
16:9 | 1280×720 |
9:16 | 720×1280 |
1:1 | 960×960 |
21:9 | 1464×628 |
| 画像から生成 | 開始画像の比率に従い、総画素数は約 0.92MP。例:1:2.5 の開始画像では 604×1516 |
リクエスト例
以下の素材 URL はプレースホルダーです。実際に外部からアクセス可能な URL に置き換えてください。画像から動画:開始フレーム 1 枚
{
"model": "kling-v4-flash",
"image_urls": [
"https://example.com/start.png"
]
}
prompt は省略可能です。終了・中間フレームや 2 枚目の画像には対応しません。
aspect_ratio / size は指定不可。開始画像の比率に従い、変更する場合は事前にトリミング。
開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。
参照素材から動画
{
"model": "kling-v4-flash",
"prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1.",
"image_with_roles": [
{
"url": "https://example.com/girl.png",
"role": "reference_image"
}
],
"video_urls": [
"https://example.com/camera.mp4"
],
"aspect_ratio": "auto",
"duration": 5
}
audio_setting: "origin" を追加します。origin の場合、最初の参照動画に音声トラックがなければ、出力にも音声トラックは付きません。
開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。
参照動画は MP4 / MOV のみ、幅・高さともに 700~4553px が必要です。長さはコンテナではなく動画ストリームで判定し、各動画は 3 秒以上、合計 20 秒以内にしてください。いずれかの参照動画が 3 秒未満の場合、送信時に HTTP 400 となり、課金されません。
動画編集
{
"model": "kling-v4-flash",
"prompt": "Change the scene to a snowy winter night.",
"omni_reference_task_type": "edit",
"video_url": "https://example.com/in.mp4",
"image_urls": [
"https://example.com/style.png"
]
}
duration を省略すると入力の長さを切り上げ、aspect_ratio を省略すると入力の比率に従います。編集では音声を再生成し、元の音声は保持しません。リクエストでは audio_setting を省略してください。
開始画像と参照画像は幅・高さともに 300px 以上、幅と高さの比率は 2:5~5:2 が必要です。条件を満たさない場合は送信時に HTTP 400 となり、課金されません。
編集用動画は MP4 / MOV のみ、幅・高さともに 700~4553px が必要です。3~20 秒の制限はコンテナではなく動画ストリームの長さで判定します。形式、幅、高さ、編集入力の長さが範囲外の場合、送信時に HTTP 400 となり、課金されません。
動画延長
{
"model": "kling-v4-flash",
"prompt": "The camera continues moving forward as the sky grows darker.",
"omni_reference_task_type": "extend",
"video_url": "https://example.com/in.mp4",
"duration": 5
}
aspect_ratio、audio_setting は指定できません。元の動画の比率を維持します。
延長入力には編集モードの高さ制限と 3 秒の下限は適用されません。例えば 480p、2 秒の動画も延長できます。
タスクの照会
以下のリクエストのタスク ID を、送信時に返された ID に置き換えてください。curl --request GET \
--url 'https://api.apimart.ai/v1/tasks/<task_id>' \
--header 'Authorization: Bearer <token>'
task_id を保存し、completed または failed まで照会を続けてください。720p・3 秒の動画は実測で約 1~4 分でしたが、目安です。固定時間を過ぎただけで失敗と判断しないでください。
料金
秒単位で課金します。単価はモデル料金を参照してください。通常生成と動画入力は別の単価です。| モード | 課金対象の秒数 |
|---|---|
| テキスト生成、画像生成、画像のみの参照生成 | 出力秒数;kling-v4-flash@720P |
| 動画延長 | 追加部分の秒数;kling-v4-flash@720P |
| 動画編集、参照動画を使用した生成 | 出力秒数 + max(出力秒数, 入力動画秒数);kling-v4-flash@720P-input |
duration: 3 で編集すると、課金秒数は 3 + 4 = 7 秒です。編集と動画を含む参照生成では、送信時に形式、幅、高さ、動画ストリームの長さを調べます。取得失敗、MP4 / MOV 以外、幅または高さが 700~4553px の範囲外、合計 20 秒超、編集入力が 3 秒未満の場合は HTTP 400 となり、課金されません。各参照動画は動画ストリームの長さで判定し、3 秒未満の場合は送信時に HTTP 400 となり、課金されません。
失敗タスクは全額返金され、プラットフォーム側のタイムアウト判定も対象です。クライアントが照会を停止してもタスクはキャンセルされません。その後成功した場合は通常通り課金されます。
非対応のパラメータ
以下のパラメータや値は HTTP 400 になります。resolution: "1080p"last_frame_image,role: "last_frame",role: "keyframe"audio_urls,audio_urlmode,negative_prompt,watermark: true,audio: falsemulti_shot,multi_prompt,element_list,video_listcamera_control,voice_list
よくあるエラー
| エラー | 対処方法 |
|---|---|
kling-v4-flash only supports resolution 720p (got: 1080p) | 720p を使用し、1080p を指定しないでください。 |
kling-v4-flash duration must be between 3 and 20 seconds | duration / seconds は 3~20 の整数。0 は指定できません。 |
kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size | 画像からの生成では aspect_ratio / size を削除してください。比率は開始画像に従うため、変更するには事前にトリミングします。 |
kling-v4-flash first frame: image width and height must be at least 300px | 開始画像と参照画像は幅・高さともに 300px 以上が必要です。 |
kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2 | 画像の幅と高さの比率を 2:5~5:2 にしてください。 |
kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov) | 編集・参照動画は MP4 / MOV を使用してください。WebM / MKV は非対応です。 |
kling-v4-flash input video #1: video height must be between 700 and 4553px | 編集・参照動画は幅・高さともに 700~4553px が必要です。この制限は延長入力には適用されません。 |
kling-v4-flash input video #1: video width must be between 700 and 4553px | 編集・参照動画は幅・高さともに 700~4553px が必要です。縦向き動画の幅も 700px 以上にしてください。 |
kling-v4-flash reference video #1 must be at least 3 seconds | 各参照動画の動画ストリームは 3 秒以上が必要です。3 秒未満の場合、送信時に HTTP 400 となり、課金されません。 |
kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto) | auto は参照生成のみ対応します。画像からの生成では比率のフィールドを省略してください。 |
kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported | 開始画像 1 枚だけにし、終了・中間フレームや 2 枚目を除去します。 |
kling-v4-flash reference-to-video does not take reference audios | audio_urls / audio_url を除去します。 |
kling-v4-flash video extend takes no images | 延長リクエストから画像・目標終了フレームを除去します。 |
kling-v4-flash input videos must be at most 20 seconds in total | 参照動画の合計または編集入力は 20 秒以内。自動切り詰めはありません。 |
video edit requires an input video of at least 3 seconds | 動画ストリームの長さが 3 秒以上の編集入力を使用してください。コンテナの長さでは判定しません。 |
video_url needs omni_reference_task_type edit ... or extend | edit / extend を明示します。参照動画は video_urls に指定します。 |
Failed to probe the input video duration | URL がアクセス可能で、有効な動画を返すか確認します。 |
duration (3) and seconds (5) are aliases and must match | 別名は片方だけ指定するか、両方を同じ 3~20 の値にします。 |