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

Grok Imagine Video

Mỗi Giây:$0.04
Ngày phát hành:Feb 27, 2026

Tạo video từ prompt văn bản, làm động ảnh tĩnh hoặc chỉnh sửa video hiện có bằng ngôn ngữ tự nhiên. API hỗ trợ cấu hình thời lượng, tỷ lệ khung hình và độ phân giải cho các video được tạo — với SDK tự động xử lý việc thăm dò bất đồng bộ.

Mới
Phổ biến
Sử dụng thương mại

Playground cho Grok Imagine Video

Khám phá Playground của Grok Imagine Video — môi trường tương tác để kiểm tra mô hình và chạy truy vấn theo thời gian thực. Thử prompts, điều chỉnh tham số và lặp lại ngay lập tức để tăng tốc phát triển và xác thực các trường hợp sử dụng.

📘 Thông số kỹ thuật của Grok Imagine Video

Thông sốChi tiết
Model IDgrok-imagine-video
ProviderxAI
TypeAI tạo và chỉnh sửa video
Input TypesVăn bản (prompt); tùy chọn hình ảnh hoặc video. Prompt văn bản (ngôn ngữ tự nhiên); tùy chọn đầu vào hình ảnh (image→video); tùy chọn video_url để chỉnh sửa clip hiện có. Thời lượng tối đa của video đầu vào để chỉnh sửa khác nhau theo endpoint — được báo cáo ~8.7s cho một số luồng chỉnh sửa.
Output TypesVideo .mp4 qua URL tạm thời
Duration Range (generate)1–15 giây
Resolution480p, 720p (có thể cấu hình)
Aspect Ratios1:1, 16:9, 9:16
Edit SupportCó — hoạt họa và chỉnh sửa video tối đa 8.7s
ModerationBao gồm kiểm duyệt nội dung
PricingTính phí theo giây, thay đổi theo độ phân giải

🚀 Grok Imagine Video là gì?

Grok Imagine Video là mô hình AI tạo và chỉnh sửa video tiên tiến của xAI, được cung cấp qua CometAPI. Mô hình cho phép nhà phát triển tạo các video ngắn, tùy chỉnh từ prompt ngôn ngữ tự nhiên và tùy chọn hoạt họa ảnh tĩnh hoặc chỉnh sửa clip hiện có. Mô hình hỗ trợ cấu hình độ dài, độ phân giải và tỷ lệ khung hình đầu ra, đồng thời tích hợp kiểm duyệt nội dung để đảm bảo tuân thủ chính sách.

🧠 Các tính năng chính (điểm khác biệt của Grok Imagine)

  • Âm thanh gốc + đồng bộ khẩu hình: Tạo âm thanh nền, hiệu ứng và thoại/người dẫn ngắn được đồng bộ, với đồng bộ khẩu hình xấp xỉ.
  • Image→Video / chỉnh sửa bằng prompt: Hoạt họa ảnh tĩnh hoặc chỉnh sửa cảnh quay hiện có bằng prompt văn bản (xóa/thay thế đối tượng, thay đổi thời lượng, đổi phong cách).
  • Lặp nhanh & độ trễ thấp: Thiết kế cho vòng phản hồi nhanh, phù hợp quy trình sáng tạo và tạo mẫu sản phẩm.
  • Production API: Imagine API cung cấp các endpoint lập trình để tạo hàng loạt, tích hợp vào pipeline chỉnh sửa và kiểm soát cấp doanh nghiệp.
  • Nhiều “chế độ” / phong cách: Các chế độ hướng tới người dùng (ví dụ được báo cáo: Normal / Fun / Spicy hoặc preset tương tự) để điều chỉnh thiên hướng đầu ra về phong cách hoặc mức độ cho phép (lưu ý: “Spicy” trong lịch sử từng bật NSFW).
