Source: https://ailoot.ai/models/ar/happyhorse-1-1-r2v/
Canonical: https://ailoot.ai/models/ar/happyhorse-1-1-r2v/
Language: ar

# happyhorse-1.1-r2v

[Markdown](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/index.md) · [JSON](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/facts.json)

## [happyhorse-1.1-r2v](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/)

نموذج لتوليد الفيديو من صور مرجعية وسيناريو نصي. يساعد على الحفاظ على مظهر الشخصيات والعناصر والأسلوب البصري في مشهد جديد.

- [**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/#method-0)
- [**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-r2v`](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/#method-1)
- [**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-r2v-latest`](https://ailoot.ai/models/ar/happyhorse-1-1-r2v/#method-2)

عن النموذج

يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.

ينشئ HappyHorse-1.1-R2V مشهد فيديو جديدًا من صور مرجعية وطلب نصي. توجّه Alibaba النموذج نحو الحفاظ على شخصيات وعناصر وأسلوب بصري يمكن التعرف عليها أثناء توليد الحركة. تحدد الصور المرجعية محتوى المشهد ومظهره، بينما يصف النص كيفية تفاعل هذه العناصر.

#### أدوار العينات البصرية

يمكن استخدام صورة واحدة إلى تسع صور. قد تحدد الشخصية أو العنصر أو البيئة أو المعالجة الفنية. يمكن ذكر رقم الصورة المرجعية والعنصر المحدد فيها ضمن الوصف لربط المادة البصرية بالجزء المطلوب من الحركة. يفيد ذلك خصوصًا عند الحاجة إلى جمع عناصر عدة صور في تكوين واحد.

بخلاف وضع الإطار الابتدائي، تُستخدم الصور المرجعية هنا كمرتكزات لمحتوى مشهد جديد. الطلب النصي إلزامي: فهو يربط مظهر العناصر بالفعل وحركة الكاميرا والإخراج العام. يبرز المصنّع الاتساق البصري والحركة السينمائية؛ وتظل النتيجة توليدًا، لا مونتاجًا للصور الأصلية.

تُقبل JPEG وJPG وPNG وWEBP بحجم حتى 20 ميغابايت لكل صورة. يجب ألا يقل طول الجانب القصير عن 400 بكسل؛ ويُنصح بمواد بمستوى 720P أو أعلى. يتكون الإدخال في هذا الوضع من الصور والنص تحديدًا.

#### المدة والإطار والصوت

تُحفظ النتيجة بصيغة MP4 بمعدل 24 إطارًا في الثانية. تُحدد المدة بعدد صحيح من 3 إلى 15 ثانية. يمكن اختيار الدقة بين 480P و720P و1080P؛ ويُدعم توليد صوت مصاحب.

تتوفر إطارات أفقية ورأسية ومربعة: 16:9 و9:16 و1:1 و4:3 و3:4 و4:5 و5:4 و9:21 و21:9. يساعد اختيار الصيغة على تحديد مساحة تكوين المشهد الجديد مسبقًا.

يمكن كتابة النص بأي لغة. يبلغ الحد 5000 حرف غير صيني أو 2500 حرف صيني، ويُحذف الجزء الزائد. يجب أن تتسع هذه المساحة لأهم أدوار الصور المرجعية والفعل والحركة. قد توجّه بذرة العشوائية الابتدائية تشابه النسخ، لكنها لا تضمن إعادة إنتاج الفيديو نفسه بدقة.

**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-1.1-r2v`

[`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos)

Alibaba /`happyhorse-1.1-r2v`

معرّف النموذج ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### البداية

نموذج لتوليد الفيديو من صور مرجعية وسيناريو نصي. يساعد على الحفاظ على مظهر الشخصيات والعناصر والأسلوب البصري في مشهد جديد.

المدخلات المقبولة

النص · الصور

النتائج

فيديو

### متاح في Ailoot · المدخلات والطرائق

**Ailoot · فيديو** `POST /v1/videos/generations`

الإدخال

`text`, `image`

الإخراج

`video`

صيغة الإخراج

mp4

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود happyhorse-1.1-r2v | القيمة الافتراضية— |
| الحقل`prompt` | النوع`string` | المتطلبمطلوب | القيم والحدود الحد الأدنى للطول: ⁦1⁩ | القيمة الافتراضية— |
| الحقل`duration` | النوع`integer` | المتطلباختياري | القيم والحدود الحد الأدنى: ⁦3⁩ الحد الأقصى: ⁦15⁩ الوحدة: ثوانٍ | القيمة الافتراضية⁦5⁩ |
| الحقل`resolution` | النوع`string` | المتطلباختياري | القيم والحدود 480P, 720P, 1080P | القيمة الافتراضية720P |
| الحقل`ratio` | النوع`string` | المتطلباختياري | القيم والحدود 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | القيمة الافتراضية16:9 |
| الحقل`image_urls` | النوع`https_url\|data_image_url[]` | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: ⁦1⁩ الحد الأقصى للعناصر: ⁦9⁩ الحد الأقصى للبايتات بعد فك الترميز: ⁦20,971,520⁩ أنواع MIME: image/jpeg, image/png, image/webp | القيمة الافتراضية— |

تركيبات مواد الإدخال

**reference\_images\_to\_video** · مطلوب: prompt, image\_urls

معلمات الطريقة ودورة حياتها

| المعلمة | المواصفات |
| --- | --- |
| المعلمة`content_type` | المواصفاتapplication/json |
| المعلمة`required` | المواصفاتmodel, prompt, image\_urls |
| المعلمة`material_types` | المواصفاتtext, image |
| المعلمة`optional` | المواصفاتduration, resolution, ratio |
| المعلمة`duration_integer_range` | المواصفات3, 15 |
| المعلمة`default_duration` | المواصفات5 |
| المعلمة`resolution` | المواصفات480P, 720P, 1080P |
| المعلمة`default_resolution` | المواصفات720P |
| المعلمة`ratio` | المواصفات16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
| المعلمة`ratio_must_omit` | المواصفاتfalse |
| المعلمة`image_urls` | المواصفات{"min\_count":1,"max\_count":9,"schemes":\["https","بيانات صور نقطية بترميز base64"\],"max\_data\_image\_bytes":20971520} |

دورة الحياة: `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`

بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.

### الباقات

#### تعرفات طرائق Ailoot

الإخراج

⁦‏0.18 US$⁩ *لكل ثانية بدقة 1080p*

الإخراج

⁦‏0.07 US$⁩ *لكل ثانية بدقة 480p*

الإخراج

⁦‏0.14 US$⁩ *لكل ثانية بدقة 720p*

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot · فيديو

صورة مرجعية

```bash
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
```

### استلام النتائج وحفظها

#### Ailoot · فيديو

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### التحقق من حالة المهمة

GET · جلب الحالة

```bash
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
```

##### حفظ جميع الأصول المكتملة

GET · جلب جميع الأصول المكتملة

```bash
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
```

عمليات أخرى لقراءة المحتوى

GET · جلب المحتوى

```bash
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
```

##### الاحتفاظ بكل النتائج المكتملة

احفظ كل فيديو مكتمل أو ملف مُرجع؛ ونزّل كل أصل من URL الخاص به الذي تم إرجاعه فعليًا.

احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير content\_url إلى الأول فقط؛ اجلب كل مسار محتوى أو أصل فعلي. لا يعيد طلب GET للمحتوى دون index جميع المخرجات.

##### عند الحاجة إلى التحقق من الاستجابة الأصلية

اقرأ المهمة الأصلية الموجودة؛ ولا تعِد إرسال طلب مجهول النتيجة مطلقاً.

حقول الاستجابة

| الحقل | النوع |
| --- | --- |
| الحقل`id` | النوعstring |
| الحقل`object` | النوعstring |
| الحقل`model` | النوعstring |
| الحقل`status` | النوعstring |
| الحقل`content_url` | النوعsigned URL |
| الحقل`data[]` | النوعsigned URL |
| الحقل`usage` | النوعobject |
| الحقل`result_pending_check` | النوعboolean |

الأخطاء والخطوات التالية

| الاستجابة | الشرط | الخطوة التالية |
| --- | --- | --- |
| الاستجابة⁦400⁩ · `invalid_request_error` | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
| الاستجابة⁦409⁩ · `video_not_ready` | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
| الاستجابة`server_error` | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |

### الأسماء البديلة

#### الأسماء البديلة للنموذج

**Ailoot** [`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

#### الأسماء البديلة لمسارات الطرائق

استخدم مسارات الطرائق المعروضة أعلاه.

#### معرّفات النماذج ذات الصلة IDs

[`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-r2v`

[`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos)

Alibaba /`happyhorse-r2v`

معرّف النموذج ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### البداية

نموذج لتوليد الفيديو من صور مرجعية وسيناريو نصي. يساعد على الحفاظ على مظهر الشخصيات والعناصر والأسلوب البصري في مشهد جديد.

المدخلات المقبولة

النص · الصور

النتائج

فيديو

### متاح في Ailoot · المدخلات والطرائق

**Ailoot · فيديو** `POST /v1/videos/generations`

الإدخال

`text`, `image`

الإخراج

`video`

صيغة الإخراج

mp4

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود happyhorse-r2v | القيمة الافتراضية— |
| الحقل`prompt` | النوع`string` | المتطلبمطلوب | القيم والحدود الحد الأدنى للطول: ⁦1⁩ | القيمة الافتراضية— |
| الحقل`duration` | النوع`integer` | المتطلباختياري | القيم والحدود الحد الأدنى: ⁦3⁩ الحد الأقصى: ⁦15⁩ الوحدة: ثوانٍ | القيمة الافتراضية⁦5⁩ |
| الحقل`resolution` | النوع`string` | المتطلباختياري | القيم والحدود 480P, 720P, 1080P | القيمة الافتراضية720P |
| الحقل`ratio` | النوع`string` | المتطلباختياري | القيم والحدود 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | القيمة الافتراضية16:9 |
| الحقل`image_urls` | النوع`https_url\|data_image_url[]` | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: ⁦1⁩ الحد الأقصى للعناصر: ⁦9⁩ الحد الأقصى للبايتات بعد فك الترميز: ⁦20,971,520⁩ أنواع MIME: image/jpeg, image/png, image/webp | القيمة الافتراضية— |

تركيبات مواد الإدخال

**reference\_images\_to\_video** · مطلوب: prompt, image\_urls

معلمات الطريقة ودورة حياتها

| المعلمة | المواصفات |
| --- | --- |
| المعلمة`material_types` | المواصفاتtext, image |
| المعلمة`required` | المواصفاتnull |
| المعلمة`optional_controls` | المواصفاتnull |

دورة الحياة: `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`

بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.

### الباقات

#### تعرفات طرائق Ailoot

الإخراج

⁦‏0.18 US$⁩ *لكل ثانية بدقة 1080p*

الإخراج

⁦‏0.07 US$⁩ *لكل ثانية بدقة 480p*

الإخراج

⁦‏0.14 US$⁩ *لكل ثانية بدقة 720p*

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot · فيديو

صورة مرجعية

```bash
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
```

### استلام النتائج وحفظها

#### Ailoot · فيديو

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### التحقق من حالة المهمة

GET · جلب الحالة

```bash
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
```

##### حفظ جميع الأصول المكتملة

GET · جلب جميع الأصول المكتملة

```bash
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
```

عمليات أخرى لقراءة المحتوى

GET · جلب المحتوى

```bash
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
```

##### الاحتفاظ بكل النتائج المكتملة

احفظ كل فيديو مكتمل أو ملف مُرجع؛ ونزّل كل أصل من URL الخاص به الذي تم إرجاعه فعليًا.

احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير content\_url إلى الأول فقط؛ اجلب كل مسار محتوى أو أصل فعلي. لا يعيد طلب GET للمحتوى دون index جميع المخرجات.

##### عند الحاجة إلى التحقق من الاستجابة الأصلية

اقرأ المهمة الأصلية الموجودة؛ ولا تعِد إرسال طلب مجهول النتيجة مطلقاً.

حقول الاستجابة

| الحقل | النوع |
| --- | --- |
| الحقل`id` | النوعstring |
| الحقل`object` | النوعstring |
| الحقل`model` | النوعstring |
| الحقل`status` | النوعstring |
| الحقل`content_url` | النوعsigned URL |
| الحقل`data[]` | النوعsigned URL |
| الحقل`usage` | النوعobject |
| الحقل`result_pending_check` | النوعboolean |

الأخطاء والخطوات التالية

| الاستجابة | الشرط | الخطوة التالية |
| --- | --- | --- |
| الاستجابة⁦400⁩ · `invalid_request_error` | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
| الاستجابة⁦409⁩ · `video_not_ready` | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
| الاستجابة`server_error` | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |

### الأسماء البديلة

#### الأسماء البديلة للنموذج

**Ailoot** [`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

#### الأسماء البديلة لمسارات الطرائق

استخدم مسارات الطرائق المعروضة أعلاه.

#### معرّفات النماذج ذات الصلة IDs

[`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

**Ailoot · فيديو** `POST /v1/videos/generations` `happyhorse-r2v-latest`

[`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

Alibaba /`happyhorse-r2v-latest`

معرّف النموذج ID

- `happyhorse-1.1-r2v`
- `happyhorse-r2v`
- `happyhorse-r2v-latest`

### البداية

نموذج لتوليد الفيديو من صور مرجعية وسيناريو نصي. يساعد على الحفاظ على مظهر الشخصيات والعناصر والأسلوب البصري في مشهد جديد.

المدخلات المقبولة

النص · الصور

النتائج

فيديو

### متاح في Ailoot · المدخلات والطرائق

**Ailoot · فيديو** `POST /v1/videos/generations`

الإدخال

`text`, `image`

الإخراج

`video`

صيغة الإخراج

mp4

| الحقل | النوع | المتطلب | القيم والحدود | القيمة الافتراضية |
| --- | --- | --- | --- | --- |
| الحقل`model` | النوع`string` | المتطلبمطلوب | القيم والحدود happyhorse-r2v-latest | القيمة الافتراضية— |
| الحقل`prompt` | النوع`string` | المتطلبمطلوب | القيم والحدود الحد الأدنى للطول: ⁦1⁩ | القيمة الافتراضية— |
| الحقل`duration` | النوع`integer` | المتطلباختياري | القيم والحدود الحد الأدنى: ⁦3⁩ الحد الأقصى: ⁦15⁩ الوحدة: ثوانٍ | القيمة الافتراضية⁦5⁩ |
| الحقل`resolution` | النوع`string` | المتطلباختياري | القيم والحدود 480P, 720P, 1080P | القيمة الافتراضية720P |
| الحقل`ratio` | النوع`string` | المتطلباختياري | القيم والحدود 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | القيمة الافتراضية16:9 |
| الحقل`image_urls` | النوع`https_url\|data_image_url[]` | المتطلبمطلوب | القيم والحدود الحد الأدنى للعناصر: ⁦1⁩ الحد الأقصى للعناصر: ⁦9⁩ الحد الأقصى للبايتات بعد فك الترميز: ⁦20,971,520⁩ أنواع MIME: image/jpeg, image/png, image/webp | القيمة الافتراضية— |

تركيبات مواد الإدخال

**reference\_images\_to\_video** · مطلوب: prompt, image\_urls

معلمات الطريقة ودورة حياتها

| المعلمة | المواصفات |
| --- | --- |
| المعلمة`material_types` | المواصفاتtext, image |
| المعلمة`required` | المواصفاتnull |
| المعلمة`optional_controls` | المواصفاتnull |

دورة الحياة: `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`

بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.

### الباقات

#### تعرفات طرائق Ailoot

الإخراج

⁦‏0.18 US$⁩ *لكل ثانية بدقة 1080p*

الإخراج

⁦‏0.07 US$⁩ *لكل ثانية بدقة 480p*

الإخراج

⁦‏0.14 US$⁩ *لكل ثانية بدقة 720p*

تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. [كيفية عمل حجز المبلغ وتسوية الرسوم →](https://ailoot.ai/docs/ar/billing/reserve/)

### أمثلة للطلبات

#### Ailoot · فيديو

صورة مرجعية

```bash
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
```

### استلام النتائج وحفظها

#### Ailoot · فيديو

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### التحقق من حالة المهمة

GET · جلب الحالة

```bash
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
```

##### حفظ جميع الأصول المكتملة

GET · جلب جميع الأصول المكتملة

```bash
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
```

عمليات أخرى لقراءة المحتوى

GET · جلب المحتوى

```bash
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
```

##### الاحتفاظ بكل النتائج المكتملة

احفظ كل فيديو مكتمل أو ملف مُرجع؛ ونزّل كل أصل من URL الخاص به الذي تم إرجاعه فعليًا.

احتفظ بكل عنصر بيانات أو فهرس مخرج مُعاد. يشير content\_url إلى الأول فقط؛ اجلب كل مسار محتوى أو أصل فعلي. لا يعيد طلب GET للمحتوى دون index جميع المخرجات.

##### عند الحاجة إلى التحقق من الاستجابة الأصلية

اقرأ المهمة الأصلية الموجودة؛ ولا تعِد إرسال طلب مجهول النتيجة مطلقاً.

حقول الاستجابة

| الحقل | النوع |
| --- | --- |
| الحقل`id` | النوعstring |
| الحقل`object` | النوعstring |
| الحقل`model` | النوعstring |
| الحقل`status` | النوعstring |
| الحقل`content_url` | النوعsigned URL |
| الحقل`data[]` | النوعsigned URL |
| الحقل`usage` | النوعobject |
| الحقل`result_pending_check` | النوعboolean |

الأخطاء والخطوات التالية

| الاستجابة | الشرط | الخطوة التالية |
| --- | --- | --- |
| الاستجابة⁦400⁩ · `invalid_request_error` | الشرطحقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة | الخطوة التاليةصحّح الحقول المحددة قبل طلب إنشاء جديد. |
| الاستجابة⁦409⁩ · `video_not_ready` | الشرطمحتوى النتيجة الأصلية غير متاح بعد | الخطوة التاليةاستعلم دورياً باستخدام المعرّف الأصلي المُعاد والتزم بـRetry-After. |
| الاستجابة`server_error` | الشرطتشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق | الخطوة التاليةاحتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء. |

### الأسماء البديلة

#### الأسماء البديلة للنموذج

**Ailoot** [`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

#### الأسماء البديلة لمسارات الطرائق

استخدم مسارات الطرائق المعروضة أعلاه.

#### معرّفات النماذج ذات الصلة IDs

[`happyhorse-1.1-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-1.1-r2v&fmt=videos), [`happyhorse-r2v`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v&fmt=videos), [`happyhorse-r2v-latest`](https://ailoot.ai/models/ar/#m=happyhorse-1.1-r2v&route=Core&caller=happyhorse-r2v-latest&fmt=videos)

FAQ · happyhorse-1.1-r2v

ما المدخلات والنتائج المتاحة؟

`POST /v1/videos/generations` · `happyhorse-1.1-r2v`: `text`, `image` → `video` `POST /v1/videos/generations` · `happyhorse-r2v`: `text`, `image` → `video` `POST /v1/videos/generations` · `happyhorse-r2v-latest`: `text`, `image` → `video`

ما الحقول التي يستخدمها الطلب؟

`POST /v1/videos/generations` · `happyhorse-1.1-r2v`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls` `POST /v1/videos/generations` · `happyhorse-r2v`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls` `POST /v1/videos/generations` · `happyhorse-r2v-latest`: `model`, `prompt`, `duration`, `resolution`, `ratio`, `image_urls`

ما الحدود المطبقة؟

`POST /v1/videos/generations` · `happyhorse-1.1-r2v`: `duration.minimum`: `3`; `duration.maximum`: `15` `POST /v1/videos/generations` · `happyhorse-r2v`: `duration.minimum`: `3`; `duration.maximum`: `15` `POST /v1/videos/generations` · `happyhorse-r2v-latest`: `duration.minimum`: `3`; `duration.maximum`: `15`

اربط Ailoot بخدمة Claude Code أوOpenCode أوHermes أوتطبيقك.

## الشركة ومحفظة مشاريعها

الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.

## اشتر الرموز بخصم.

خصم اشتراك للعمل المنتظم. الرموز الترويجية حتى 50% على شراء الرموز.

الاشتراك

اختر خطة بخصم لطلباتك المنتظمة.

رمز خصم حتى 50%

أدخل الرمز عند الشراء. يعاد حساب السعر وفق العرض الساري.

المصروفات في السجل

يحفظ النموذج والرموز والمبلغ لكل طلب.

[اختر اشتراكا](https://ailoot.ai/docs/ar/billing/subscriptions/) · [اعرض أسعار النماذج](https://ailoot.ai/models/ar/)

## اربط API بالمنتج الذي تبيعه.

SaaS والتطبيقات والبوتات وفق العرض واتفاقية ترخيص Ailoot. لإعادة البيع، اطلب ترخيص موزع.

تطبيق تجاري

أضف توليد النص والصور والفيديو والصوت إلى ميزات خدمتك المدفوعة.

ترخيص إعادة البيع

أرسل وصف المشروع وطريقة توفير الوصول. اطلب شروط استخدام وإعادة بيع مكتوبة.

المستندات على الموقع

العرض واتفاقية الترخيص وسياسة معالجة البيانات متاحة قبل الربط.

[اطلب ترخيص إعادة بيع](mailto:support@ailoot.ai) · [العرض واتفاقية الترخيص](https://ailoot.ai/legal/offer?lang=ar)

## Ailoot · الشركة ومحفظة مشاريعها





تستند Ailoot إلى خبرة تشغيلية متراكمة وقاعدة عملاء واسعة وخدمة مستقرة ومراقبة مستمرة لمؤشرات الأداء KPI.





الشركة ومحفظة مشاريعها: ملايين العملاء؛ مبيعات بالمليارات شهريًا.





توظف Ailoot هذه الخبرة التشغيلية لإتاحة الوصول عبر API إلى قدرات الذكاء الاصطناعي في منتجات العملاء ووكلائهم وتطبيقاتهم وعمليات الأتمتة.
