happyhorse-1.1-i2v
Modell zur Animation eines Bildes: Das Ausgangsbild legt den ersten Frame fest, die Beschreibung steuert die weitere Bewegung. Erstellt einen kurzen Videoclip, auf Wunsch mit Ton.
- Ailoot · Videos
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · Videos
POST /v1/videos/generationshappyhorse-i2v - Ailoot · Videos
POST /v1/videos/generationshappyhorse-i2v-latest
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
HappyHorse-1.1-I2V ist ein Modell von Alibaba, das eine Videoszene mit einem vorhandenen Bild beginnt. Das Bild wird zum ersten Frame, während der Text die anschließende Handlung bestimmen kann: die Bewegung einer Figur, Veränderungen in der Szene und die Kameraführung. Das eignet sich zur Animation einer Illustration, einer Produktfotografie oder eines vorbereiteten visuellen Konzepts.
Eine Textbeschreibung ist nicht verpflichtend. Fehlt sie, leitet das Modell mögliche Bewegungen selbst aus dem Inhalt des Ausgangsbildes ab. Bei einer ausdrücklichen Vorgabe bestimmt das Ausgangsbild die Komposition und das Aussehen der Objekte; die Worte steuern, wie sich die Szene im Lauf der Zeit entwickelt.
Vom ersten Frame zur Bewegung
Alibaba hebt die Erhaltung des Aussehens von Figuren, visuelle Konsistenz, flüssige Bewegungen und das Zusammenspiel von Bild und Ton hervor. Zu den genannten Schwerpunkten zählen auch die Stabilität von Beschriftungen und Texturen. Diese Eigenschaften beschreiben die Zielsetzung des Modells und bedeuten nicht, dass jeder Pixel in allen generierten Frames unverändert bleibt.
Für diesen Modus wird ein einzelnes Ausgangsbild verwendet. Es gibt die Anfangsszene vor und ist keine Sammlung unabhängiger Vorlagen für eine neue Komposition. Die Möglichkeit, für diese konkrete Version einen eigenen Schlussframe festzulegen, ist nicht angegeben.
Akzeptiert werden JPEG, JPG, PNG und WEBP. Jede Seite des Eingangsbildes muss mindestens 300 Pixel lang sein; zulässig sind Seitenverhältnisse von 1:2,5 bis 2,5:1 und Dateien bis 20 MB. Das Seitenverhältnis des fertigen Videos folgt dem ersten Frame.
Videoparameter
Die Dauer wird als ganze Zahl von 3 bis 15 Sekunden gewählt. Verfügbar sind die Auflösungen 480P, 720P und 1080P; das Ausgabeformat ist MP4 bei 24 Frames pro Sekunde. Eine Tonspur kann gemeinsam mit dem Video erzeugt werden.
Die Beschreibung kann in jeder Sprache verfasst sein und bis zu 5000 nicht chinesische oder 2500 chinesische Zeichen enthalten. Wird die Grenze überschritten, wird der überzählige Teil verworfen. Wichtige Handlungen und Bewegungsdetails sollten daher innerhalb dieses Umfangs beschrieben werden. Derselbe Zufalls-Seed kann ähnliche Videos ergeben, garantiert aber keine Übereinstimmung jedes einzelnen Frames.
Ailoot · Videos POST /v1/videos/generations happyhorse-1.1-i2v
happyhorse-1.1-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Einstieg
Modell zur Animation eines Bildes: Das Ausgangsbild legt den ersten Frame fest, die Beschreibung steuert die weitere Bewegung. Erstellt einen kurzen Videoclip, auf Wunsch mit Ton.
- Zulässige Eingaben
- Text · Bilder
- Ergebnisse
- Video
In Ailoot verfügbar · Eingaben und Methoden
Ailoot · Videos POST /v1/videos/generations
- Eingabe
text,image- Ausgabe
video- Ausgabeformat
- mp4
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits happyhorse-1.1-i2v | Standard— |
Feldprompt | Typstring | AnforderungOptional | Werte und Limits Mindestlänge: 1 | Standard— |
Feldduration | Typinteger | AnforderungOptional | Werte und Limits Minimum: 3 Maximum: 15 Einheit: Sekunden | Standard5 |
Feldresolution | Typstring | AnforderungOptional | Werte und Limits 480P, 720P, 1080P | Standard720P |
Feldratio | Typstring | AnforderungNicht unterstützt | Werte und Limits | Standard— |
Feldimage_urls | Typhttps_url|data_image_url[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 Maximale Anzahl Elemente: 1 Maximale Anzahl dekodierter Bytes: 20 971 520 MIME-Typen: image/jpeg, image/png, image/webp | Standard— |
Kombinationen von Eingabematerialien
first_frame_to_video · Erforderlich: image_urls
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragmodel, image_urls |
Parametermaterial_types | Vertragtext, image |
Parameteroptional | Vertragduration, resolution, ratio, prompt |
Parameterduration_integer_range | Vertrag3, 15 |
Parameterdefault_duration | Vertrag5 |
Parameterresolution | Vertrag480P, 720P, 1080P |
Parameterdefault_resolution | Vertrag720P |
Parameterratio | Vertrag |
Parameterratio_must_omit | Vertragtrue |
Parameterimage_urls | Vertrag{"min_count":1,"max_count":1,"schemes":["https","Rasterdaten in base64"],"max_data_image_bytes":20971520} |
Lebenszyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Methodenstrukturen und IDs sind exakt; die Fähigkeiten des Anbieters sind von der Zulassung einer Anfrage zu unterscheiden.
Tarife
Ailoot-Methodentarife
POST /v1/videos/generations- Ausgabe
- $ 0,18 pro Sekunde bei 1080p
- Ausgabe
- $ 0,07 pro Sekunde bei 480p
- Ausgabe
- $ 0,14 pro Sekunde bei 720p
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot · Videos
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Ergebnisse abrufen und speichern
Ailoot · Videos
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Alle fertiggestellten Dateien speichern
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Abrufe anderer Inhalte
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Alle fertiggestellten Ergebnisse aufbewahren
Speichern Sie jedes fertiggestellte Video oder jede zurückgegebene Datei; rufen Sie jede tatsächlich zurückgegebene Datei-URL ab.
Bewahren Sie jedes zurückgegebene Datenelement/jeden Ausgabeindex auf. content_url bezeichnet nur die erste Ausgabe; rufen Sie jeden tatsächlichen Inhaltspfad/jedes Asset ab. GET content ohne index liefert nicht sämtliche Ausgaben.
Wenn die ursprüngliche Antwort geprüft werden muss
Lesen Sie den vorhandenen ursprünglichen Auftrag; übermitteln Sie eine Anfrage mit unbekanntem Übermittlungsergebnis niemals erneut.
Antwortfelder
| Feld | Typ |
|---|---|
Feldid | Typstring |
Feldobject | Typstring |
Feldmodel | Typstring |
Feldstatus | Typstring |
Feldcontent_url | Typsigned URL |
Felddata[] | Typsigned URL |
Feldusage | Typobject |
Feldresult_pending_check | Typboolean |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Antwort409 · video_not_ready | BedingungDer ursprüngliche Ergebnisinhalt ist noch nicht verfügbar | Nächster SchrittFragen Sie die ursprünglich zurückgegebene ID regelmäßig ab und beachten Sie Retry-After. |
Antwortserver_error | BedingungDie zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert | Nächster SchrittDie ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden. |
Aliasnamen
Modellaliasnamen
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
Ailoot · Videos POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Einstieg
Modell zur Animation eines Bildes: Das Ausgangsbild legt den ersten Frame fest, die Beschreibung steuert die weitere Bewegung. Erstellt einen kurzen Videoclip, auf Wunsch mit Ton.
- Zulässige Eingaben
- Text · Bilder
- Ergebnisse
- Video
In Ailoot verfügbar · Eingaben und Methoden
Ailoot · Videos POST /v1/videos/generations
- Eingabe
text,image- Ausgabe
video- Ausgabeformat
- mp4
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits happyhorse-i2v | Standard— |
Feldprompt | Typstring | AnforderungOptional | Werte und Limits Mindestlänge: 1 | Standard— |
Feldduration | Typinteger | AnforderungOptional | Werte und Limits Minimum: 3 Maximum: 15 Einheit: Sekunden | Standard5 |
Feldresolution | Typstring | AnforderungOptional | Werte und Limits 480P, 720P, 1080P | Standard720P |
Feldratio | Typstring | AnforderungNicht unterstützt | Werte und Limits | Standard— |
Feldimage_urls | Typhttps_url|data_image_url[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 Maximale Anzahl Elemente: 1 Maximale Anzahl dekodierter Bytes: 20 971 520 MIME-Typen: image/jpeg, image/png, image/webp | Standard— |
Kombinationen von Eingabematerialien
first_frame_to_video · Erforderlich: image_urls
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametermaterial_types | Vertragtext, image |
Parameterrequired | Vertragnull |
Parameteroptional_controls | Vertragnull |
Lebenszyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Methodenstrukturen und IDs sind exakt; die Fähigkeiten des Anbieters sind von der Zulassung einer Anfrage zu unterscheiden.
Tarife
Ailoot-Methodentarife
POST /v1/videos/generations- Ausgabe
- $ 0,18 pro Sekunde bei 1080p
- Ausgabe
- $ 0,07 pro Sekunde bei 480p
- Ausgabe
- $ 0,14 pro Sekunde bei 720p
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot · Videos
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Ergebnisse abrufen und speichern
Ailoot · Videos
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Alle fertiggestellten Dateien speichern
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Abrufe anderer Inhalte
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Alle fertiggestellten Ergebnisse aufbewahren
Speichern Sie jedes fertiggestellte Video oder jede zurückgegebene Datei; rufen Sie jede tatsächlich zurückgegebene Datei-URL ab.
Bewahren Sie jedes zurückgegebene Datenelement/jeden Ausgabeindex auf. content_url bezeichnet nur die erste Ausgabe; rufen Sie jeden tatsächlichen Inhaltspfad/jedes Asset ab. GET content ohne index liefert nicht sämtliche Ausgaben.
Wenn die ursprüngliche Antwort geprüft werden muss
Lesen Sie den vorhandenen ursprünglichen Auftrag; übermitteln Sie eine Anfrage mit unbekanntem Übermittlungsergebnis niemals erneut.
Antwortfelder
| Feld | Typ |
|---|---|
Feldid | Typstring |
Feldobject | Typstring |
Feldmodel | Typstring |
Feldstatus | Typstring |
Feldcontent_url | Typsigned URL |
Felddata[] | Typsigned URL |
Feldusage | Typobject |
Feldresult_pending_check | Typboolean |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Antwort409 · video_not_ready | BedingungDer ursprüngliche Ergebnisinhalt ist noch nicht verfügbar | Nächster SchrittFragen Sie die ursprünglich zurückgegebene ID regelmäßig ab und beachten Sie Retry-After. |
Antwortserver_error | BedingungDie zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert | Nächster SchrittDie ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden. |
Aliasnamen
Modellaliasnamen
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
Ailoot · Videos POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Einstieg
Modell zur Animation eines Bildes: Das Ausgangsbild legt den ersten Frame fest, die Beschreibung steuert die weitere Bewegung. Erstellt einen kurzen Videoclip, auf Wunsch mit Ton.
- Zulässige Eingaben
- Text · Bilder
- Ergebnisse
- Video
In Ailoot verfügbar · Eingaben und Methoden
Ailoot · Videos POST /v1/videos/generations
- Eingabe
text,image- Ausgabe
video- Ausgabeformat
- mp4
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits happyhorse-i2v-latest | Standard— |
Feldprompt | Typstring | AnforderungOptional | Werte und Limits Mindestlänge: 1 | Standard— |
Feldduration | Typinteger | AnforderungOptional | Werte und Limits Minimum: 3 Maximum: 15 Einheit: Sekunden | Standard5 |
Feldresolution | Typstring | AnforderungOptional | Werte und Limits 480P, 720P, 1080P | Standard720P |
Feldratio | Typstring | AnforderungNicht unterstützt | Werte und Limits | Standard— |
Feldimage_urls | Typhttps_url|data_image_url[] | AnforderungErforderlich | Werte und Limits Mindestanzahl Elemente: 1 Maximale Anzahl Elemente: 1 Maximale Anzahl dekodierter Bytes: 20 971 520 MIME-Typen: image/jpeg, image/png, image/webp | Standard— |
Kombinationen von Eingabematerialien
first_frame_to_video · Erforderlich: image_urls
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametermaterial_types | Vertragtext, image |
Parameterrequired | Vertragnull |
Parameteroptional_controls | Vertragnull |
Lebenszyklus: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Methodenstrukturen und IDs sind exakt; die Fähigkeiten des Anbieters sind von der Zulassung einer Anfrage zu unterscheiden.
Tarife
Ailoot-Methodentarife
POST /v1/videos/generations- Ausgabe
- $ 0,18 pro Sekunde bei 1080p
- Ausgabe
- $ 0,07 pro Sekunde bei 480p
- Ausgabe
- $ 0,14 pro Sekunde bei 720p
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Beispielanfragen
Ailoot · Videos
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URL:?Set the HTTPS URL of your actual first-frame image}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-i2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
u=os.environ["AILOOT_IMAGE_URL"]
z=urlsplit(u)
if z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Set the actual HTTPS image URL")
p["image_urls"]=[u]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
print(json.dumps(r))
PY_RESULT
Ergebnisse abrufen und speichern
Ailoot · Videos
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Auftragsstatus prüfen
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
Alle fertiggestellten Dateien speichern
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
Abrufe anderer Inhalte
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Alle fertiggestellten Ergebnisse aufbewahren
Speichern Sie jedes fertiggestellte Video oder jede zurückgegebene Datei; rufen Sie jede tatsächlich zurückgegebene Datei-URL ab.
Bewahren Sie jedes zurückgegebene Datenelement/jeden Ausgabeindex auf. content_url bezeichnet nur die erste Ausgabe; rufen Sie jeden tatsächlichen Inhaltspfad/jedes Asset ab. GET content ohne index liefert nicht sämtliche Ausgaben.
Wenn die ursprüngliche Antwort geprüft werden muss
Lesen Sie den vorhandenen ursprünglichen Auftrag; übermitteln Sie eine Anfrage mit unbekanntem Übermittlungsergebnis niemals erneut.
Antwortfelder
| Feld | Typ |
|---|---|
Feldid | Typstring |
Feldobject | Typstring |
Feldmodel | Typstring |
Feldstatus | Typstring |
Feldcontent_url | Typsigned URL |
Felddata[] | Typsigned URL |
Feldusage | Typobject |
Feldresult_pending_check | Typboolean |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Antwort409 · video_not_ready | BedingungDer ursprüngliche Ergebnisinhalt ist noch nicht verfügbar | Nächster SchrittFragen Sie die ursprünglich zurückgegebene ID regelmäßig ab und beachten Sie Retry-After. |
Antwortserver_error | BedingungDie zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert | Nächster SchrittDie ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden. |
Aliasnamen
Modellaliasnamen
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Aliasnamen für Methodenpfade
Verwenden Sie die oben angezeigten Methodenpfade.
Zugehörige Aufrufer-IDs
FAQ · happyhorse-1.1-i2v
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/videos/generations·happyhorse-1.1-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v:text,image→videoPOST /v1/videos/generations·happyhorse-i2v-latest:text,image→video- Welche Felder verwendet die Anfrage?
POST /v1/videos/generations·happyhorse-1.1-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v:model,prompt,duration,resolution,image_urlsPOST /v1/videos/generations·happyhorse-i2v-latest:model,prompt,duration,resolution,image_urls- Welche Grenzen gelten?
POST /v1/videos/generations·happyhorse-1.1-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-i2v-latest:duration.minimum:3;duration.maximum:15