Đa phương tiện

Tạo Video (Veo & Grok)

API tạo video cho phép bạn sinh video từ text prompt hoặc hình ảnh sử dụng các model Google Veo (Veo 2, Veo 3, Veo 3.1) và Grok Video.

Endpoint

  • Base URL: https://api.shopaikey.com
  • Tạo video: POST /v1/video/generations
  • Kiểm tra trạng thái: GET /v1/video/generations/{task_id}

Xác thực

Tất cả các request đều yêu cầu API key trong header:

code
Authorization: Bearer <your-api-key>

Tạo video

Request

Endpoint: POST /v1/video/generations

Headers:

code
Authorization: Bearer <your-api-key>
Content-Type: application/json

Veo Video Request

Tham sốKiểuBắt buộcMô tả
modelstringCóID model Google Veo. Ví dụ: veo3.1-pro
promptstringCóPrompt mô tả video
metadata.imagesarrayKhôngMảng URL ảnh tham chiếu
metadata.enhance_promptbooleanKhôngTự động tối ưu prompt
metadata.aspect_ratiostringKhôngTỉ lệ khung hình
metadata.enable_upsamplebooleanKhôngBật upsample video

Grok Video Request

Tham sốKiểuBắt buộcMô tả
modelstringCóID model Grok. Ví dụ: grok-video-3
promptstringCóPrompt mô tả video
metadata.imagesarrayKhôngMảng URL ảnh tham chiếu
metadata.durationintegerKhôngThời lượng video (giây)
metadata.aspect_ratiostringKhôngTỉ lệ khung hình. Ví dụ: 3:2, 2:3, 1:1
metadata.resolutionstringKhôngĐộ phân giải. Ví dụ: 720p, 1080p

Ví dụ Request (Veo)

code
curl --location --request POST 'https://api.shopaikey.com/v1/video/generations' \
--header 'Authorization: Bearer <your-api-key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "model": "veo3-fast",
    "prompt": "Một con mèo đang chơi đùa trong vườn vào buổi sáng",
    "metadata": {
        "aspect_ratio": "16:9",
        "enhance_prompt": true,
        "enable_upsample": true
    }
}'

Ví dụ Request (Grok)

code
curl --location --request POST 'https://api.shopaikey.com/v1/video/generations' \
--header 'Authorization: Bearer <your-api-key>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "model": "grok-video-3",
    "prompt": "Một con mèo đang chơi đùa trong vườn vào buổi sáng",
    "metadata": {
        "duration": 5,
        "aspect_ratio": "3:2",
        "resolution": "1080p"
    }
}'

Ví dụ JavaScript

code
const response = await fetch('https://api.shopaikey.com/v1/video/generations', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <your-api-key>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'veo3-fast',
    prompt: 'Một con mèo đang chơi đùa trong vườn vào buổi sáng',
    metadata: {
      aspect_ratio: '16:9',
      enhance_prompt: true,
      enable_upsample: true,
    },
  }),
});

const data = await response.json();
console.log('Task ID:', data.data.task_id);

Response

code
{
  "code": "success",
  "message": "Video generation started",
  "data": {
    "task_id": "task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh",
    "status": "queued",
    "created_at": 1715000000,
    "updated_at": 1715000000
  }
}

Kiểm tra trạng thái video

Sau khi tạo task, bạn cần kiểm tra trạng thái định kỳ để lấy video đã hoàn thành.

Request

Endpoint: GET /v1/video/generations/{task_id}

Headers:

code
Authorization: Bearer <your-api-key>

Ví dụ Request

code
curl --location --request GET 'https://api.shopaikey.com/v1/video/generations/task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh' \
--header 'Authorization: Bearer <your-api-key>'

Ví dụ JavaScript

