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 Génération de vidéos
Génération depuis du texte, une image initiale ou des références image/vidéo, montage et prolongation. 720p uniquement, 3–20 secondes générées, 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());
Ce point de terminaison est asynchrone. Après l’envoi, utilisez le
task_id renvoyé avec GET /v1/tasks/{task_id} pour consulter l’état et le résultat de la tâche.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());
Choix du mode
Les cinq modes utilisent le même nom de modèle,kling-v4-flash. Le mode est choisi selon les médias fournis et omni_reference_task_type.
| Mode | Entrée |
|---|---|
| Texte-vidéo | Aucun média image, vidéo ou audio |
| Image-vidéo | Une seule image initiale via first_frame_image, first_frame dans image_with_roles, ou l’unique image de image_urls |
| Génération à partir de références | Fournir video_urls ou reference_image dans image_with_roles, ou définir explicitement omni_reference_task_type: "reference" |
| Montage vidéo | Définir omni_reference_task_type: "edit" et fournir une vidéo d’entrée |
| Prolongement vidéo | Définir omni_reference_task_type: "extend" et fournir une vidéo d’entrée |
omni_reference_task_type vaut auto par défaut, ce qui équivaut à l’omettre. Avec la valeur explicite reference, les images de image_urls sont traitées comme des références.
Fournir uniquement
video_url sans préciser edit ou extend renvoie HTTP 400. Pour utiliser une vidéo comme référence, utilisez video_urls.En-têtes de requête
string
requis
Authentification Bearer :
Bearer <token>, où <token> est votre clé API APIMart.Paramètres de requête
string
requis
Doit être
kling-v4-flash.string
Décrivez le contenu à générer ou modifier. Facultatif seulement pour image vers vidéo. Utilisez
@Image1 / @Video1 pour les références, numérotées à partir de 1 dans chaque tableau. En montage, la vidéo d’entrée est @Video1, les images sont @Image1, @Image2, etc.integer
Secondes entières de
3 à 20, généralement 5 par défaut. En montage, l’omission reprend la durée d’entrée arrondie au supérieur. En prolongation, il s’agit du segment ajouté. 0 explicite renvoie HTTP 400 ; null équivaut à l’omission. La facturation utilise cette durée entière ; le fichier peut dépasser d’environ une image.integer
Alias de
duration, avec les mêmes règles. Si les deux sont fournis, chacun doit être entre 3 et 20 et les valeurs doivent être identiques, sinon HTTP 400.string
défaut:"720p"
Uniquement
720p, valeur par défaut. 1080p renvoie HTTP 400. La sélection d’un niveau via mode n’est pas prise en charge.string
La génération depuis du texte, la génération avec références et le montage acceptent
16:9, 9:16, 1:1 et 21:9 ; seul le mode avec références accepte auto. La génération depuis une image n’accepte ni aspect_ratio ni size : toute valeur non vide renvoie HTTP 400, une chaîne vide équivaut à une omission. Recadrez l’image initiale au préalable pour changer le ratio.| Mode | Comportement par défaut |
|---|---|
| Texte-vidéo | 16:9 |
| Image-vidéo | Omettre aspect_ratio / size ; suit l’image initiale. La recadrer au préalable pour changer le ratio |
| Génération à partir de références | auto |
| Montage vidéo | Suit la vidéo d’entrée |
| Prolongement vidéo | Ce champ n’est pas accepté ; le rapport d’aspect original est conservé |
string[]
Image vers vidéo accepte une seule image initiale ; deux images renvoient HTTP 400. En génération par références ou montage, jusqu’à 10 images de référence. Pour des références uniquement visuelles, définissez
omni_reference_task_type: "reference". Les URL doivent être publiques. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.object[]
Chaque élément contient
url et role. Image vers vidéo exige un seul first_frame ; références et montage utilisent reference_image. Les images finales et intermédiaires ne sont pas prises en charge. Jusqu’à 10 images de référence, pour 15 médias au total avec les vidéos. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.string
URL de l’image initiale pour image-vidéo. Peut aussi être fournie via
first_frame dans image_with_roles, ou comme première image de image_urls. Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.string[]
Jusqu’à 5 vidéos de référence, totalisant au plus 20 secondes. Un dépassement renvoie HTTP 400, sans découpage. Pour le montage ou la prolongation, une seule entrée peut remplacer
video_url avec un type de tâche explicite.Les vidéos de référence doivent être au format MP4 / MOV, avec une largeur et une hauteur comprises chacune entre 700 et 4553px. La durée est celle du flux vidéo, pas du conteneur : au moins 3 secondes par vidéo et au plus 20 secondes au total. Toute vidéo de référence de moins de 3 secondes renvoie HTTP 400 à la soumission, sans facturation.string
Vidéo d’entrée pour montage ou prolongation. Exige
omni_reference_task_type: "edit" ou "extend", sinon HTTP 400. L’entrée de montage doit durer 3–20 secondes. En dehors de cette plage, elle est refusée sans facturation.Le montage accepte les vidéos MP4 / MOV dont la largeur et la hauteur sont chacune comprises entre 700 et 4553px. La limite de 3–20 secondes porte sur le flux vidéo, pas sur le conteneur. Un format, une largeur, une hauteur ou une durée d’entrée non conforme renvoie HTTP 400 à la soumission, sans facturation.Les entrées de prolongation ne sont pas soumises à la plage de hauteur ni au minimum de 3 secondes du montage. Par exemple, une vidéo 480p de 2 secondes peut être prolongée.string
défaut:"auto"
Valeurs prises en charge :
auto, reference, edit et extend.auto: choisit texte-vidéo, image-vidéo ou génération à partir de références selon les médias ; équivaut à omettre le champ.reference: génération à partir de références ; les images deimage_urlssont traitées comme des références.edit: montage vidéo ; nécessite une vidéo d’entrée.extend: prolongement vidéo ; nécessite une vidéo d’entrée.
string
Pour la génération avec références vidéo :
origin conserve le son de la première vidéo de référence ; auto génère un nouveau son et constitue la valeur par défaut. origin exige une vidéo de référence. Si la première vidéo n’a pas de piste audio, la sortie n’en aura pas non plus. Le montage régénère le son sans conserver l’original ; omettez ce paramètre dans les requêtes de montage. La prolongation ne l’accepte pas.Dimensions de sortie et fréquence d’images
La sortie utilise le niveau720p ; les dimensions réelles en pixels varient selon le ratio. La fréquence est de 24fps. Le fichier peut dépasser duration d’environ une image : une demande de 3 secondes produit environ 3.04 secondes.
| Ratio / mode | Dimensions réelles en pixels |
|---|---|
16:9 | 1280×720 |
9:16 | 720×1280 |
1:1 | 960×960 |
21:9 | 1464×628 |
| Depuis une image | Suit l’image initiale, environ 0.92MP au total ; une image 1:2.5 produit 604×1516 |
Exemples de requêtes
Les URL ci-dessous sont des exemples fictifs. Remplacez-les par des URL réelles et accessibles publiquement.Image vers vidéo : une seule image initiale
{
"model": "kling-v4-flash",
"image_urls": [
"https://example.com/start.png"
]
}
prompt est facultatif. Les images finales, intermédiaires ou une seconde image ne sont pas prises en charge.
Omettre aspect_ratio / size ; suit l’image initiale. La recadrer au préalable pour changer le ratio.
Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.
Génération à partir de références
{
"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" pour conserver le son de la première vidéo de référence. Avec origin, si la première vidéo de référence n’a pas de piste audio, la sortie n’en aura pas non plus.
Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.
Les vidéos de référence doivent être au format MP4 / MOV, avec une largeur et une hauteur comprises chacune entre 700 et 4553px. La durée est celle du flux vidéo, pas du conteneur : au moins 3 secondes par vidéo et au plus 20 secondes au total. Toute vidéo de référence de moins de 3 secondes renvoie HTTP 400 à la soumission, sans facturation.
Montage vidéo
{
"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, la durée d’entrée est arrondie au supérieur ; sans aspect_ratio, le ratio d’entrée est conservé. Le montage régénère le son sans conserver le son original. Omettez audio_setting dans la requête.
Les images initiales et de référence doivent mesurer au moins 300px en largeur et en hauteur, avec un rapport largeur:hauteur compris entre 2:5 et 5:2. Sinon, la soumission renvoie HTTP 400 sans facturation.
Le montage accepte les vidéos MP4 / MOV dont la largeur et la hauteur sont chacune comprises entre 700 et 4553px. La limite de 3–20 secondes porte sur le flux vidéo, pas sur le conteneur. Un format, une largeur, une hauteur ou une durée d’entrée non conforme renvoie HTTP 400 à la soumission, sans facturation.
Prolongement vidéo
{
"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 et audio_setting ne sont pas acceptés ; le ratio original est conservé.
Les entrées de prolongation ne sont pas soumises à la plage de hauteur ni au minimum de 3 secondes du montage. Par exemple, une vidéo 480p de 2 secondes peut être prolongée.
Consulter une tâche
Remplacez l’identifiant de tâche dans la requête suivante par celui renvoyé à l’envoi :curl --request GET \
--url 'https://api.apimart.ai/v1/tasks/<task_id>' \
--header 'Authorization: Bearer <token>'
task_id et continuez jusqu’à completed ou failed. Une vidéo 720p de 3 secondes a pris environ 1–4 minutes lors des tests : il s’agit d’une indication, pas d’un délai fixe permettant de conclure à un échec.
Facturation
Facturation à la seconde ; consultez les tarifs des modèles. La génération standard et l’entrée vidéo ont des tarifs distincts.| Mode | Secondes facturées |
|---|---|
| Texte vers vidéo, image vers vidéo, références uniquement images | Secondes de sortie ; kling-v4-flash@720P |
| Prolongation vidéo | Secondes ajoutées ; kling-v4-flash@720P |
| Montage vidéo, génération avec vidéos de référence | Secondes de sortie + max(secondes de sortie, secondes vidéo en entrée) ; kling-v4-flash@720P-input |
duration: 3 est facturé 3 + 4 = 7 secondes. Le montage et la génération avec références vidéo vérifient le format, la largeur, la hauteur et la durée du flux vidéo à la soumission. Échec de vérification, format autre que MP4 / MOV, largeur ou hauteur hors de 700–4553px, total supérieur à 20 secondes ou entrée de montage inférieure à 3 secondes : HTTP 400 sans facturation. Chaque vidéo de référence est évaluée selon la durée de son flux vidéo ; si elle dure moins de 3 secondes, la soumission renvoie HTTP 400 sans facturation.
Les tâches échouées sont intégralement remboursées, y compris celles déclarées expirées par la plateforme. Arrêter les consultations côté client n’annule pas la tâche : si elle réussit ensuite, elle est facturée normalement.
Paramètres non pris en charge
Les paramètres ou valeurs suivants renvoient 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
Erreurs courantes
| Erreur | Solution |
|---|---|
kling-v4-flash only supports resolution 720p (got: 1080p) | Utilisez 720p, pas 1080p. |
kling-v4-flash duration must be between 3 and 20 seconds | duration / seconds doit être un entier de 3 à 20, jamais 0. |
kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size | Supprimez aspect_ratio / size pour la génération depuis une image. Le ratio suit l’image initiale ; recadrez-la avant l’envoi pour le changer. |
kling-v4-flash first frame: image width and height must be at least 300px | Les images initiales et de référence doivent mesurer au moins 300px sur chaque axe. |
kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2 | Utilisez un rapport largeur:hauteur compris entre 2:5 et 5:2. |
kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov) | Utilisez MP4 / MOV pour le montage et les références vidéo ; WebM / MKV ne sont pas pris en charge. |
kling-v4-flash input video #1: video height must be between 700 and 4553px | Les vidéos de montage et de référence doivent avoir une largeur et une hauteur comprises chacune entre 700 et 4553px. Cette plage ne concerne pas les entrées de prolongation. |
kling-v4-flash input video #1: video width must be between 700 and 4553px | La largeur et la hauteur des vidéos de montage et de référence doivent chacune être comprises entre 700 et 4553px. Les vidéos verticales doivent aussi mesurer au moins 700px de large. |
kling-v4-flash reference video #1 must be at least 3 seconds | Le flux vidéo de chaque référence doit durer au moins 3 secondes. Les vidéos plus courtes renvoient HTTP 400 à la soumission, sans facturation. |
kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto) | Seule la génération avec références accepte auto ; omettez les champs de ratio pour la génération depuis une image. |
kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported | Gardez une seule image initiale ; retirez les images finales/intermédiaires ou la seconde image. |
kling-v4-flash reference-to-video does not take reference audios | Retirez audio_urls / audio_url. |
kling-v4-flash video extend takes no images | Retirez les images et l’image finale cible de la prolongation. |
kling-v4-flash input videos must be at most 20 seconds in total | Le total des références vidéo ou l’entrée de montage ne doit pas dépasser 20 secondes. Aucun découpage automatique. |
video edit requires an input video of at least 3 seconds | Utilisez une entrée de montage dont le flux vidéo dure au moins 3 secondes, sans vous baser sur la durée du conteneur. |
video_url needs omni_reference_task_type edit ... or extend | Précisez edit / extend ; placez les références vidéo dans video_urls. |
Failed to probe the input video duration | Vérifiez l’accessibilité de l’URL et la validité du fichier vidéo. |
duration (3) and seconds (5) are aliases and must match | Envoyez un seul alias, ou deux valeurs identiques comprises entre 3 et 20. |