happyhorse-1.1-i2v
Modello per animare un'immagine: l'immagine iniziale definisce il primo fotogramma, mentre la descrizione guida il movimento successivo. Crea un breve video con la possibilità di generare anche l'audio.
- Ailoot · Generazione video
POST /v1/videos/generationshappyhorse-1.1-i2v - Ailoot · Generazione video
POST /v1/videos/generationshappyhorse-i2v - Ailoot · Generazione video
POST /v1/videos/generationshappyhorse-i2v-latest
Informazioni sul modello
Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.
HappyHorse-1.1-I2V è un modello di Alibaba che avvia una scena video da un'immagine già pronta. L'immagine diventa il primo fotogramma, mentre il testo può definire ciò che avviene dopo: il movimento del personaggio, i cambiamenti nella scena e la direzione della videocamera. È adatto ad animare un'illustrazione, una fotografia di prodotto o un concept visivo preparato in precedenza.
La descrizione testuale è facoltativa. Se manca, il modello deduce un possibile movimento dal contenuto dell'immagine iniziale. Quando viene fornita, l'immagine di partenza definisce la composizione e l'aspetto degli oggetti, mentre le parole guidano lo sviluppo della scena nel tempo.
Dal primo fotogramma al movimento
Alibaba mette in evidenza la conservazione dell'aspetto dei personaggi, la coerenza visiva, la fluidità del movimento e la combinazione di immagini e audio. Tra gli obiettivi dichiarati figurano anche la stabilità delle scritte e delle texture. Queste proprietà riguardano la progettazione del modello e non implicano la conservazione letterale di ogni pixel in tutti i fotogrammi generati.
Questa modalità utilizza una sola immagine iniziale. L'immagine definisce la scena di partenza, anziché fungere da insieme di riferimenti indipendenti per una nuova composizione. Per questa specifica versione non è dichiarata la possibilità di impostare un fotogramma finale separato.
Sono accettati JPEG, JPG, PNG e WEBP. Ogni lato dell'immagine in ingresso deve essere di almeno 300 pixel; le proporzioni ammesse vanno da 1:2,5 a 2,5:1 e la dimensione del file può arrivare a 20 MB. Le proporzioni del video finale seguono quelle del primo fotogramma.
Parametri del video
La durata si imposta con un numero intero da 3 a 15 secondi. Sono disponibili le risoluzioni 480P, 720P e 1080P; il formato di uscita è MP4, con una frequenza di 24 fotogrammi al secondo. È supportata la generazione di audio insieme al video.
La descrizione può essere in qualsiasi lingua e contenere fino a 5000 caratteri non cinesi oppure 2500 caratteri cinesi. Se il limite viene superato, la parte in eccesso viene scartata: conviene quindi descrivere le azioni importanti e le caratteristiche del movimento entro questo spazio. Lo stesso seme casuale iniziale può produrre video simili, ma non ne garantisce la corrispondenza fotogramma per fotogramma.
Ailoot · Generazione video POST /v1/videos/generations happyhorse-1.1-i2v
happyhorse-1.1-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Introduzione
Modello per animare un'immagine: l'immagine iniziale definisce il primo fotogramma, mentre la descrizione guida il movimento successivo. Crea un breve video con la possibilità di generare anche l'audio.
- Input accettati
- Testo · Immagini
- Risultati
- Video
Disponibile in Ailoot · input e metodi
Ailoot · Generazione video POST /v1/videos/generations
- Tipi di input
text,image- Tipi di output
video- Formato di output
- mp4
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti happyhorse-1.1-i2v | Predefinito— |
Campoprompt | Tipostring | RequisitoFacoltativo | Valori e limiti Lunghezza minima: 1 | Predefinito— |
Campoduration | Tipointeger | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
Camporesolution | Tipostring | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
Camporatio | Tipostring | RequisitoNon supportato | Valori e limiti | Predefinito— |
Campoimage_urls | Tipohttps_url|data_image_url[] | RequisitoObbligatorio | Valori e limiti Numero minimo di elementi: 1 Numero massimo di elementi: 1 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |
Combinazioni di materiali in input
first_frame_to_video · Obbligatorio: image_urls
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametrocontent_type | Contrattoapplication/json |
Parametrorequired | Contrattomodel, image_urls |
Parametromaterial_types | Contrattotext, image |
Parametrooptional | Contrattoduration, resolution, ratio, prompt |
Parametroduration_integer_range | Contratto3, 15 |
Parametrodefault_duration | Contratto5 |
Parametroresolution | Contratto480P, 720P, 1080P |
Parametrodefault_resolution | Contratto720P |
Parametroratio | Contratto |
Parametroratio_must_omit | Contrattotrue |
Parametroimage_urls | Contratto{"min_count":1,"max_count":1,"schemes":["https","dati raster in base64"],"max_data_image_bytes":20971520} |
Ciclo di vita: 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
Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.
Tariffe
Tariffe dei metodi Ailoot
POST /v1/videos/generations- Output
- 0,18 USD per secondo a 1080p
- Output
- 0,07 USD per secondo a 480p
- Output
- 0,14 USD per secondo a 720p
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
Ailoot · Generazione video
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
Ricevi e salva i risultati
Ailoot · Generazione video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Verifica lo stato dell’attività
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
Salva tutte le risorse completate
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
Altre letture di contenuto
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
Conserva tutti i risultati completati
Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.
Conserva ogni elemento di dati e indice di uscita restituito. content_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.
Se occorre verificare la risposta originale
Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.
Campi della risposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campoobject | Tipostring |
Campomodel | Tipostring |
Campostatus | Tipostring |
Campocontent_url | Tiposigned URL |
Campodata[] | Tiposigned URL |
Campousage | Tipoobject |
Camporesult_pending_check | Tipoboolean |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
Risposta409 · video_not_ready | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
Rispostaserver_error | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |
Alias
Alias del modello
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
Ailoot · Generazione video POST /v1/videos/generations happyhorse-i2v
happyhorse-i2vhappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Introduzione
Modello per animare un'immagine: l'immagine iniziale definisce il primo fotogramma, mentre la descrizione guida il movimento successivo. Crea un breve video con la possibilità di generare anche l'audio.
- Input accettati
- Testo · Immagini
- Risultati
- Video
Disponibile in Ailoot · input e metodi
Ailoot · Generazione video POST /v1/videos/generations
- Tipi di input
text,image- Tipi di output
video- Formato di output
- mp4
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti happyhorse-i2v | Predefinito— |
Campoprompt | Tipostring | RequisitoFacoltativo | Valori e limiti Lunghezza minima: 1 | Predefinito— |
Campoduration | Tipointeger | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
Camporesolution | Tipostring | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
Camporatio | Tipostring | RequisitoNon supportato | Valori e limiti | Predefinito— |
Campoimage_urls | Tipohttps_url|data_image_url[] | RequisitoObbligatorio | Valori e limiti Numero minimo di elementi: 1 Numero massimo di elementi: 1 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |
Combinazioni di materiali in input
first_frame_to_video · Obbligatorio: image_urls
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametromaterial_types | Contrattotext, image |
Parametrorequired | Contrattonull |
Parametrooptional_controls | Contrattonull |
Ciclo di vita: 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
Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.
Tariffe
Tariffe dei metodi Ailoot
POST /v1/videos/generations- Output
- 0,18 USD per secondo a 1080p
- Output
- 0,07 USD per secondo a 480p
- Output
- 0,14 USD per secondo a 720p
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
Ailoot · Generazione video
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
Ricevi e salva i risultati
Ailoot · Generazione video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Verifica lo stato dell’attività
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
Salva tutte le risorse completate
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
Altre letture di contenuto
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
Conserva tutti i risultati completati
Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.
Conserva ogni elemento di dati e indice di uscita restituito. content_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.
Se occorre verificare la risposta originale
Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.
Campi della risposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campoobject | Tipostring |
Campomodel | Tipostring |
Campostatus | Tipostring |
Campocontent_url | Tiposigned URL |
Campodata[] | Tiposigned URL |
Campousage | Tipoobject |
Camporesult_pending_check | Tipoboolean |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
Risposta409 · video_not_ready | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
Rispostaserver_error | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |
Alias
Alias del modello
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
Ailoot · Generazione video POST /v1/videos/generations happyhorse-i2v-latest
happyhorse-i2v-latesthappyhorse-1.1-i2vhappyhorse-i2vhappyhorse-i2v-latest
Introduzione
Modello per animare un'immagine: l'immagine iniziale definisce il primo fotogramma, mentre la descrizione guida il movimento successivo. Crea un breve video con la possibilità di generare anche l'audio.
- Input accettati
- Testo · Immagini
- Risultati
- Video
Disponibile in Ailoot · input e metodi
Ailoot · Generazione video POST /v1/videos/generations
- Tipi di input
text,image- Tipi di output
video- Formato di output
- mp4
| Campo | Tipo | Requisito | Valori e limiti | Predefinito |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObbligatorio | Valori e limiti happyhorse-i2v-latest | Predefinito— |
Campoprompt | Tipostring | RequisitoFacoltativo | Valori e limiti Lunghezza minima: 1 | Predefinito— |
Campoduration | Tipointeger | RequisitoFacoltativo | Valori e limiti Minimo: 3 Massimo: 15 Unità: secondi | Predefinito5 |
Camporesolution | Tipostring | RequisitoFacoltativo | Valori e limiti 480P, 720P, 1080P | Predefinito720P |
Camporatio | Tipostring | RequisitoNon supportato | Valori e limiti | Predefinito— |
Campoimage_urls | Tipohttps_url|data_image_url[] | RequisitoObbligatorio | Valori e limiti Numero minimo di elementi: 1 Numero massimo di elementi: 1 Numero massimo di byte decodificati: 20.971.520 Tipi MIME: image/jpeg, image/png, image/webp | Predefinito— |
Combinazioni di materiali in input
first_frame_to_video · Obbligatorio: image_urls
Parametri e ciclo di vita del metodo
| Parametro | Contratto |
|---|---|
Parametromaterial_types | Contrattotext, image |
Parametrorequired | Contrattonull |
Parametrooptional_controls | Contrattonull |
Ciclo di vita: 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
Le strutture dei metodi e gli ID sono esatti; la capacità del fornitore è distinta dall’ammissione delle richieste.
Tariffe
Tariffe dei metodi Ailoot
POST /v1/videos/generations- Output
- 0,18 USD per secondo a 1080p
- Output
- 0,07 USD per secondo a 480p
- Output
- 0,14 USD per secondo a 720p
Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. Come funzionano la prenotazione e l’addebito finale →
Esempi di richieste
Ailoot · Generazione video
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
Ricevi e salva i risultati
Ailoot · Generazione video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Verifica lo stato dell’attività
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
Salva tutte le risorse completate
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
Altre letture di contenuto
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
Conserva tutti i risultati completati
Salva ogni video completato o file restituito; recupera ogni URL di risorsa effettivamente restituito.
Conserva ogni elemento di dati e indice di uscita restituito. content_url indica solo il primo; recupera ogni percorso del contenuto o risorsa effettiva. GET del contenuto senza index non restituisce tutti i risultati.
Se occorre verificare la risposta originale
Consulta l'attività originale esistente; non ripetere mai un invio dall'esito sconosciuto.
Campi della risposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campoobject | Tipostring |
Campomodel | Tipostring |
Campostatus | Tipostring |
Campocontent_url | Tiposigned URL |
Campodata[] | Tiposigned URL |
Campousage | Tipoobject |
Camporesult_pending_check | Tipoboolean |
Errori e passaggi successivi
| Risposta | Condizione | Passaggio successivo |
|---|---|---|
Risposta400 · invalid_request_error | CondizioneCampi obbligatori, rappresentazione del materiale o valore del parametro non validi | Passaggio successivoCorreggi i campi indicati prima di una nuova richiesta di creazione. |
Risposta409 · video_not_ready | CondizioneContenuto del risultato originale non ancora disponibile | Passaggio successivoInterroga periodicamente l'ID originale restituito e rispetta Retry-After. |
Rispostaserver_error | CondizioneLa risposta restituita indica che l'operazione o il risultato richiede una verifica | Passaggio successivoConserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione. |
Alias
Alias del modello
Ailoot happyhorse-1.1-i2v, happyhorse-i2v, happyhorse-i2v-latest
Alias dei percorsi dei metodi
Usa i percorsi dei metodi indicati sopra.
ID di chiamata correlati
FAQ · happyhorse-1.1-i2v
- Quali input e risultati sono disponibili?
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- Quali campi usa la richiesta?
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- Quali limiti si applicano?
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