模型

vidu-2.0

Markdown · JSON

vidu-2.0

Vidu 2.0 依提示詞產生影片,也可選擇以圖片與結束圖片引導。依預定使用位置,透過 Ailoot 選擇片長、畫面比例與解析度。

關於模型

此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。

選擇 vidu-2.0,提供 model 與 prompt。請求提供 image、end_image 與 negative_prompt,以及四秒或八秒片長、360p、720p 或 1080p 解析度,和五種畫面比例選項:16:9、1:1、9:16、4:3 或 3:4。

先描述主體、場景與移動,再加入攝影機指示。若以圖片引導鏡頭,請說明其作用,以及哪些細節應保持可辨識。產品短片應定義揭示動作與最後構圖;人物鏡頭應指定手勢與結束姿勢。將選定提示詞與圖片角色連同產生的影片一起保留。

透過 /v1/videos 提交鏡頭一次,並保留回傳的 request ID。透過 /v1/videos/{request_id} 輪詢同一操作,再儲存每個完成的影片輸出與完整回應。依所附素材與任務說明檢視完整動作與最後構圖。

Ailoot Ultra · Video POST /v1/videos vidu-2.0

vidu-2.0

其他 /vidu-2.0

入門

Vidu 2.0 依提示詞產生影片,也可選擇以圖片與結束圖片引導。依預定使用位置,透過 Ailoot 選擇片長、畫面比例與解析度。

接受的輸入
文字 · 圖片
結果
影片

Ailoot 可用 · 輸入與方法

Ailoot Ultra · Video POST /v1/videos
輸入
text, image
輸出
video
欄位類型要求值與限制預設值
欄位model類型string要求必填值與限制
vidu-2.0
條件: 請原樣使用這個 Ailoot 路由選擇值。
預設值—
欄位aspect_ratio類型string要求選填值與限制
16:9, 1:1, 9:16, 4:3, 3:4
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
欄位duration類型integer要求選填值與限制
4, 8
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
欄位end_image類型string要求選填值與限制
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
欄位image類型string or array<string>要求選填值與限制
條件: 請提供您實際可存取的圖片 URL。只有參數結構描述列出陣列時,才接受清單。
預設值—
欄位negative_prompt類型string要求選填值與限制
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
欄位prompt類型string要求必填值與限制
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
欄位resolution類型string要求選填值與限制
360p, 720p, 1080p
條件: 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。
預設值—
方法參數與生命週期
參數規格
參數content_type規格application/json
參數required規格model, prompt
參數optional規格aspect_ratio, duration, end_image, image, negative_prompt, resolution
參數material_types規格text, image
參數conditions規格請原樣使用這個 Ailoot 路由選擇值。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。, 請提供您實際可存取的圖片 URL。只有參數結構描述列出陣列時,才接受清單。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。, 請使用所選模型文件記載的欄位與列出的選項;未指定的選填值請省略。

方法別名: /v1/videos/generations

生命週期: submit_once_poll_original

GET /v1/videos/{request_id}

GET /v1/videos/generations/{request_id}

GET /v1/videos/{request_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

方案

最終費用的計算方式

顯示的費率用於在生成前估算費用。最終費用依原始生成作業記錄的成本計算。實測的輸出時間長度與預估數量並非最終計費數量。

費率資訊不會增加請求選項。支援的參數列於所選方法中。

快速模式
未指定 選取快速模式時
flex 模式
未指定 選取 flex 模式時
最高推理強度
未指定 最高推理強度採用 default 調整值時

供比較的預估費率

各設定的價格

請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。

設定費率表預估數量費用
設定基礎 token 費率費率表基本費率預估數量—費用
輸入 · 輸入 Token · 僅供比較的估算 — / 1K Token
輸出 · 輸出 Token · 僅供比較的估算 — / 1K Token
輸入 · 讀取快取 · 僅供比較的估算 — / 1K Token
輸入 · 寫入快取 · 僅供比較的估算 — / 1K Token
輸入 · 寫入快取,1 小時 · 僅供比較的估算 — / 1K Token
設定預估生成費用費率表—預估數量單次生成估算值費用
輸出 · 預估生成費用 · 僅供比較的估算 $0.4 生成前估算

此估算並非額外費用,也不是本次生成完成後的固定費率。

Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →

請求範例

Ailoot Ultra · Video

curl · 僅建立一次並保留完整結果讀取原始任務儲存您擁有的每個已完成素材
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
: "${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "vidu-2.0", "prompt": "A cat is walking on grass.", "image": "YOUR_ACCESSIBLE_IMAGE_URL"}')
p['image']=os.environ['AILOOT_IMAGE_URL']
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 \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
# Submit once. Retain the complete result, original identifiers and every response header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
    raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("status.json").read_text())
