happyhorse-1.1-r2v
Model til videogenerering ud fra referencebilleder og et tekstbaseret scenarie. Hjælper med at bevare figurernes udseende, genstande og visuel stil i en ny scene.
- Ailoot · Videoer
POST /v1/videos/generationshappyhorse-1.1-r2v - Ailoot · Videoer
POST /v1/videos/generationshappyhorse-r2v - Ailoot · Videoer
POST /v1/videos/generationshappyhorse-r2v-latest
Om modellen
Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.
HappyHorse-1.1-R2V skaber en ny videoscene ud fra referencebilleder og en tekstinstruktion. Alibaba retter modellen mod at bevare genkendelige figurer, objekter og visuel stil ved generering af bevægelse. Referencerne fastlægger scenens indhold og udseende, mens teksten beskriver, hvordan elementerne skal samspille.
De visuelle eksemplers roller
Der kan bruges fra ét til ni billeder. De kan fastlægge en figur, en genstand, omgivelserne eller det kunstneriske udtryk. Beskrivelsen kan angive referencens nummer og et bestemt objekt i den, så det visuelle materiale knyttes til den rette del af handlingen. Det er især nyttigt, når elementer fra flere billeder skal samles i én komposition.
I modsætning til tilstanden med en startframe fungerer referencerne her som grundlag for en ny scenes indhold. Tekstinstruktionen er obligatorisk: den forbinder objekternes udseende med handling, kamerabevægelse og samlet iscenesættelse. Producenten fremhæver visuel sammenhæng og filmisk bevægelse; resultatet er stadig en generering, ikke en montage af udgangsbillederne.
JPEG, JPG, PNG og WEBP på højst 20 MB hver accepteres. Billedets korte side skal være mindst 400 pixels; materiale i 720P eller højere anbefales. Input til denne tilstand består netop af billeder og tekst.
Varighed, billedformat og lyd
Resultatet gemmes som MP4 med 24 frames i sekundet. Varigheden angives som et heltal fra 3 til 15 sekunder. Opløsningen kan vælges mellem 480P, 720P og 1080P; generering af ledsagende lyd understøttes.
Vandrette, lodrette og kvadratiske billedformater er tilgængelige: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 og 21:9. Formatvalget hjælper med at fastlægge den nye scenes kompositionsrum på forhånd.
Teksten kan være på ethvert sprog. Grænsen er 5000 ikke-kinesiske eller 2500 kinesiske tegn; den overskydende del kasseres. Referencernes vigtigste roller, handlingen og bevægelsen skal kunne beskrives inden for denne mængde. Tilfældighedsseedet kan styre ligheden mellem varianter, men garanterer ikke en nøjagtig gentagelse af en video.
Ailoot · Videoer POST /v1/videos/generations happyhorse-1.1-r2v
happyhorse-1.1-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Start
Model til videogenerering ud fra referencebilleder og et tekstbaseret scenarie. Hjælper med at bevare figurernes udseende, genstande og visuel stil i en ny scene.
- Accepterede input
- Tekst · Billeder
- Resultater
- Video
Tilgængelig i Ailoot · input og metoder
Ailoot · Videoer POST /v1/videos/generations
- Inputtyper
text,image- Outputtyper
video- Outputformat
- mp4
| Felt | Type | Krav | Værdier og grænser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrævet | Værdier og grænser happyhorse-1.1-r2v | Standard— |
Feltprompt | Typestring | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
Feltduration | Typeinteger | KravValgfrit | Værdier og grænser Minimum: 3 Maksimum: 15 Enhed: sekunder | Standard5 |
Feltresolution | Typestring | KravValgfrit | Værdier og grænser 480P, 720P, 1080P | Standard720P |
Feltratio | Typestring | KravValgfrit | Værdier og grænser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
Feltimage_urls | Typehttps_url|data_image_url[] | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 Maksimalt antal elementer: 9 Maksimalt antal afkodede bytes: 20.971.520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |
Kombinationer af inputmaterialer
reference_images_to_video · Påkrævet: prompt, image_urls
Metodeparametre og livscyklus
| Parameter | Kontrakt |
|---|---|
Parametercontent_type | Kontraktapplication/json |
Parameterrequired | Kontraktmodel, prompt, image_urls |
Parametermaterial_types | Kontrakttext, image |
Parameteroptional | Kontraktduration, resolution, ratio |
Parameterduration_integer_range | Kontrakt3, 15 |
Parameterdefault_duration | Kontrakt5 |
Parameterresolution | Kontrakt480P, 720P, 1080P |
Parameterdefault_resolution | Kontrakt720P |
Parameterratio | Kontrakt16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
Parameterratio_must_omit | Kontraktfalse |
Parameterimage_urls | Kontrakt{"min_count":1,"max_count":9,"schemes":["https","base64-kodede rasterdata"],"max_data_image_bytes":20971520} |
Livscyklus: 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
Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.
Priser
Ailoot-metodetakster
POST /v1/videos/generations- Output
- 0,18 US$ pr. sekund ved 1080p
- Output
- 0,07 US$ pr. sekund ved 480p
- Output
- 0,14 US$ pr. sekund ved 720p
Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →
Eksempelanmodninger
Ailoot · Videoer
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
Hent og gem resultater
Ailoot · Videoer
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kontrollér opgavestatus
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
Gem alle færdige filer
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
Læsning af andet indhold
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
Behold alle færdige resultater
Gem hver færdig video eller returneret fil; hent hver faktisk returneret fil-URL.
Bevar hvert returneret dataelement og outputindeks. content_url omfatter kun det første; hent hver faktisk indholdssti og hvert aktiv. GET af indhold uden index giver ikke alle output.
Hvis det oprindelige svar skal kontrolleres
Læs det eksisterende oprindelige job; indsend aldrig en afsendelse med ukendt udfald igen.
Svarfelter
| Felt | Type |
|---|---|
Feltid | Typestring |
Feltobject | Typestring |
Feltmodel | Typestring |
Feltstatus | Typestring |
Feltcontent_url | Typesigned URL |
Feltdata[] | Typesigned URL |
Feltusage | Typeobject |
Feltresult_pending_check | Typeboolean |
Fejl og næste trin
| Svar | Betingelse | Næste trin |
|---|---|---|
Svar400 · invalid_request_error | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |
Svar409 · video_not_ready | BetingelseDet oprindelige resultatindhold er endnu ikke tilgængeligt | Næste trinForespørg på status med det oprindeligt returnerede ID, og overhold Retry-After. |
Svarserver_error | BetingelseDet returnerede svar angiver, at operationen eller resultatet skal kontrolleres | Næste trinGem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen. |
Aliaser
Modelaliaser
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliaser for metodestier
Brug metodestierne vist ovenfor.
Relaterede kalder-ID’er
Ailoot · Videoer POST /v1/videos/generations happyhorse-r2v
happyhorse-r2vhappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Start
Model til videogenerering ud fra referencebilleder og et tekstbaseret scenarie. Hjælper med at bevare figurernes udseende, genstande og visuel stil i en ny scene.
- Accepterede input
- Tekst · Billeder
- Resultater
- Video
Tilgængelig i Ailoot · input og metoder
Ailoot · Videoer POST /v1/videos/generations
- Inputtyper
text,image- Outputtyper
video- Outputformat
- mp4
| Felt | Type | Krav | Værdier og grænser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrævet | Værdier og grænser happyhorse-r2v | Standard— |
Feltprompt | Typestring | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
Feltduration | Typeinteger | KravValgfrit | Værdier og grænser Minimum: 3 Maksimum: 15 Enhed: sekunder | Standard5 |
Feltresolution | Typestring | KravValgfrit | Værdier og grænser 480P, 720P, 1080P | Standard720P |
Feltratio | Typestring | KravValgfrit | Værdier og grænser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
Feltimage_urls | Typehttps_url|data_image_url[] | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 Maksimalt antal elementer: 9 Maksimalt antal afkodede bytes: 20.971.520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |
Kombinationer af inputmaterialer
reference_images_to_video · Påkrævet: prompt, image_urls
Metodeparametre og livscyklus
| Parameter | Kontrakt |
|---|---|
Parametermaterial_types | Kontrakttext, image |
Parameterrequired | Kontraktnull |
Parameteroptional_controls | Kontraktnull |
Livscyklus: 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
Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.
Priser
Ailoot-metodetakster
POST /v1/videos/generations- Output
- 0,18 US$ pr. sekund ved 1080p
- Output
- 0,07 US$ pr. sekund ved 480p
- Output
- 0,14 US$ pr. sekund ved 720p
Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →
Eksempelanmodninger
Ailoot · Videoer
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
Hent og gem resultater
Ailoot · Videoer
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kontrollér opgavestatus
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
Gem alle færdige filer
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
Læsning af andet indhold
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
Behold alle færdige resultater
Gem hver færdig video eller returneret fil; hent hver faktisk returneret fil-URL.
Bevar hvert returneret dataelement og outputindeks. content_url omfatter kun det første; hent hver faktisk indholdssti og hvert aktiv. GET af indhold uden index giver ikke alle output.
Hvis det oprindelige svar skal kontrolleres
Læs det eksisterende oprindelige job; indsend aldrig en afsendelse med ukendt udfald igen.
Svarfelter
| Felt | Type |
|---|---|
Feltid | Typestring |
Feltobject | Typestring |
Feltmodel | Typestring |
Feltstatus | Typestring |
Feltcontent_url | Typesigned URL |
Feltdata[] | Typesigned URL |
Feltusage | Typeobject |
Feltresult_pending_check | Typeboolean |
Fejl og næste trin
| Svar | Betingelse | Næste trin |
|---|---|---|
Svar400 · invalid_request_error | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |
Svar409 · video_not_ready | BetingelseDet oprindelige resultatindhold er endnu ikke tilgængeligt | Næste trinForespørg på status med det oprindeligt returnerede ID, og overhold Retry-After. |
Svarserver_error | BetingelseDet returnerede svar angiver, at operationen eller resultatet skal kontrolleres | Næste trinGem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen. |
Aliaser
Modelaliaser
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliaser for metodestier
Brug metodestierne vist ovenfor.
Relaterede kalder-ID’er
Ailoot · Videoer POST /v1/videos/generations happyhorse-r2v-latest
happyhorse-r2v-latesthappyhorse-1.1-r2vhappyhorse-r2vhappyhorse-r2v-latest
Start
Model til videogenerering ud fra referencebilleder og et tekstbaseret scenarie. Hjælper med at bevare figurernes udseende, genstande og visuel stil i en ny scene.
- Accepterede input
- Tekst · Billeder
- Resultater
- Video
Tilgængelig i Ailoot · input og metoder
Ailoot · Videoer POST /v1/videos/generations
- Inputtyper
text,image- Outputtyper
video- Outputformat
- mp4
| Felt | Type | Krav | Værdier og grænser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrævet | Værdier og grænser happyhorse-r2v-latest | Standard— |
Feltprompt | Typestring | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
Feltduration | Typeinteger | KravValgfrit | Værdier og grænser Minimum: 3 Maksimum: 15 Enhed: sekunder | Standard5 |
Feltresolution | Typestring | KravValgfrit | Værdier og grænser 480P, 720P, 1080P | Standard720P |
Feltratio | Typestring | KravValgfrit | Værdier og grænser 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Standard16:9 |
Feltimage_urls | Typehttps_url|data_image_url[] | KravPåkrævet | Værdier og grænser Minimumsantal elementer: 1 Maksimalt antal elementer: 9 Maksimalt antal afkodede bytes: 20.971.520 MIME-typer: image/jpeg, image/png, image/webp | Standard— |
Kombinationer af inputmaterialer
reference_images_to_video · Påkrævet: prompt, image_urls
Metodeparametre og livscyklus
| Parameter | Kontrakt |
|---|---|
Parametermaterial_types | Kontrakttext, image |
Parameterrequired | Kontraktnull |
Parameteroptional_controls | Kontraktnull |
Livscyklus: 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
Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.
Priser
Ailoot-metodetakster
POST /v1/videos/generations- Output
- 0,18 US$ pr. sekund ved 1080p
- Output
- 0,07 US$ pr. sekund ved 480p
- Output
- 0,14 US$ pr. sekund ved 720p
Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →
Eksempelanmodninger
Ailoot · Videoer
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_IMAGE_URLS_FILE:?Set a JSON file containing your actual reference-image URLs}"
export AILOOT_IMAGE_URLS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-r2v-latest", "prompt": "The subject walks slowly toward the camera.", "duration": 5, "resolution": "720P"}')
from urllib.parse import urlsplit
f=Path(os.environ["AILOOT_IMAGE_URLS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual reference URL JSON file")
urls=json.loads(f.read_text())
if not isinstance(urls,list) or not 1<=len(urls)<=9:raise SystemExit("Provide one to nine reference-image URLs")
for u in urls:
z=urlsplit(u) if isinstance(u,str) else None
if not z or z.scheme!="https" or not z.netloc or z.username or z.password:raise SystemExit("Each reference must be an actual HTTPS image URL")
p["image_urls"]=urls
p["ratio"]="16:9"
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
Hent og gem resultater
Ailoot · Videoer
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kontrollér opgavestatus
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
Gem alle færdige filer
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
Læsning af andet indhold
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
Behold alle færdige resultater
Gem hver færdig video eller returneret fil; hent hver faktisk returneret fil-URL.
Bevar hvert returneret dataelement og outputindeks. content_url omfatter kun det første; hent hver faktisk indholdssti og hvert aktiv. GET af indhold uden index giver ikke alle output.
Hvis det oprindelige svar skal kontrolleres
Læs det eksisterende oprindelige job; indsend aldrig en afsendelse med ukendt udfald igen.
Svarfelter
| Felt | Type |
|---|---|
Feltid | Typestring |
Feltobject | Typestring |
Feltmodel | Typestring |
Feltstatus | Typestring |
Feltcontent_url | Typesigned URL |
Feltdata[] | Typesigned URL |
Feltusage | Typeobject |
Feltresult_pending_check | Typeboolean |
Fejl og næste trin
| Svar | Betingelse | Næste trin |
|---|---|---|
Svar400 · invalid_request_error | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |
Svar409 · video_not_ready | BetingelseDet oprindelige resultatindhold er endnu ikke tilgængeligt | Næste trinForespørg på status med det oprindeligt returnerede ID, og overhold Retry-After. |
Svarserver_error | BetingelseDet returnerede svar angiver, at operationen eller resultatet skal kontrolleres | Næste trinGem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen. |
Aliaser
Modelaliaser
Ailoot happyhorse-1.1-r2v, happyhorse-r2v, happyhorse-r2v-latest
Aliaser for metodestier
Brug metodestierne vist ovenfor.
Relaterede kalder-ID’er
FAQ · happyhorse-1.1-r2v
- Hvilke input og resultater er tilgængelige?
POST /v1/videos/generations·happyhorse-1.1-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v:text,image→videoPOST /v1/videos/generations·happyhorse-r2v-latest:text,image→video- Hvilke felter bruger anmodningen?
POST /v1/videos/generations·happyhorse-1.1-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-r2v-latest:model,prompt,duration,resolution,ratio,image_urls- Hvilke grænser gælder?
POST /v1/videos/generations·happyhorse-1.1-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-r2v-latest:duration.minimum:3;duration.maximum:15