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
Grok Video Request
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ụ
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
- Polling: Sau khi tạo task, kiểm tra trạng thái định kỳ (mỗi 5-10 giây) cho đến khi
statuslàSUCCESShoặcFAILURE - Error Handling: Luôn xử lý các trường hợp lỗi và retry khi cần thiết
- Prompt Quality: Viết prompt rõ ràng và chi tiết để có kết quả tốt hơn
- 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)