Gemini 3.6 Flash and 3.5 Flash Lite are now live on CometAPI →
X

Grok Imagine Video

每秒:$0.04
發布時間:Feb 27, 2026

可根據文字提示生成影片,將靜態圖片動態化,或以自然語言編輯現有影片。API 支援為生成的影片自訂時長、寬高比與解析度 — SDK 會自動處理非同步輪詢。

熱門
商業用途

Grok Imagine Video 的 Playground

探索 Grok Imagine Video 的 Playground — 一個互動式環境,可測試模型並即時執行查詢。嘗試提示、調整參數,並立即迭代以加速開發並驗證使用案例。

📘 Grok Imagine Video 的技術規格

規格詳情
Model IDgrok-imagine-video
ProviderxAI
Type影片生成與編輯 AI
Input Types文字(提示);可選圖片或影片。文字提示(自然語言);可選圖片輸入(image→video);可選提供 video_url 以編輯現有片段。不同端點的編輯輸入影片最長時長有所差異——據報在部分編輯流程中約為 ~8.7 秒。
Output Types透過臨時 URL 提供的 .mp4 影片
Duration Range (generate)1–15 秒
Resolution480p、720p(可設定)
Aspect Ratios1:1、16:9、9:16
Edit Support是 — 可將影片動畫化與修改至最多 8.7 秒
Moderation包含內容審核
Pricing按秒計費,費用隨解析度而異

🚀 什麼是 Grok Imagine Video?

Grok Imagine Video 是 xAI 透過 CometAPI 提供的進階影片生成與編輯 AI 模型。它可讓開發者以自然語言提示生成短篇、客製化影片,並可選擇將靜態圖片動畫化或編輯現有片段。該模型支援設定輸出長度、解析度與長寬比,並內建內容審核以確保遵循政策。

🧠Main features(Grok Imagine 的差異點)

  • 原生音訊 + 對嘴:產生同步的環境音、音效與短語音/旁白,並提供近似唇形同步。
  • 圖片→影片 / 提示編輯:可將靜態圖動畫化,或透過文字提示編輯既有素材(移除/替換物件、重定時、變更風格)。
  • 快速迭代與低延遲:為創意流程與產品原型打造,提供快速回饋迭代。
  • 生產級 API:Imagine API 提供程式化端點,支援批次生成、整合至剪輯流程與企業控管。
  • 多種「模式」/ 風格:面向使用者的模式(據報示例:Normal / Fun / Spicy 或類似預設),用以偏置輸出的風格或寬鬆程度(注意:「Spicy」模式在歷史上曾啟用 NSFW)。
Model (company)Max res (public)Max clip len (public)Native audio?優勢注意事項
Grok Imagine (xAI)720p6–15 秒Yes快速迭代、成本/延遲具優勢、整合編輯、原生音訊受限於 720p;審核相關顧慮;真實度表現因情境而異
Sora (OpenAI)720p–1080p(視等級而定)短(6–15 秒)Yes高視覺擬真度;與 OpenAI 生態整合度高價格較高;審核/控管較受限制
Veo (Google DeepMind)最高可達 1080p+短(不等)Yes強寫實度、運動穩定成本較高;公開試驗較少
Runway Gen-4.51080p+短(不等)Yes廣受創意流程採用,高擬真度成本較高;聚焦於創作工具
Vidu / Kling / Pika (various specialists)最高至 1080p短(不等)Mixed部分提供利基功能(Smart Cuts、多鏡次串接)音訊支援不一;API 成熟度各異

⚠️ 限制

  • 最大影片長度上限為 15 秒。
  • 編輯保留輸入影片長度(≤ 8.7 秒)。
  • 生成的 URL 為臨時性——請及時下載。

如何存取與整合 Grok Imagine Video

步驟 1:註冊取得 API Key

登入 cometapi.com。若您尚未成為我們的用戶,請先註冊。登入您的 CometAPI console。取得該介面的存取憑證 API Key。在個人中心的 API token 處點擊 “Add Token”,取得 Token Key:sk-xxxxx 並提交。

步驟 2:向 Grok Imagine Video API 發送請求

選擇 “grok-imagine-video” 端點發送 API 請求並設定請求內容。請求方法與請求內容可於我們網站的 API 文件取得。我們的網站也提供 Apifox 測試以供方便使用。將 <YOUR_API_KEY> 替換為您帳戶中的實際 CometAPI 金鑰。調用位置:GROK影片生成影片編輯

步驟 3:向 Grok Imagine Video API 發送請求

輸入文字或上傳圖片(您可以選擇提供來源圖片以進行動畫化)。Grok Imagine AI API 會分析您的輸入並準備可供 URL 存取的內容。同時支援文字轉影片與圖片轉影片。