roles={}
def visit(v,path=""):
    if isinstance(v,dict):
        for k,x in v.items(): visit(x,path+"/"+k)
    elif isinstance(v,list):
        for i,x in enumerate(v): visit(x,path+"/"+str(i))
    elif isinstance(v,str):
        u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
        if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
            roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
    target=Path(f"asset-{i}.bin")
    subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
    raw=target.read_bytes()
    if not raw: raise SystemExit("Empty asset; retain original status and metadata")
    ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
    name=f"asset-{i}.{ext}"
    if target.name!=name: target.rename(name)
    manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS

接收並儲存結果

Ailoot Ultra · Video

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
保留所有已完成的結果

請儲存每部已完成的影片或傳回的檔案,並從實際傳回的每個素材 URL 取得素材。

請保留完整回應與標頭、原始識別碼、每個實際輸出,以及所有用量/帳務欄位。請儲存每個不重複的自有資產,並保留指向該資產的每個角色。

需要檢查原始回應時

請保留回傳的公開工作或操作 id,以及所有標頭。僅讀取原始工作;unknown 或 result_pending_check 均不代表可以再次建立。

回應欄位
欄位類型
欄位id類型string
欄位polling_url類型string
欄位provider_task_id類型string
欄位task_id類型string
欄位status類型string
欄位video_url類型string
錯誤與後續步驟
回應條件下一步
回應400 · invalid_request_error條件必要欄位、模型選擇值、型別或輸入表示格式無效。下一步準備另一個獨立請求前,請檢視傳回的驗證詳情。
回應條件原始請求或結果不明,或需要檢查。下一步請保留原始識別碼與標頭,僅讀取支援的狀態資料或媒體庫紀錄。請勿再次提交建立請求。

別名

模型別名

Ailoot Ultra vidu-2.0

方法路徑別名

/v1/videos/generations

相關呼叫用 ID

vidu-2.0

FAQ · vidu-2.0
可以使用哪些輸入與結果?

POST /v1/videos · vidu-2.0: text, image → video

請求使用哪些欄位?

POST /v1/videos · vidu-2.0: model, aspect_ratio, duration, end_image, image, negative_prompt, prompt, resolution

更多詳情

將 Ailoot 串接 Claude Code、OpenCode、Hermes 或自己的應用程式。

公司及其專案組合

公司及其專案組合:數百萬客戶,每月銷售額達數十億。

優惠購買 token。

訂閱優惠適合持續工作,折扣碼購買 token 最高可折 50%。

訂閱
為定期請求選擇優惠方案。
最高 50% 折扣碼
購買時輸入代碼,價格依活動重算。
歷史中的費用
每次請求保存模型、token 與金額。

選擇訂閱 · 查看模型價格

將 API 加入 你銷售的產品。

依 Ailoot 正式服務條款與授權合約串接 SaaS、應用程式與機器人;轉售請申請經銷授權。

商用應用程式
在付費功能加入文字、圖片、影片與聲音生成。
經銷授權
提供專案說明與存取方式,要求書面使用和轉售條件。
網站文件
串接前可閱讀正式服務條款、授權合約與資料處理政策。

申請經銷授權 · 正式服務條款與授權合約