# Happy Horse 1.1 API Vollständige API-Referenz für die Happy Horse 1.1 Videogenerierungsmodelle von Alibaba. ## Modellvarianten Diese API unterstützt drei Modellvarianten: | Modell | ID | Beschreibung | | --------------------------------------- | ------------------------------------ | --------------------------------------------------- | | **Happy Horse 1.1 Text to Video** | `happyhorse-1.1-text-to-video` | Generiert Videos direkt aus Text-Prompts | | **Happy Horse 1.1 Image to Video** | `happyhorse-1.1-image-to-video` | Animiert ein einzelnes Erstbild mit Prompt-Steuerung | | **Happy Horse 1.1 Reference to Video** | `happyhorse-1.1-reference-to-video` | Generiert Videos, die von bis zu 9 Referenzbildern geführt werden | ## Schnellvergleich | Funktion | Text zu Video | Bild zu Video | Referenz zu Video | | -------------- | ------------------------ | ------------------------ | ------------------------ | | Eingabe | Text-Prompt | Erstbild + Prompt | Referenzbilder + Prompt | | Dauerbereich | 3-15 Sekunden | 3-15 Sekunden | 3-15 Sekunden | | Auflösung | 720p, 1080p (Standard 1080p) | 720p, 1080p (Standard 1080p) | 720p, 1080p (Standard 1080p) | | Seitenverhältnis | 9 unterstützte Verhältnisse (Standard 16:9) | Nicht unterstützt (folgt dem Eingabebild) | 9 unterstützte Verhältnisse (Standard 16:9) | | Seed | Fakultativ | Fakultativ | Fakultativ | ### Unterstützte Seitenverhältnisse (Text zu Video & Referenz zu Video) | Verhältnis | Beschreibung | | ---------- | --------------------- | | `16:9` | Querformat (Widescreen) | | `9:16` | Hochformat (vertikal) | | `3:4` | Standard-Hochformat | | `4:3` | Standard-Querformat | | `4:5` | Hochformat | | `5:4` | Querformat | | `1:1` | Quadratisch | | `9:21` | Ultrahohes Hochformat | | `21:9` | Ultrabreites Querformat | ## Happy Horse 1.1 Text to Video ### Endpunkt ``` POST /api/v1/video/task ``` ### Anfrageparameter #### Erforderlich | Parameter | Typ | Beschreibung | | -------------- | ------ | ----------------------------------------------------------------- | | `model_name` | string | Muss `"happyhorse-1.1-text-to-video"` sein | | `prompt` | string | Prompt für die Videogenerierung | | `duration` | number | Videodauer in Sekunden (3-15) | | `resolution` | string | Ausgabeauflösung: `"720p"` oder `"1080p"` (Standard `"1080p"`) | | `aspect_ratio` | string | Seitenverhältnis des Videos (siehe Tabelle oben; Standard `"16:9"`) | #### Fakultativ | Parameter | Typ | Beschreibung | | --------- | ------ | --------------------------------------------------------------------------------- | | `seed` | number | Zufalls-Seed für reproduzierbare Generierungen, Ganzzahl im Bereich `0` bis `2147483647` | ### Beispielanfrage ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-text-to-video', prompt: 'A cat playing with a ball of yarn on a sunny windowsill', duration: 5, resolution: '1080p', aspect_ratio: '16:9', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Image to Video ### Anfrageparameter #### Erforderlich | Parameter | Typ | Beschreibung | | ------------ | ------ | ----------------------------------------------------------------- | | `model_name` | string | Muss `"happyhorse-1.1-image-to-video"` sein | | `prompt` | string | Prompt für die Videogenerierung | | `duration` | number | Videodauer in Sekunden (3-15) | | `resolution` | string | Ausgabeauflösung: `"720p"` oder `"1080p"` (Standard `"1080p"`) | | `image_url` | string | URL des Erstbilds (nur erstes Frame) | #### Fakultativ | Parameter | Typ | Beschreibung | | --------- | ------ | --------------------------------------------------------------------------------- | | `seed` | number | Zufalls-Seed für reproduzierbare Generierungen, Ganzzahl im Bereich `0` bis `2147483647` | > **Hinweis:** `aspect_ratio` wird für Image-to-Video nicht unterstützt. Der Ausgaberahmen folgt dem hochgeladenen Erstbild. ### Beispielanfrage ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-image-to-video', image_url: 'https://example.com/first-frame.jpg', prompt: 'Gentle motion; cinematic lighting', duration: 5, resolution: '1080p', seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Happy Horse 1.1 Reference to Video ### Anfrageparameter #### Erforderlich | Parameter | Typ | Beschreibung | | -------------- | -------- | ----------------------------------------------------------------- | | `model_name` | string | Muss `"happyhorse-1.1-reference-to-video"` sein | | `prompt` | string | Prompt für die Videogenerierung. Schreiben Sie einen Standard-Prompt ohne Platzhalter oder verwenden Sie optional die @ (AT)-Referenzfunktion mit `<<>>`, um Elemente aus dem `images`-Array ausdrücklich zu referenzieren | | `duration` | number | Videodauer in Sekunden (3-15) | | `resolution` | string | Ausgabeauflösung: `"720p"` oder `"1080p"` (Standard `"1080p"`) | | `aspect_ratio` | string | Seitenverhältnis des Videos (siehe Tabelle oben; Standard `"16:9"`) | | `images` | string[] | URLs der Referenzbilder (1-9 Bilder) | #### @ (AT)-Referenzplatzhalter Die @ (AT)-Referenzfunktion verknüpft Referenzbilder über nummerierte `<<>>`-Platzhalter mit dem Prompt. Die Nummerierung beginnt bei `1` und folgt der Reihenfolge des `images`-Arrays. | Platzhalter | Referenzierter Wert | |-------------|------------------| | `<<>>` | `images[0]` | | `<<>>` | `images[1]` | | `<<>>` | `images[2]` | #### Fakultativ | Parameter | Typ | Beschreibung | | --------- | ------ | --------------------------------------------------------------------------------- | | `seed` | number | Zufalls-Seed für reproduzierbare Generierungen, Ganzzahl im Bereich `0` bis `2147483647` | ### Anforderungen an Referenzbilder - Unterstützte Formate: `JPEG`, `JPG`, `PNG`, `WEBP` - Maximale Dateigröße: 20 MB pro Bild - Minimale kurze Seite: 400 px - Anzahl: mindestens 1, bis zu 9 Bilder ### Beispielanfrage ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Subject moves naturally while preserving reference style and appearance', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/ref-1.jpg', 'https://example.com/ref-2.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ### Beispielanfrage für @ (AT) Reference-to-Video ```javascript const response = await fetch('https://api.flaq.ai/api/v1/video/task', { method: 'POST', headers: { Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json', }, body: JSON.stringify({ model_name: 'happyhorse-1.1-reference-to-video', prompt: 'Show the person from <<>> walking beside the bicycle from <<>> through the street in <<>>, preserving all reference details', duration: 5, resolution: '1080p', aspect_ratio: '16:9', images: [ 'https://example.com/person-reference.jpg', 'https://example.com/bicycle-reference.jpg', 'https://example.com/street-reference.jpg', ], seed: 42, }), }); const { data } = await response.json(); const taskId = data.task_id; ``` ## Antwortformat ### Erste Antwort ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "submitted" } } ``` ### Polling-Antwort Rufe `GET /api/v1/video/{taskId}` ab, um den Status zu prüfen: ```json { "code": 0, "message": "success", "data": { "task_id": "{task_id}", "response_url": "https://api.flaq.ai/api/v1/video/{task_id}", "task_status": "succeed", "task_status_msg": null, "task_result": { "credit": 0.2, "videos": [ { "url": "https://example.com/generated-video.mp4" } ] } } } ``` ### Statuswerte - `submitted`: Aufgabe akzeptiert und wartet auf Verarbeitung - `processing`: Videogenerierung läuft - `succeed`: Videogenerierung abgeschlossen - `failed`: Videogenerierung fehlgeschlagen ## Verarbeitungszeit Typische Verarbeitungszeit: 2-5 Minuten, abhängig von Dauer und Warteschlangenlast. ## Bewährte Vorgehensweisen 1. **Bewegung klar beschreiben**: Ergänze Motivbewegung, Kamerabewegung und Szenenverlauf, um die Videodynamik zu verbessern. 2. **Zuerst kurze Iterationen verwenden**: Beginne mit Generierungen von 3-5 Sekunden, um die Prompt-Richtung zu validieren, bevor längere Clips ausgeführt werden. 3. **Das richtige Eingabebild wählen**: Verwende für Image-to-Video ein klares, gut beleuchtetes Erstbild mit starkem Fokus auf das Motiv. 4. **Referenzbilder kuratieren**: Stelle für Reference-to-Video konsistente, hochwertige Referenzbilder bereit, die das Motiv oder den Stil, den du bewahren möchtest, klar darstellen. 5. **Seeds für Varianten wiederverwenden**: Behalte denselben `seed` bei, wenn du Prompt-Verfeinerungen testest, um Ausgaben konsistenter zu vergleichen. 6. **Verhältnis an den Ausgabekanal anpassen**: Verwende `16:9` für Querformatvideos, `9:16` für Shorts und Reels und `1:1` für quadratische Platzierungen.