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 Генерация видео
Видео по тексту, одному начальному кадру, изображениям и видеореференсам, редактирование и продолжение. Только 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());
Выбор режима
Во всех пяти режимах используется одно имя модели —kling-v4-flash. Режим выбирается по переданным материалам и omni_reference_task_type.
| Режим | Входные данные |
|---|---|
| Генерация по тексту | Без изображений, видео и аудио |
| Генерация по изображению | Ровно один первый кадр через first_frame_image, first_frame в image_with_roles либо единственное изображение в image_urls |
| Генерация по референсам | Передать video_urls или reference_image в image_with_roles; также можно явно задать omni_reference_task_type: "reference" |
| Редактирование видео | Укажите omni_reference_task_type: "edit" и входное видео |
| Продление видео | Укажите omni_reference_task_type: "extend" и входное видео |
omni_reference_task_type по умолчанию — auto, что равнозначно отсутствию поля. При явном reference изображения из image_urls используются как референсы.
Если передать только
video_url без edit или extend, возвращается HTTP 400. Чтобы использовать видео как референс, передайте его в video_urls.Заголовки запроса
string
обязательно
Аутентификация Bearer:
Bearer <token>, где <token> — ваш API-ключ APIMart.Параметры запроса
string
обязательно
Должно быть
kling-v4-flash.string
Описание генерации или редактирования. Необязателен только при генерации по изображению. Ссылки на материалы:
@Image1 / @Video1, нумерация с 1 по порядку каждого массива. При редактировании входное видео — @Video1, изображения — @Image1, @Image2 и далее.integer
Целые секунды от
3 до 20, обычно по умолчанию 5. При редактировании без этого поля используется длительность входа с округлением вверх. При продолжении это длина добавленного фрагмента. Явный 0 возвращает HTTP 400, null равен отсутствию поля. Оплата по этому целому числу; файл может быть примерно на один кадр длиннее.integer
Псевдоним
duration с теми же правилами. Если переданы оба поля, каждое должно быть в пределах 3–20, а значения должны совпадать, иначе HTTP 400.string
по умолчанию:"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[]
Генерация по изображению принимает один первый кадр; два изображения возвращают HTTP 400. В режиме референсов и редактирования — до 10 референсов. Для генерации только по референсным изображениям явно задайте
omni_reference_task_type: "reference". URL должны быть публично доступны. Ширина и высота первого кадра и референсных изображений должны быть не менее 300px, а соотношение ширины к высоте — от 2:5 до 5:2. Нарушение возвращает HTTP 400 при отправке без списания средств.object[]
Каждый элемент содержит
url и role. Генерация по изображению принимает ровно один first_frame; референсы и редактирование используют reference_image. Последние и промежуточные кадры не поддерживаются. До 10 изображений и суммарно до 15 материалов с учётом видеореференсов. Ширина и высота первого кадра и референсных изображений должны быть не менее 300px, а соотношение ширины к высоте — от 2:5 до 5:2. Нарушение возвращает HTTP 400 при отправке без списания средств.string
URL первого кадра для генерации по изображению. Его также можно передать как
first_frame в image_with_roles или первым изображением в image_urls. Ширина и высота первого кадра и референсных изображений должны быть не менее 300px, а соотношение ширины к высоте — от 2:5 до 5:2. Нарушение возвращает HTTP 400 при отправке без списания средств.string[]
До 5 видеореференсов общей длительностью не более 20 секунд. Превышение возвращает HTTP 400, без обрезки. Для редактирования или продолжения можно передать ровно один элемент вместо
video_url, явно задав соответствующий тип задачи.Видеореференсы: только MP4 / MOV, ширина и высота — каждая в пределах 700–4553px. Длительность определяется по видеопотоку, а не контейнеру: не менее 3 секунд на клип и не более 20 секунд суммарно. Если хотя бы один видеореференс короче 3 секунд, при отправке возвращается HTTP 400 без списания средств.string
Входное видео для редактирования или продолжения. Обязательно явно задать
omni_reference_task_type: "edit" или "extend", иначе HTTP 400. Вход для редактирования должен длиться 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 создаёт новый звук и используется по умолчанию. Для origin нужен видеореференс; если в первом нет аудиодорожки, её не будет и в результате. Редактирование создаёт новый звук и не сохраняет исходный; не передавайте этот параметр при редактировании. Продолжение его не поддерживает.Размеры результата и частота кадров
Используется уровень720p; фактические размеры в пикселях зависят от соотношения сторон. Частота — 24fps. Файл может быть примерно на один кадр длиннее duration: например, запрос на 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 материалов ниже приведены для примера. Замените их реальными общедоступными адресами.Генерация по изображению: один первый кадр
{
"model": "kling-v4-flash",
"image_urls": [
"https://example.com/start.png"
]
}
prompt необязателен. Последние, промежуточные кадры и второе изображение не поддерживаются.
Не передавайте 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. По результатам тестов 3-секундное видео 720p занимает около 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 секунд. Более короткие клипы возвращают 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 | Оставьте один первый кадр; удалите последние, промежуточные или второе изображение. |
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 в обоих. |