來源圖片可透過以下方式提供:

  • 指向圖片的公開 URL
  • base64 編碼的 data URI(例如:data:image/jpeg;base64,<YOUR_BASE64_IMAGE>

步驟 4:擷取並驗證結果

處理 API 回應以取得生成結果。處理後,API 會回應任務狀態與輸出資料。提交後會立即返回 request_id;使用 GET 端點檢查狀態並擷取生成的影片。影片編輯為非同步,您可能需要多次輪詢該端點直到任務完成。請及時下載。

常見問題

Grok Imagine Video 的定價

探索 Grok Imagine Video 的競爭性定價,專為滿足各種預算和使用需求而設計。我們靈活的方案確保您只需為實際使用量付費,讓您能夠隨著需求增長輕鬆擴展。了解 Grok Imagine Video 如何在保持成本可控的同時提升您的專案效果。

Pricing Overview

CategoryItemPrice
Input PricingTextN/A (Free)
Image$0.0016
Video per second$0.008
Output Pricing480p$0.04
(Per second by resolution)720p$0.056

Note: When generating video via API, you are charged per second. You will also be charged when using video or images as input.

Grok Imagine Video 的範例程式碼和 API

存取完整的範例程式碼和 API 資源,以簡化您的 Grok Imagine Video 整合流程。我們詳盡的文件提供逐步指引,協助您在專案中充分發揮 Grok Imagine Video 的潛力。

#!/bin/bash

# Get your CometAPI key from https://api.cometapi.com/console/token
# Export it as: export COMETAPI_KEY="your-key-here"

BASE_URL="https://api.cometapi.com/grok/v1"

# ============================================================
# Step 1: Create Video Generation Task
# ============================================================
echo "Step 1: Creating video generation task..."

CREATE_RESPONSE=$(curl -s --location --request POST "${BASE_URL}/videos/generations" \
  --header "Authorization: Bearer $COMETAPI_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "grok-imagine-video",
    "prompt": "A glowing crystal-powered rocket launching from the red dunes of Mars, ancient alien ruins lighting up in the background as it soars into a sky full of unfamiliar constellations",
    "duration": 10,
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }')

echo "Create response: $CREATE_RESPONSE"

# Extract task ID using jq (install with: brew install jq)
TASK_ID=$(echo "$CREATE_RESPONSE" | jq -r '.request_id // .id')

if [ "$TASK_ID" == "null" ] || [ -z "$TASK_ID" ]; then
  echo "Error: Failed to get task ID from response"
  exit 1
fi

echo "Task ID: $TASK_ID"

# ============================================================
# Step 2: Poll for Task Status
# ============================================================
echo ""
echo "Step 2: Polling task status..."

while true; do
  QUERY_RESPONSE=$(curl -s --location --request GET "${BASE_URL}/videos/${TASK_ID}" \
    --header "Authorization: Bearer $COMETAPI_KEY")

  STATUS=$(echo "$QUERY_RESPONSE" | jq -r '.data.status')
  PROGRESS=$(echo "$QUERY_RESPONSE" | jq -r '.data.progress')
  echo "Status: $STATUS, Progress: $PROGRESS"

  if [ "$STATUS" == "FAILURE" ] || [ "$STATUS" == "failed" ]; then
    echo "Video generation failed!"
    echo "$QUERY_RESPONSE" | jq -r '.data.fail_reason'
    exit 1
  fi

  if [ "$STATUS" == "SUCCESS" ]; then
    VIDEO_URL=$(echo "$QUERY_RESPONSE" | jq -r '.data.data.video.url')
    echo "Video generation completed!"
    echo "Video URL: $VIDEO_URL"
    break
  fi

  sleep 10
done

cURL Code Example

#!/bin/bash

# Get your CometAPI key from https://api.cometapi.com/console/token
# Export it as: export COMETAPI_KEY="your-key-here"

BASE_URL="https://api.cometapi.com/grok/v1"

# ============================================================
# Step 1: Create Video Generation Task
# ============================================================
echo "Step 1: Creating video generation task..."

CREATE_RESPONSE=$(curl -s --location --request POST "${BASE_URL}/videos/generations" \
  --header "Authorization: Bearer $COMETAPI_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
    "model": "grok-imagine-video",
    "prompt": "A glowing crystal-powered rocket launching from the red dunes of Mars, ancient alien ruins lighting up in the background as it soars into a sky full of unfamiliar constellations",
    "duration": 10,
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }')

echo "Create response: $CREATE_RESPONSE"

# Extract task ID using jq (install with: brew install jq)
TASK_ID=$(echo "$CREATE_RESPONSE" | jq -r '.request_id // .id')

if [ "$TASK_ID" == "null" ] || [ -z "$TASK_ID" ]; then
  echo "Error: Failed to get task ID from response"
  exit 1
fi

echo "Task ID: $TASK_ID"

# ============================================================
# Step 2: Poll for Task Status
# ============================================================
echo ""
echo "Step 2: Polling task status..."

while true; do
  QUERY_RESPONSE=$(curl -s --location --request GET "${BASE_URL}/videos/${TASK_ID}" \
    --header "Authorization: Bearer $COMETAPI_KEY")

  STATUS=$(echo "$QUERY_RESPONSE" | jq -r '.data.status')
  PROGRESS=$(echo "$QUERY_RESPONSE" | jq -r '.data.progress')
  echo "Status: $STATUS, Progress: $PROGRESS"

  if [ "$STATUS" == "FAILURE" ] || [ "$STATUS" == "failed" ]; then
    echo "Video generation failed!"
    echo "$QUERY_RESPONSE" | jq -r '.data.fail_reason'
    exit 1
  fi

  if [ "$STATUS" == "SUCCESS" ]; then
    VIDEO_URL=$(echo "$QUERY_RESPONSE" | jq -r '.data.data.video.url')
    echo "Video generation completed!"
    echo "Video URL: $VIDEO_URL"
    break
  fi

  sleep 10
done

Python Code Example

import os
import time
import requests

# Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here
COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"
BASE_URL = "https://api.cometapi.com/grok/v1"

headers = {
    "Authorization": f"Bearer {COMETAPI_KEY}",
    "Content-Type": "application/json",
}

# ============================================================
# Step 1: Create Video Generation Task
# ============================================================
print("Step 1: Creating video generation task...")

create_payload = {
    "model": "grok-imagine-video",
    "prompt": "A glowing crystal-powered rocket launching from the red dunes of Mars, ancient alien ruins lighting up in the background as it soars into a sky full of unfamiliar constellations",
    "duration": 10,
    "aspect_ratio": "16:9",
    "resolution": "720p",
}

create_response = requests.post(
    f"{BASE_URL}/videos/generations", headers=headers, json=create_payload
)

create_result = create_response.json()
print(f"Create response: {create_result}")

# Extract task ID from the response
task_id = create_result.get("request_id") or create_result.get("id")
if not task_id:
    print("Error: Failed to get task ID from response")
    exit(1)

print(f"Task ID: {task_id}")

# ============================================================
# Step 2: Poll for Task Status
# ============================================================
print("\nStep 2: Polling task status...")

while True:
    query_response = requests.get(
        f"{BASE_URL}/videos/{task_id}", headers=headers
    )
    query_result = query_response.json()

    data = query_result.get("data", {})
    status = data.get("status", "unknown")
    progress = data.get("progress", "0%")
    print(f"Status: {status}, Progress: {progress}")

    if status in ["FAILURE", "failed"]:
        print("Video generation failed!")
        print(f"Reason: {data.get('fail_reason')}")
        exit(1)

    if status == "SUCCESS":
        video_url = data.get("data", {}).get("video", {}).get("url")
        print(f"Video generation completed!")
        print(f"Video URL: {video_url}")
        break

    time.sleep(10)

JavaScript Code Example

// Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here
const api_key = process.env.COMETAPI_KEY || "<YOUR_COMETAPI_KEY>";
const base_url = "https://api.cometapi.com/grok/v1";

const headers = {
  "Authorization": `Bearer ${api_key}`,
  "Content-Type": "application/json",
};

// ============================================================
// Step 1: Create Video Generation Task
// ============================================================
console.log("Step 1: Creating video generation task...");

const createPayload = {
  model: "grok-imagine-video",
  prompt: "A glowing crystal-powered rocket launching from the red dunes of Mars, ancient alien ruins lighting up in the background as it soars into a sky full of unfamiliar constellations",
  duration: 10,
  aspect_ratio: "16:9",
  resolution: "720p",
};

const createResponse = await fetch(`${base_url}/videos/generations`, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(createPayload),
});

const createResult = await createResponse.json();
console.log("Create response:", JSON.stringify(createResult, null, 2));

const taskId = createResult?.request_id || createResult?.id;
if (!taskId) {
  console.log("Error: Failed to get task ID from response");
  process.exit(1);
}

console.log(`Task ID: ${taskId}`);

// ============================================================
// Step 2: Poll for Task Status
// ============================================================
console.log("\nStep 2: Polling task status...");

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

while (true) {
  const queryResponse = await fetch(`${base_url}/videos/${taskId}`, {
    method: "GET",
    headers: headers,
  });

  const queryResult = await queryResponse.json();
  const data = queryResult?.data || {};
  const status = data?.status || "unknown";
  const progress = data?.progress || "0%";
  console.log(`Status: ${status}, Progress: ${progress}`);

  if (["FAILURE", "failed"].includes(status)) {
    console.log("Video generation failed!");
    console.log(`Reason: ${data?.fail_reason}`);
    process.exit(1);
  }

  if (status === "SUCCESS") {
    const videoUrl = data?.data?.video?.url;
    console.log("Video generation completed!");
    console.log(`Video URL: ${videoUrl}`);
    break;
  }

  await sleep(10000);
}