code
const taskId = 'task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh';
const response = await fetch(`https://api.shopaikey.com/v1/video/generations/${taskId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer <your-api-key>',
  },
});

const data = await response.json();
console.log('Status:', data.data.status);
if (data.data.status === 'SUCCESS') {
  console.log('Video URL:', data.data.result_url);
}

Response

Khi đang xếp hàng / xử lý:

code
{
  "code": "success",
  "message": "",
  "data": {
    "id": 1,
    "task_id": "task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh",
    "status": "processing",
    "action": "generate",
    "progress": "50%",
    "submit_time": 1715000000,
    "start_time": 1715000001,
    "finish_time": null,
    "created_at": 1715000000,
    "updated_at": 1715000010
  }
}

Khi hoàn thành:

code
{
  "code": "success",
  "message": "",
  "data": {
    "id": 1,
    "task_id": "task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh",
    "status": "SUCCESS",
    "action": "generate",
    "result_url": "https://example.com/video.mp4",
    "progress": "100%",
    "submit_time": 1715000000,
    "start_time": 1715000001,
    "finish_time": 1715000120,
    "created_at": 1715000000,
    "updated_at": 1715000120,
    "properties": {
      "upstream_model_name": "veo3-fast",
      "origin_model_name": "veo3-fast"
    }
  }
}

Khi thất bại:

code
{
  "code": "success",
  "message": "",
  "data": {
    "id": 1,
    "task_id": "task_hH9RuzRWMHP7dmVRaF1xFr8CQBVpDQnh",
    "status": "FAILURE",
    "action": "generate",
    "fail_reason": "Content policy violation",
    "progress": "0%",
    "created_at": 1715000000,
    "updated_at": 1715000060
  }
}

Trạng thái tác vụ

Trạng tháiMô tả
queuedĐang xếp hàng chờ xử lý
processingĐang xử lý
SUCCESSHoàn tất, lấy video tại result_url
FAILUREThất bại, xem lý do tại fail_reason

Tạo video từ hình ảnh (Image-to-Video)

Bạn có thể tạo video từ một hoặc nhiều hình ảnh bằng cách truyền mảng metadata.images:

code
const response = await fetch('https://api.shopaikey.com/v1/video/generations', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <your-api-key>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'veo3-fast',
    prompt: 'Video animation từ hình ảnh này',
    metadata: {
      images: [
        'https://example.com/image1.jpg',
        'https://example.com/image2.jpg',
      ],
      aspect_ratio: '16:9',
    },
  }),
});

Các model hỗ trợ

Google Veo

  • veo2-fast: Model Veo 2 tốc độ nhanh
  • veo2: Model Veo 2 chuẩn
  • veo2-pro: Model Veo 2 chuyên nghiệp
  • veo3-fast: Model Veo 3 tốc độ nhanh
  • veo3: Model Veo 3 chuẩn
  • veo3-pro: Model Veo 3 chuyên nghiệp
  • veo3.1-fast: Model Veo 3.1 tốc độ nhanh
  • veo3.1: Model Veo 3.1 chuẩn
  • veo3.1-pro: Model Veo 3.1 chuyên nghiệp

Grok

  • grok-video-3: Model Grok Video 3

Xử lý lỗi

400 - Request không hợp lệ:

code
{
  "error": {
    "message": "Prompt là bắt buộc"
  }
}

401 - Xác thực thất bại:

code
{
  "error": {
    "message": "Invalid API key"
  }
}

404 - Tác vụ không tồn tại:

code
{
  "error": {
    "message": "Task not found"
  }
}

Các mã lỗi phổ biến:

  • 400: Request không hợp lệ (thiếu tham số, giá trị không hợp lệ)
  • 401: Thiếu hoặc API key không hợp lệ
  • 404: Tác vụ không tìm thấy
  • 500: Lỗi server

Best Practices

  1. Polling: Sau khi tạo task, kiểm tra trạng thái định kỳ (mỗi 5-10 giây) cho đến khi status là SUCCESS hoặc FAILURE
  2. Error Handling: Luôn xử lý các trường hợp lỗi và retry khi cần thiết
  3. Prompt Quality: Viết prompt rõ ràng và chi tiết để có kết quả tốt hơn
  4. Aspect Ratio: Chọn aspect ratio phù hợp với mục đích sử dụng (16:9 cho landscape, 9:16 cho portrait)

Bài cùng nhóm · Đa phương tiện