happyhorse-1.1-t2v
Een model om op basis van een tekstbeschrijving een korte video met geluid te maken. Geschikt voor scènes waarin beweging, compositie en visuele stijl in woorden worden vastgelegd.
- Ailoot · Videogeneratie
POST /v1/videos/generationshappyhorse-1.1-t2v - Ailoot · Videogeneratie
POST /v1/videos/generationshappyhorse-t2v - Ailoot · Videogeneratie
POST /v1/videos/generationshappyhorse-t2v-latest
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
HappyHorse-1.1-T2V is een model van Alibaba om korte videoscènes uit tekst te maken. De beschrijving bepaalt de personages, acties, omgeving en visuele uitwerking; deze modus heeft geen bronafbeelding nodig. Het model maakt het videobeeld en kan bijbehorend geluid genereren.
De fabrikant benadrukt het begrip van de scène, de filmische enscenering en de expressiviteit van de beweging. De tekst kan de sfeer, de acties van het personage, het gedrag van objecten en de fysieke dynamiek bepalen. Zo kan de scène worden opgebouwd rond wat er moet gebeuren en vervolgens worden gestuurd met licht, standpunt en camerabeweging.
Ensceneren met woorden
De opdracht is verplicht en mag in elke taal zijn. Ze kan maximaal 5000 niet-Chinese of 2500 Chinese tekens bevatten; het overtollige deel wordt verwijderd. De actie, omgeving en belangrijke visuele details moeten binnen die grens worden beschreven. Deze manier van ensceneren laat het model ruimte om een nieuwe scène te maken, in plaats van een kant-en-klaar eerste frame op te leggen.
In deze modus is tekst het belangrijkste sturende materiaal. Een specifiek personage of voorwerp kan in woorden worden beschreven; het aanleveren van afzonderlijke afbeeldingen om het uiterlijk vast te leggen hoort bij een andere modus van de familie. Het resultaat hangt af van de volledige opdracht. Dezelfde willekeurige seed helpt daarom vergelijkbare varianten te krijgen, maar garandeert geen exacte herhaling.
Video en bijbehorend geluid
Voor HappyHorse-1.1 wordt de videoduur gekozen als een geheel getal van 3 tot 15 seconden. De resoluties 480P, 720P en 1080P worden ondersteund. Het uiteindelijke bestand is MP4 met 24 frames per seconde. Het model kan geluid samen met het beeld genereren en dat geluid koppelen aan wat er in de scène gebeurt.
Het beeldformaat kan vooraf worden bepaald. Beschikbaar zijn 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 en 21:9: van een breed filmisch beeld tot een langgerekte verticale video. Resolutie, formaat en duur bepalen de afmetingen van het resultaat; inhoud en beweging worden door de tekst bepaald.
Deze variant is bedoeld om een nieuwe scène uit een idee in woorden te maken. Ze is geschikt voor een korte episode, een visueel idee of een sfeervideo waarvan de enscenering tekstueel moet worden uitgewerkt.
Ailoot · Videogeneratie POST /v1/videos/generations happyhorse-1.1-t2v
happyhorse-1.1-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Aan de slag
Een model om op basis van een tekstbeschrijving een korte video met geluid te maken. Geschikt voor scènes waarin beweging, compositie en visuele stijl in woorden worden vastgelegd.
- Toegestane invoer
- Tekst
- Resultaten
- Video
Beschikbaar in Ailoot · invoer en methoden
Ailoot · Videogeneratie POST /v1/videos/generations
- Invoer
text- Uitvoer
video- Uitvoerformaat
- mp4
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten happyhorse-1.1-t2v | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldduration | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
Veldresolution | Typestring | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
Veldratio | Typestring | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
Veldimage_urls | Typehttps_url|data_image_url[] | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 0 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |
Combinaties van invoermaterialen
Tekst naar video · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, prompt |
Parametermaterial_types | Contracttext |
Parameteroptional | Contractduration, resolution, ratio |
Parameterduration_integer_range | Contract3, 15 |
Parameterdefault_duration | Contract5 |
Parameterresolution | Contract480P, 720P, 1080P |
Parameterdefault_resolution | Contract720P |
Parameterratio | Contract16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
Parameterratio_must_omit | Contractfalse |
Parameterimage_urls | Contract{"max_count":0} |
Levenscyclus: 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
De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.
Tarieven
Ailoot-methodetarieven
POST /v1/videos/generations- Uitvoer
- US$ 0,18 per seconde bij 1080p
- Uitvoer
- US$ 0,07 per seconde bij 480p
- Uitvoer
- US$ 0,14 per seconde bij 720p
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot · Videogeneratie
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Resultaten ophalen en opslaan
Ailoot · Videogeneratie
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Taakstatus controleren
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 voltooide bestanden opslaan
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
Lezen van andere inhoud
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 voltooide resultaten bewaren
Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.
Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldid | Typestring |
Veldobject | Typestring |
Veldmodel | Typestring |
Veldstatus | Typestring |
Veldcontent_url | Typesigned URL |
Velddata[] | Typesigned URL |
Veldusage | Typeobject |
Veldresult_pending_check | Typeboolean |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoord409 · video_not_ready | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
Antwoordserver_error | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
Ailoot · Videogeneratie POST /v1/videos/generations happyhorse-t2v
happyhorse-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Aan de slag
Een model om op basis van een tekstbeschrijving een korte video met geluid te maken. Geschikt voor scènes waarin beweging, compositie en visuele stijl in woorden worden vastgelegd.
- Toegestane invoer
- Tekst
- Resultaten
- Video
Beschikbaar in Ailoot · invoer en methoden
Ailoot · Videogeneratie POST /v1/videos/generations
- Invoer
text- Uitvoer
video- Uitvoerformaat
- mp4
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten happyhorse-t2v | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldduration | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
Veldresolution | Typestring | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
Veldratio | Typestring | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
Veldimage_urls | Typehttps_url|data_image_url[] | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 0 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |
Combinaties van invoermaterialen
Tekst naar video · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractnull |
Parameteroptional_controls | Contractnull |
Levenscyclus: 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
De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.
Tarieven
Ailoot-methodetarieven
POST /v1/videos/generations- Uitvoer
- US$ 0,18 per seconde bij 1080p
- Uitvoer
- US$ 0,07 per seconde bij 480p
- Uitvoer
- US$ 0,14 per seconde bij 720p
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot · Videogeneratie
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Resultaten ophalen en opslaan
Ailoot · Videogeneratie
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Taakstatus controleren
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 voltooide bestanden opslaan
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
Lezen van andere inhoud
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 voltooide resultaten bewaren
Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.
Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldid | Typestring |
Veldobject | Typestring |
Veldmodel | Typestring |
Veldstatus | Typestring |
Veldcontent_url | Typesigned URL |
Velddata[] | Typesigned URL |
Veldusage | Typeobject |
Veldresult_pending_check | Typeboolean |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoord409 · video_not_ready | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
Antwoordserver_error | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
Ailoot · Videogeneratie POST /v1/videos/generations happyhorse-t2v-latest
happyhorse-t2v-latesthappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Aan de slag
Een model om op basis van een tekstbeschrijving een korte video met geluid te maken. Geschikt voor scènes waarin beweging, compositie en visuele stijl in woorden worden vastgelegd.
- Toegestane invoer
- Tekst
- Resultaten
- Video
Beschikbaar in Ailoot · invoer en methoden
Ailoot · Videogeneratie POST /v1/videos/generations
- Invoer
text- Uitvoer
video- Uitvoerformaat
- mp4
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten happyhorse-t2v-latest | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldduration | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 3 Maximum: 15 Eenheid: seconden | Standaard5 |
Veldresolution | Typestring | VereisteOptioneel | Waarden en limieten 480P, 720P, 1080P | Standaard720P |
Veldratio | Typestring | VereisteOptioneel | Waarden en limieten 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standaard16:9 |
Veldimage_urls | Typehttps_url|data_image_url[] | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 0 Maximumaantal gedecodeerde bytes: 20.971.520 MIME-typen: image/jpeg, image/png, image/webp | Standaard— |
Combinaties van invoermaterialen
Tekst naar video · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractnull |
Parameteroptional_controls | Contractnull |
Levenscyclus: 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
De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.
Tarieven
Ailoot-methodetarieven
POST /v1/videos/generations- Uitvoer
- US$ 0,18 per seconde bij 1080p
- Uitvoer
- US$ 0,07 per seconde bij 480p
- Uitvoer
- US$ 0,14 per seconde bij 720p
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot · Videogeneratie
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v-latest", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Resultaten ophalen en opslaan
Ailoot · Videogeneratie
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Taakstatus controleren
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 voltooide bestanden opslaan
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
Lezen van andere inhoud
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 voltooide resultaten bewaren
Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.
Bewaar elk teruggestuurd gegevensitem en elke uitvoerindex. content_url bevat alleen het eerste resultaat; haal elk werkelijk inhoudspad en elke asset op. GET van inhoud zonder index levert niet alle uitvoer op.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Raadpleeg de bestaande oorspronkelijke opdracht; dien een aanvraag met onbekende verzenduitkomst nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldid | Typestring |
Veldobject | Typestring |
Veldmodel | Typestring |
Veldstatus | Typestring |
Veldcontent_url | Typesigned URL |
Velddata[] | Typesigned URL |
Veldusage | Typeobject |
Veldresult_pending_check | Typeboolean |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoord409 · video_not_ready | VoorwaardeDe oorspronkelijke resultaatinhoud is nog niet beschikbaar | Volgende stapVraag de oorspronkelijk teruggestuurde ID herhaaldelijk op en respecteer Retry-After. |
Antwoordserver_error | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Aliasnamen voor methodepaden
Gebruik de hierboven getoonde methodepaden.
Gerelateerde aanroeper-ID’s
FAQ · happyhorse-1.1-t2v
- Welke invoer en resultaten zijn beschikbaar?
POST /v1/videos/generations·happyhorse-1.1-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v-latest:text→video- Welke velden gebruikt het verzoek?
POST /v1/videos/generations·happyhorse-1.1-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v-latest:model,prompt,duration,resolution,ratio,image_urls- Welke limieten gelden?
POST /v1/videos/generations·happyhorse-1.1-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v-latest:duration.minimum:3;duration.maximum:15