Mô hình (công ty)Độ phân giải tối đa (công khai)Độ dài clip tối đa (công khai)Âm thanh gốc?Điểm mạnhLưu ý
Grok Imagine (xAI)720p6–15sLặp nhanh, chi phí/độ trễ tốt, chỉnh sửa tích hợp, âm thanh gốcGiới hạn 720p; lo ngại kiểm duyệt; độ trung thực thay đổi
Sora (OpenAI)720p–1080p (tùy cấp)ngắn (6–15s)Độ trung thực hình ảnh cao; tích hợp chặt với hệ sinh thái OpenAIĐắt hơn; kiểm duyệt/điều khiển ràng buộc hơn
Veo (Google DeepMind)Tối đa 1080p+ngắn (thay đổi)Tính chân thực cao, chuyển động ổn địnhChi phí cao hơn; ít thử nghiệm công khai
Runway Gen-4.51080p+ngắn (thay đổi)Được ngành sử dụng trong quy trình sáng tạo, độ trung thực caoTốn kém hơn; tập trung vào công cụ sáng tạo
Vidu / Kling / Pika (các nhà chuyên)tối đa 1080pngắn (thay đổi)Hỗn hợpMột số có tính năng chuyên biệt (Smart Cuts, chuỗi nhiều cảnh)Hỗ trợ âm thanh khác nhau; mức độ hoàn thiện API khác nhau

⚠️ Hạn chế

  • Độ dài video tối đa bị giới hạn ở 15 giây.
  • Chỉnh sửa giữ nguyên độ dài video đầu vào (≤ 8.7s).
  • URL được tạo là tạm thời — hãy tải xuống kịp thời.

Cách truy cập và tích hợp Grok Imagine Video

Bước 1: Đăng ký lấy API Key

Đăng nhập vào cometapi.com. Nếu bạn chưa là người dùng, vui lòng đăng ký trước. Đăng nhập vào CometAPI console. Lấy API key thông tin xác thực truy cập của giao diện. Nhấp “Add Token” tại mục API token trong trung tâm cá nhân, lấy token key: sk-xxxxx và gửi.

Bước 2: Gửi yêu cầu tới API Grok Imagine Video

Chọn endpoint “grok-imagine-video” để gửi yêu cầu API và thiết lập body yêu cầu. Phương thức và body yêu cầu được lấy từ tài liệu API trên website của chúng tôi. Website cũng cung cấp bài test Apifox để bạn tiện sử dụng. Thay thế <YOUR_API_KEY> bằng CometAPI key thực tế từ tài khoản của bạn. Gọi ở đâu: GROKTạo videoChỉnh sửa video.

Bước 3: Gửi yêu cầu tới API Grok Imagine Video

Nhập văn bản hoặc tải lên hình ảnh (Bạn có thể tùy chọn cung cấp ảnh nguồn để hoạt họa.). API Grok Imagine AI phân tích đầu vào của bạn và chuẩn bị nội dung cho url. Hỗ trợ cả chuyển đổi văn bản→video và ảnh→video.

Nguồn ảnh có thể được cung cấp dưới dạng:

  • Một URL công khai trỏ đến hình ảnh
  • Một data URI mã hóa base64 ( ví dụ: data:image/jpeg;base64,<YOUR_BASE64_IMAGE>)

Bước 4: Nhận và kiểm tra kết quả

Xử lý phản hồi API để lấy nội dung được tạo. Sau khi xử lý, API phản hồi trạng thái tác vụ và dữ liệu đầu ra. Hệ thống trả về request_id ngay khi gửi; dùng endpoint GET để kiểm tra trạng thái và lấy video đã tạo. Việc chỉnh sửa video là bất đồng bộ, bạn có thể cần thăm dò endpoint này nhiều lần cho đến khi tác vụ hoàn tất. Vui lòng tải xuống kịp thời.

Câu Hỏi Thường Gặp

Giá cả cho Grok Imagine Video

Khám phá mức giá cạnh tranh cho Grok Imagine Video, được thiết kế để phù hợp với nhiều ngân sách và nhu cầu sử dụng khác nhau. Các gói linh hoạt của chúng tôi đảm bảo bạn chỉ trả tiền cho những gì bạn sử dụng, giúp dễ dàng mở rộng quy mô khi yêu cầu của bạn tăng lên. Khám phá cách Grok Imagine Video có thể nâng cao các dự án của bạn trong khi vẫn kiểm soát được chi phí.

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.

Mã mẫu và API cho Grok Imagine Video

Truy cập mã mẫu toàn diện và tài nguyên API cho Grok Imagine Video để tối ưu hóa quy trình tích hợp của bạn. Tài liệu chi tiết của chúng tôi cung cấp hướng dẫn từng bước, giúp bạn khai thác toàn bộ tiềm năng của Grok Imagine Video trong các dự án của mình.

#!/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);
}