curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"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",
"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",
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
Kling V4 Videogenerierung
Text-zu-Video, Bild-zu-Video, referenzbasierte Generierung, Videobearbeitung und Verlängerung. 3–30 Sekunden in 720p / 1080p, immer mit Stereoton.
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",
"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",
"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",
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());
Dieser Endpunkt arbeitet asynchron. Verwenden Sie nach dem Absenden die zurückgegebene
task_id mit GET /v1/videos/generations/{task_id}, um Status und Ergebnis abzufragen.curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4",
"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",
"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",
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());
Modusauswahl
Alle fünf Modi verwenden denselben Modellnamenkling-v4. Der Modus wird anhand der übergebenen Medien und von omni_reference_task_type ausgewählt.
| Modus | Eingabe |
|---|---|
| Text-zu-Video | Keine Bilder, Videos oder Audiodateien übergeben |
| Bild-zu-Video | Ein Startbild, optional ein Endbild und bis zu 8 Zwischenbilder |
| Referenzbasierte Generierung | video_urls, audio_urls oder reference_image in image_with_roles übergeben; alternativ explizit omni_reference_task_type: "reference" setzen |
| Videobearbeitung | omni_reference_task_type: "edit" setzen und ein Eingabevideo übergeben |
| Videoverlängerung | omni_reference_task_type: "extend" setzen und ein Eingabevideo übergeben |
omni_reference_task_type ist standardmäßig auto, gleichbedeutend mit dem Weglassen des Feldes. Bei explizitem reference werden Bilder in image_urls als Referenzbilder behandelt.
Wird nur
video_url ohne edit oder extend übergeben, liefert die Anfrage HTTP 400. Verwenden Sie video_urls, um ein Video als Referenz zu übergeben.Anfrage-Header
string
erforderlich
Bearer-Authentifizierung:
Bearer <token>, wobei <token> Ihr APIMart API Key ist.Anfrageparameter
string
erforderlich
Muss
kling-v4 sein.string
Beschreibung des zu generierenden oder zu bearbeitenden Inhalts. Für Bild-zu-Video optional, für alle anderen Modi erforderlich.Bei referenzbasierter Generierung verweisen
@Image1, @Video1 und @Audio1 auf die Medien, jeweils ab 1 in der Reihenfolge des entsprechenden Arrays. Bei der Videobearbeitung ist das Eingabevideo @Video1; Referenzbilder sind @Image1, @Image2 usw.integer
Generierte Dauer in Sekunden:
3–30, Standardwert 5.- Videobearbeitung: Ohne Angabe folgt die Ausgabedauer dem Eingabevideo.
- Videoverlängerung: Dauer des neuen Abschnitts. Zurückgegeben wird das vollständige Video aus Original und neuem Abschnitt.
string
Standard:"720p"
Ausgabeauflösung:
720p oder 1080p. Verwenden Sie dieses Feld zur Auswahl der Auflösung; V4 unterstützt mode nicht.string
Unterstützt
16:9, 9:16, 1:1 und 21:9; referenzbasierte Generierung unterstützt zusätzlich auto.| Modus | Standardverhalten |
|---|---|
| Text-zu-Video | 16:9 |
| Bild-zu-Video | Folgt dem Startbild |
| Referenzbasierte Generierung | auto |
| Videobearbeitung | Folgt dem Eingabevideo |
| Videoverlängerung | Dieses Feld wird nicht unterstützt; das ursprüngliche Seitenverhältnis bleibt erhalten |
string[]
Liste von Bild-URLs; die Bedeutung hängt vom Modus ab:
- Bild-zu-Video: Das erste Bild ist das Startbild, das zweite das Endbild; maximal 2 Bilder.
- Referenzbasierte Generierung und Videobearbeitung: bis zu 10 Referenzbilder. Bei Generierung nur mit Referenzbildern explizit
omni_reference_task_type: "reference"setzen.
object[]
Bilderliste mit Rollen. Jeder Eintrag enthält
Bei Bild-zu-Video dürfen Startbild, Endbild und Zwischenbilder zusammen maximal 10 Bilder ergeben.
url und role.role | Verwendung |
|---|---|
first_frame | Startbild für Bild-zu-Video; genau 1 erforderlich |
last_frame | Endbild für Bild-zu-Video oder Ziel-Endbild bei Verlängerung |
keyframe | Zwischenbild für Bild-zu-Video; auch middle_frame wird akzeptiert. Verwendung in Array-Reihenfolge, maximal 8 Bilder |
reference_image | Referenzbild für referenzbasierte Generierung |
string
URL des Startbilds für Bild-zu-Video. Auch als
first_frame in image_with_roles oder als erstes Bild in image_urls übergebbar.string
URL des Endbilds für Bild-zu-Video oder des Ziel-Endbilds bei Verlängerung.
string[]
Referenzvideos für referenzbasierte Generierung: maximal 5 Clips; insgesamt werden höchstens 30 Sekunden verwendet.Für Videobearbeitung oder Verlängerung kann alternativ genau 1 Video-URL anstelle von
video_url übergeben werden, mit omni_reference_task_type: "edit" oder "extend".string
URL des Eingabevideos für Bearbeitung oder Verlängerung. Erfordert
omni_reference_task_type: "edit" oder "extend".Für die Bearbeitung muss das Eingabevideo mindestens 3 Sekunden lang sein; kürzere Videos führen zu HTTP 400. Bei mehr als 30 Sekunden werden die ersten 30 Sekunden verwendet.string[]
Referenzaudio für referenzbasierte Generierung: maximal 3 Clips mit jeweils 5–30 Sekunden.Referenzbilder, Referenzvideos und Referenzaudios dürfen bei referenzbasierter Generierung zusammen maximal 15 Medien ergeben.
string
Standard:"auto"
Unterstützt
auto, reference, edit und extend.auto: Wählt anhand der Medien Text-zu-Video, Bild-zu-Video oder referenzbasierte Generierung; entspricht dem Weglassen des Feldes.reference: Referenzbasierte Generierung; Bilder inimage_urlswerden als Referenzen behandelt.edit: Videobearbeitung; erfordert ein Eingabevideo.extend: Videoverlängerung; erfordert ein Eingabevideo.
string
Unterstützt
origin (Originalton des Eingabevideos beibehalten) und auto (neuen Ton generieren). Nur für Videobearbeitung oder referenzbasierte Generierung mit Referenzvideos.- Videobearbeitung: Behält standardmäßig den Originalton bei;
autogeneriert neuen Ton. - Referenzbasierte Generierung mit Referenzvideos: Generiert standardmäßig neuen Ton;
originbehält den Ton des Referenzvideos bei. - Videoverlängerung: Dieses Feld wird nicht unterstützt. Der Originalton bleibt erhalten; für den neuen Abschnitt wird automatisch Ton generiert.
Anfragebeispiele
Die folgenden Medien-URLs sind Platzhalter. Ersetzen Sie diese durch echte, öffentlich erreichbare URLs.Bild-zu-Video: Start- und Endbild
{
"model": "kling-v4",
"prompt": "The camera slowly moves closer",
"image_urls": ["https://example.com/start.png", "https://example.com/end.png"]
}
prompt ist bei Bild-zu-Video optional.
Bild-zu-Video: Start-, Zwischen- und Endbilder
{
"model": "kling-v4",
"prompt": "A girl walks from the window to the door, then looks back and smiles",
"image_with_roles": [
{"url": "https://example.com/1.png", "role": "first_frame"},
{"url": "https://example.com/2.png", "role": "keyframe"},
{"url": "https://example.com/3.png", "role": "keyframe"},
{"url": "https://example.com/4.png", "role": "last_frame"}
],
"duration": 10
}
Referenzbasierte Generierung
{
"model": "kling-v4",
"prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1 and background music from @Audio1",
"image_with_roles": [
{"url": "https://example.com/girl.png", "role": "reference_image"}
],
"video_urls": ["https://example.com/camera.mp4"],
"audio_urls": ["https://example.com/bgm.mp3"],
"aspect_ratio": "auto",
"duration": 5
}
Videobearbeitung
{
"model": "kling-v4",
"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 und aspect_ratio folgen Ausgabedauer und Seitenverhältnis dem Eingabevideo. Der Originalton bleibt standardmäßig erhalten; audio_setting: "auto" generiert neuen Ton.
Videoverlängerung
{
"model": "kling-v4",
"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
}
last_frame_image oder last_frame in image_with_roles übergeben werden. Verlängerung unterstützt weder aspect_ratio noch audio_setting.
Aufgabe abfragen
Ersetzen Sie die Aufgaben-ID in der folgenden Anfrage durch die beim Absenden zurückgegebene ID:curl --request GET \
--url 'https://api.apimart.ai/v1/videos/generations/<task_id>' \
--header 'Authorization: Bearer <token>'
Abrechnung
Abrechnung pro Sekunde. Preise finden Sie unter Modellpreise.720p und 1080p haben separate Preise.
Für Videobearbeitung und referenzbasierte Generierung mit Referenzvideos gilt der Tarif für Videoeingaben. Für die übrigen Modi gilt der reguläre Generierungstarif.
| Modus | Abgerechnete Sekunden |
|---|---|
| Text-zu-Video, Bild-zu-Video, referenzbasierte Generierung nur mit Bildern oder Audio | Ausgabesekunden |
| Videoverlängerung | Sekunden des neuen Abschnitts |
| Videobearbeitung, referenzbasierte Generierung mit Referenzvideos | Ausgabesekunden + max(Ausgabesekunden, Eingabevideosekunden) |
duration ergibt 4 Sekunden Ausgabe; abgerechnet werden 4 + 4 = 8 Sekunden.
Bei Bearbeitung und referenzbasierter Generierung mit Referenzvideos wird die Eingabevideodauer beim Absenden ermittelt. Schlägt dies fehl, wird HTTP 400 ohne Berechnung zurückgegeben. Fehlgeschlagene Generierungen werden vollständig erstattet.
Nicht unterstützte Parameter
Die folgenden Parameter oder Werte führen zu HTTP 400:mode: V4 hat keine Stufenstd,prooder4k. Verwenden Sieresolution.negative_prompt,watermark: true,audio: false.multi_shot,multi_prompt,element_list,video_list.camera_control,voice_list.
Häufige Fehler
| Fehler | Maßnahme |
|---|---|
video_url needs omni_reference_task_type edit ... or extend | Bei video_url explizit edit oder extend angeben; für Referenzvideos video_urls verwenden |
image-to-video requires exactly 1 first frame | Genau 1 Startbild übergeben; nur End- oder Zwischenbilder reichen nicht aus |
first frame, last frame and keyframes together are at most 10 images | Start-, End- und Zwischenbilder auf insgesamt maximal 10 reduzieren |
reference images, videos and audios together are at most 15 files | Referenzmedien auf insgesamt maximal 15 reduzieren |
video edit requires an input video of at least 3 seconds | Ein Eingabevideo mit mindestens 3 Sekunden verwenden |
Failed to probe the input video duration | Prüfen, ob die URL erreichbar ist und auf eine gültige Videodatei verweist |
has no std/pro/4k mode | mode entfernen und resolution verwenden |
Could not download the input from ... (HTTP 403) | Eine öffentlich erreichbare Medien-URL ohne Hotlink-Schutz verwenden |