curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": True,
"nsfw_check": True,
"return_last_frame": True
}
)
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": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KZOEEXAMPLE"
}
]
}
apimart-zoe
apimart-zoe Videogenerierung
Videos aus Text, Frames sowie Bild-, Video- und Audioreferenzen erzeugen und bearbeiten: 480p–4k, letztes Frame als Bild, MOV und Entwurf-zu-Finalvideo.
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": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": True,
"nsfw_check": True,
"return_last_frame": True
}
)
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": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KZOEEXAMPLE"
}
]
}
Diese API arbeitet asynchron. Lesen Sie nach dem Absenden
data[0].task_id aus und rufen Sie den Aufgabenstatus ab. Die Generierung dauert meist 1–3 Minuten; fragen Sie alle 5–10 Sekunden ab. Die tatsächliche Dauer hängt von der Aufgabe ab.curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": True,
"nsfw_check": True,
"return_last_frame": True
}
)
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": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"resolution": "1080p",
"aspect_ratio": "16:9",
"duration": 8,
"audio": true,
"nsfw_check": true,
"return_last_frame": true
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KZOEEXAMPLE"
}
]
}
Modus wählen
| Modus | Parameter |
|---|---|
| Text zu Video | prompt ohne Medien übergeben. |
| Start-/Endbild zu Video | Die Rollen first_frame und optional last_frame in image_with_roles oder first_frame_image / last_frame_image verwenden. |
| Referenzen zu Video | Referenzbilder oder -videos, optional mit Audioreferenzen. Audio allein ist nicht möglich. |
| Entwurf | draft: true für eine Ausgabe in 480p. |
| Finales Video | draft_task_id eines erfolgreichen Entwurfs für 1080p verwenden. |
| Videobearbeitung | omni_reference_task_type: "edit" mit mindestens einem Quellvideo. Dauer und Seitenverhältnis folgen der Quelle. |
Header
string
erforderlich
Bearer-Authentifizierung:
Bearer <token>, wobei <token> Ihr APIMart-API-Schlüssel ist. Senden Sie den Body mit Content-Type: application/json.Anfrageparameter
string
erforderlich
Immer
apimart-zoe.string
Bis zu 204.800 Zeichen. Für Text-zu-Video erforderlich; bei reinen Medienanfragen optional. Bei
draft_task_id nicht zulässig: Der Prompt wird vom Entwurf übernommen.string
480p, 720p, 1080p, 2k, 4k; Groß-/Kleinschreibung ist unerheblich. Standard bei normaler Generierung: 720p. Mit draft: true ist nur 480p zulässig, auch bei Auslassung. Mit draft_task_id ist nur 1080p zulässig, auch bei Auslassung.string
21:9, 16:9, 4:3, 1:1, 3:4, 9:16, adaptive. Standard: adaptive, vom Modell oder den Medien bestimmt. Für finale Videos weglassen; das Format wird vom Entwurf übernommen.Bei Videobearbeitung (edit) nur weglassen oder adaptive angeben; das Seitenverhältnis folgt der Quelle.string
Alternativer Name für
aspect_ratio mit denselben Werten. Verwenden Sie möglichst nur eines der Felder. Für finale Videos weglassen.integer
Normale Generierung: Ganze Sekunden von
4 bis 30, Standard 5. Explizite oder voreingestellte Dauer wird wie angefragt berechnet und nicht an die fertige Videolänge angepasst. Bei -1 entscheidet das Modell: 30 Sekunden werden reserviert, danach wird die tatsächliche Dauer auf ganze Sekunden kaufmännisch gerundet und abgerechnet. Für finale Videos weglassen; die Dauer wird vom Entwurf übernommen.Bei Videobearbeitung (edit) nur weglassen oder -1 angeben. Ohne Angabe gilt -1; die Ausgabedauer folgt dem Quellvideo.integer
Alias für
duration, mit denselben Regeln. Verwenden Sie nur eines der Felder. Für finale Videos weglassen.boolean
Boolescher Wert für die gleichzeitige Audioausgabe. Alias:
generate_audio. Ohne Angabe entscheidet das Modell. Für finale Videos verboten. Steuert die Ausgabe, nicht die Eingabereferenzen in audio_urls.Werden audio und generate_audio gemeinsam gesendet, müssen die Werte übereinstimmen, sonst HTTP 400. Ohne Angabe entscheidet das Modell und erzeugt meist Ton.boolean
Alias für
audio mit denselben Regeln. Nur eines der Felder verwenden; für finale Videos weglassen.Werden audio und generate_audio gemeinsam gesendet, müssen die Werte übereinstimmen, sonst HTTP 400. Ohne Angabe entscheidet das Modell und erzeugt meist Ton.integer
Zufallsstartwert als Ganzzahl. Für finale Videos verboten.
boolean
Standardmäßig keine Inhaltsprüfung. Mit
true aktivieren.Optionaler boolescher Wert. true aktiviert die Inhaltsprüfung für prompt, image_urls, image_with_roles, Start-/Endbilder und asset://-Bildmedien. Referenzvideos und Audio werden nicht geprüft.Finale Anfragen enthalten weder Prompt noch Medien. Beim Ablauf Entwurf → finales Video erfolgt die Prüfung bei der Erstellung des Entwurfs.Ein Treffer führt zu HTTP 400 (nsfw_content_detected); Kategorien stehen in error.message. Zeigen Sie dies als Ablehnung durch die Inhaltsprüfung an, nicht als allgemeinen Parameterfehler. Bei Fehlern oder Ausfall des Prüfdienstes wird die Generierung fortgesetzt; der Parameter garantiert daher keine abgeschlossene Prüfung jeder Anfrage.string
Unterstützt
auto (Standard, entspricht Weglassen; das Modell entscheidet), reference und edit. reference / edit erfordern Referenzmedien; reine Text- oder Start-/Endbildanfragen führen damit zu HTTP 400. edit benötigt mindestens ein video_urls-Element und darf nicht mit draft: true kombiniert werden. extend wird nicht unterstützt und führt zu HTTP 400. Bei Finalgenerierung weglassen.boolean
Mit
true wird das letzte Frame zusätzlich als PNG unter data.result.last_frame_url zurückgegeben. Standardmäßig deaktiviert. Bei Finalgenerierung weglassen.string
mp4 (Standard) oder mov (QuickTime-Container); andere Werte ergeben HTTP 400. Alias: response_format. Bei beiden Feldern hat output_format Vorrang. Bei Finalgenerierung weglassen.string
Alias für
output_format, unterstützt mp4 / mov. Bei beiden Feldern hat output_format Vorrang. Bei Finalgenerierung weglassen.boolean
Mit
true wird der Prompt vor der Generierung automatisch optimiert. Standardmäßig wird der ursprüngliche Prompt verwendet. Bei Finalgenerierung weglassen.object[]
Jeder Eintrag enthält
url und role. Rollen: first_frame (Startbild), last_frame (Endbild), reference_image (Referenzbild). Je höchstens ein Start- und Endbild; ein Endbild benötigt ein Startbild. Start-/Endbilder dürfen nicht mit Referenzmedien kombiniert werden.image_urls und image_with_roles dürfen nicht gemeinsam gesendet werden. Andernfalls wird beim Absenden HTTP 400 (invalid_request_error) ohne Berechnung zurückgegeben. Die Aliasse image, images und image_url zählen als image_urls und umgehen diese Einschränkung nicht.string[]
Höchstens 30 Referenzbilder. Formate, Abmessungen und Dateigrößen stehen in den Medienanforderungen unten.
image_urls und image_with_roles dürfen nicht gemeinsam gesendet werden. Andernfalls wird beim Absenden HTTP 400 (invalid_request_error) ohne Berechnung zurückgegeben. Die Aliasse image, images und image_url zählen als image_urls und umgehen diese Einschränkung nicht.string
Adresse des Startbilds; entspricht der Rolle
first_frame in image_with_roles.string
Adresse des Endbilds; entspricht
last_frame in image_with_roles. Ein Startbild ist ebenfalls erforderlich.string[]
Höchstens 10 Referenzvideos. Öffentliche
http(s)-URLs oder asset://<Medien-ID>, kein data: Base64. Abmessungen, genaue Dauer und Bildrate werden beim Absenden nach den folgenden Regeln geprüft.Für die Abrechnung werden die Dauern addiert und erst dann auf ganze Sekunden abgerundet, ohne spätere Anpassung. Diese Rundung gilt nicht für die Zulässigkeit einzelner Videos. Bei fehlendem Zugriff oder gescheiterter Dauerermittlung: HTTP 400 (input_video_probe_failed) ohne Berechnung.auto / reference: 2–15 Sekunden, zulässig 1.8 ≤ t ≤ 15.2. Quellvideos für edit: 4–30 Sekunden, zulässig 3.8 ≤ t < 30.2. Exakte Dauer ohne vorheriges Runden prüfen.string[]
Maximal 10; WAV / MP3; jeweils 2–15 Sekunden und
≤ 15 MB, insgesamt maximal 30 Sekunden. Toleranz ±0.2 Sekunden: je Clip 1.8 ≤ t ≤ 15.2, insgesamt ≤ 30.2. Referenzbild oder -video erforderlich.Öffentliche http(s)-URLs oder asset://<Medien-ID>, kein data: Base64. Die Audiodauer wird beim Absenden geprüft; ungültige Werte ergeben synchron HTTP 400 ohne Berechnung.boolean
true erzeugt einen Entwurf in 480p. Andere Parameter folgen den normalen Generierungsregeln. Bei der finalen Generierung nicht übergeben.Videobearbeitung (edit) unterstützt keine Entwürfe.string
task_id eines erfolgreichen Entwurfs zur Generierung eines finalen Videos in 1080p. Innerhalb von 24 Stunden nach Erstellung des Entwurfs verwenden. Prompt, Medien, Dauer und Seitenverhältnis werden übernommen und dürfen nicht erneut übergeben werden. Für finale Videos sind auch seed, audio und dessen Alias generate_audio verboten.Medienadressen und Kombinationsregeln
Bilder, Videos und Audio akzeptieren öffentlichehttp(s)-URLs oder APIMart-Medien über asset://<Medien-ID>. Kein Medientyp akzeptiert data: Base64; zuerst hochladen. Die Registrierung erfolgt automatisch ohne separaten API-Aufruf. Bei Registrierungsfehlern scheitert die Aufgabe mit Erstattung.
| Medien | Anforderungen |
|---|---|
| Referenzbilder | Bis zu 30; JPEG / PNG / WebP / BMP / TIFF / GIF / HEIC / HEIF; Seitenverhältnis 0.4–2.5; Breite und Höhe jeweils 300–6000 Pixel; jeweils < 30 MB. |
| Referenzvideos | Bis zu 10; MP4 / MOV (H.264 / H.265; Audiospur: AAC / MP3); jeweils ≤ 200 MB. Regeln zu Abmessungen, Dauer und Bildrate siehe unten. |
| Audioreferenzen | Maximal 10; WAV / MP3; jeweils 2–15 Sekunden und ≤ 15 MB, insgesamt maximal 30 Sekunden. Toleranz ±0.2 Sekunden: je Clip 1.8 ≤ t ≤ 15.2, insgesamt ≤ 30.2. Referenzbild oder -video erforderlich. |
Prüfung der Referenzvideos
| Eigenschaft | Anforderung |
|---|---|
| Breite und Höhe | Breite und Höhe jeweils 300–6000 Pixel. |
| Pixelfläche (Breite × Höhe) | 409.600–8.295.044 Pixel. |
| Seitenverhältnis (Breite / Höhe) | 0.4–2.5. |
| Dauer je Video | auto / reference: 2–15 Sekunden, zulässig 1.8 ≤ t ≤ 15.2. Quellvideos für edit: 4–30 Sekunden, zulässig 3.8 ≤ t < 30.2. Exakte Dauer ohne vorheriges Runden prüfen. |
| Bildrate | Zuerst kaufmännisch auf eine Ganzzahl runden, dann auf 24–60fps prüfen. 23.976 und 59.94 sind zulässig. |
invalid_request_error mit Messwerten. Maßgeblich ist die Pixelfläche, nicht kurze Seite mindestens 480 und lange Seite höchstens 4096.
Nur hinsichtlich der Abmessungen ist 420×1000 (420.000 Pixel) zulässig. 720×480 (345.600 Pixel), 848×480 (407.040 Pixel) und 4096×2160 (8.847.360 Pixel) liegen außerhalb der Flächengrenzen. Dauer, Bildrate und weitere Medienanforderungen müssen ebenfalls erfüllt sein.
Bildabmessungen, Dateigröße und Kodierung werden während der Generierung geprüft. Ungültige Medien führen zum Fehlschlag mit automatischer Erstattung. Prüfen Sie diese Eigenschaften möglichst vor dem Aufruf.
Regeln für Medienkombinationen
image_urlsundimage_with_rolesdürfen nicht gemeinsam gesendet werden. Andernfalls wird beim Absenden HTTP 400 (invalid_request_error) ohne Berechnung zurückgegeben. Die Aliasseimage,imagesundimage_urlzählen alsimage_urlsund umgehen diese Einschränkung nicht.- Start-/Endbilder dürfen nicht in derselben Anfrage wie Referenzbilder, -videos oder -audio vorkommen.
- Je höchstens ein Start- und Endbild. Ein Endbild benötigt ein Startbild.
- Höchstens 30 Referenzbilder, 10 Referenzvideos und 10 Audioreferenzen, insgesamt höchstens 50 Medien.
- Verstöße gegen diese Kombinationen oder Anzahlen führen beim Absenden synchron zu HTTP 400 ohne Berechnung.
omni_reference_task_type: "edit"erfordert mindestens ein Quellvideo (3.8 ≤ t < 30.2Sekunden).duration/secondsnur weglassen oder-1;aspect_ratio/sizenur weglassen oderadaptive. Nicht mitdraft: truekombinieren. Auto/reference behalten die Grenze von 2–15 Sekunden samt Toleranz.
Diese Felder führen allein durch ihre Anwesenheit zu HTTP 400, auch bei
"", [], false oder null; vollständig entfernen: negative_prompt, camera_fixed, camerafixed, extend_from_task_id, mask_url, video_list, element_list, multi_shot, tools. n weglassen oder auf 1 setzen.Anfragebeispiele
Die folgenden Medien-URLs sind Platzhalter. Ersetzen Sie sie durch erreichbare Medienadressen.Start- und Endbilder
{
"model": "apimart-zoe",
"prompt": "Ein natürlicher Übergang vom Startbild zum Endbild bei gleichbleibender Beleuchtung",
"image_with_roles": [
{
"url": "https://example.com/start.jpg",
"role": "first_frame"
},
{
"url": "https://example.com/end.jpg",
"role": "last_frame"
}
],
"duration": 6
}
first_frame_image und last_frame_image möglich. Fügen Sie derselben Anfrage keine Referenzbilder, -videos oder -audio hinzu.
Bild-, Video- und Audioreferenzen
{
"model": "apimart-zoe",
"prompt": "Die Figur aus dem Referenzbild bewegt sich natürlich in der Szene des Referenzvideos, begleitet von Musik im Rhythmus der Bilder",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/scene.mp4"
],
"audio_urls": [
"https://example.com/bgm.mp3"
],
"duration": -1
}
image_urls werden als Referenzbilder behandelt. Bei duration: -1 bestimmt das Modell die Ausgabedauer.
Videobearbeitung
omni_reference_task_type: "edit" erfordert mindestens ein Quellvideo (3.8 ≤ t < 30.2 Sekunden). duration / seconds nur weglassen oder -1; aspect_ratio / size nur weglassen oder adaptive. Nicht mit draft: true kombinieren. Auto/reference behalten die Grenze von 2–15 Sekunden samt Toleranz.
{
"model": "apimart-zoe",
"prompt": "Das gesamte Bild in einen klassischen Schwarzweißfilm verwandeln und Kamerabewegung sowie Komposition beibehalten",
"video_urls": [
"https://example.com/source_20s.mp4"
],
"omni_reference_task_type": "edit"
}
Letztes Frame, MOV-Ausgabe und Prompt-Optimierung
{
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"duration": 5,
"return_last_frame": true,
"output_format": "mov",
"enhance_prompt": true
}
Entwurf → finales Video
- Entwurf mit
draft: trueabsenden. Ohneresolutionwird480pverwendet; bei expliziter Angabe ist ebenfalls nur480pzulässig.
{
"model": "apimart-zoe",
"prompt": "Ein orangefarbenes Kätzchen auf der Fensterbank blickt zur Kamera, seitliches Sonnenlicht, die Kamera fährt langsam näher",
"draft": true
}
- Warten Sie auf den erfolgreichen Entwurf und übergeben Sie dessen
task_idfür das finale Video.modelunddraft_task_idgenügen. Wenn Sieresolutionangeben, muss es1080psein.
{
"model": "apimart-zoe",
"draft_task_id": "task_01KZOEEXAMPLE"
}
Das Finalvideo übernimmt Prompt, Medien, Dauer, Seitenverhältnis, Seed und Audioeinstellungen des Entwurfs. Senden Sie
model, draft_task_id, optional resolution: "1080p" sowie allgemeine Felder wie nsfw_check / webhook. Folgende Generierungsfelder müssen fehlen; auch leere Strings/Arrays, false oder null ergeben HTTP 400: prompt, image_urls, image_with_roles, image, images, image_url, first_frame_image, last_frame_image, video_urls, audio_urls, duration, seconds, aspect_ratio, size, seed, audio, generate_audio, draft, omni_reference_task_type, return_last_frame, output_format, response_format, enhance_prompt. Den Entwurf innerhalb von 24 Stunden nach Erstellung verwenden; beide Generierungen werden separat berechnet.Aufgaben und Ergebnisse abrufen
cURL
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01KZOEEXAMPLE \
--header 'Authorization: Bearer <token>'
data ein Array, bei der Statusabfrage ein Aufgabenobjekt. data.status: pending = Warteschlange, processing = Generierung, completed = Erfolg, failed = Fehler. Lesen Sie bei Erfolg die Video-Adresse aus data.result.videos[].url, etwa data.result.videos[0].url[0]. Videos werden in den APIMart-Speicher kopiert. Das folgende Beispiel zeigt nur die wichtigsten Felder einer erfolgreichen Abfrage.
{
"code": 200,
"data": {
"id": "task_01KZOEEXAMPLE",
"status": "completed",
"result": {
"videos": [
{
"url": [
"https://example.com/generated-video.mp4"
],
"expires_at": 1794475442
}
],
"last_frame_url": "https://example.com/generated-last-frame.png"
},
"progress": 100,
"completed": 1794389042
}
}
data.error.message. Bereits abgebuchte Beträge werden automatisch erstattet.
| Feld | Beschreibung |
|---|---|
data.progress | Aufgabenfortschritt, 0–100. |
data.result.videos[].url | Array der Videoadressen im APIMart-Speicher. |
data.result.videos[].expires_at | Die Adresse läuft 24 Stunden nach Abschluss ab. Video zeitnah herunterladen. |
data.result.last_frame_url | PNG-URL des letzten Frames im APIMart-Speicher; nur bei erfolgreicher Aufgabe mit return_last_frame: true in der Anfrage. |
data.error.message | Fehlerursache, nur bei failed vorhanden. |
data.error.code | Bei Fehlern die Zeichenfolge task_failed. |
data.cost | Aufgabenkosten; bei fehlgeschlagenen Aufgaben nach Rückerstattung 0. |
Abrechnung
Sekundenbasierte Abrechnung nach Ausgabeauflösung und Referenzvideos. Tarife und Kontorabatte stehen auf der Preisseite.D bezeichnet die für die Abrechnung verwendete Ausgabedauer in Sekunden.
| Fall | Abrechenbare Ausgabedauer D |
|---|---|
Normale Generierung: duration: 4–30 oder ausgelassen (Standard 5) | Die angefragten Sekunden werden berechnet, ohne Anpassung an die fertige Videolänge. |
duration: -1 / Videobearbeitung edit | 30 Sekunden reservieren; nach Abschluss die tatsächliche Dauer kaufmännisch auf ganze Sekunden runden und die Differenz ausgleichen. |
| Finales Video | Dauer des Entwurfs übernehmen. Bei einem Entwurf mit duration: -1 gilt dessen tatsächliche fertige Dauer als Grundlage; keine erneute Anpassung an das finale Video. |
- Gesamtdauer der Referenzvideos
R: beim Absenden jede Dauer ermitteln, addieren und die Summe auf ganze Sekunden abrunden. Keine spätere Anpassung. - Ohne Referenzvideos: abrechenbare Sekunden =
D. Mit Referenzvideos:D + max(R, ceil(D × 2/3)).ceilrundet auf ganze Sekunden auf. Es gilt der Tarif mit Referenzvideos. - Beispiel: Angefragte 8 Sekunden bleiben
D = 8, selbst bei 8.2 Sekunden Ergebnis. Automatische 8.5 Sekunden ergebenD = 9. Referenzen mit 2.8 und 3.8 Sekunden werden zuerst zu 6.6 addiert und dann abgerundet:R = 6. - Entwurf (
480p) und finales Video (1080p) werden separat berechnet. Referenzvideos des Entwurfs zählen mit ihrer ursprünglichen Dauer auch beim finalen Video; kein erneuter Upload nötig. - Fehlgeschlagene Einreichungen werden nicht berechnet. Fehlgeschlagene Aufgaben werden automatisch erstattet.
Häufige Fehler
Fehlgeschlagene Einreichungen liefern einerror-Objekt: error.message enthält Details, error.code einen String-Code, getrennt vom HTTP-Status. Es fallen keine Kosten an.
| HTTP | error.code | Ursache und Lösung |
|---|---|---|
| 400 | invalid_request_error | Dauer, Auflösung, Format, Medienanzahl/-kombination, nicht unterstützte Parameter und Entwurfsregeln prüfen. Gilt auch bei unbekannter draft_task_id, Nicht-Entwurf, unvollständigem oder mehr als 24 Stunden altem Entwurf. Gilt auch für unzulässige Videoabmessungen, genaue Dauer oder Bildrate sowie die Kombination von image_urls (einschließlich Aliassen) mit image_with_roles. Videofehler enthalten Messwerte. Auch Referenzaudiodauer, Aufgabentyp/Bearbeitungsregeln, output_format, übereinstimmende Audio-Aliasse und vorhandene verbotene Felder prüfen. |
| 400 | nsfw_content_detected | Ablehnung durch die Inhaltsprüfung. Kategorien stehen in error.message. Als solche anzeigen und Inhalte vor erneutem Absenden anpassen. Keine Berechnung. |
| 400 | input_video_probe_failed | Referenzvideo nicht erreichbar oder Dauer nicht ermittelbar. Adresse und Inhalt prüfen. |
| 402 | payment_required | Unzureichendes Guthaben; automatische Dauer reserviert 30 Sekunden. |
| 503 | draft_channel_unavailable / draft_task_unavailable | Entwurfskanal nicht verfügbar oder Abfrage vorübergehend fehlgeschlagen. Später wiederholen oder neuen Entwurf erstellen. |