查询视频任务
curl --request GET \
--url https://api.gravitex.ai/v1/video/generations/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.gravitex.ai/v1/video/generations/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.gravitex.ai/v1/video/generations/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/video/generations/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/video/generations/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gravitex.ai/v1/video/generations/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/video/generations/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body视频系列
查询视频任务
GET
/
v1
/
video
/
generations
/
{task_id}
查询视频任务
curl --request GET \
--url https://api.gravitex.ai/v1/video/generations/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.gravitex.ai/v1/video/generations/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.gravitex.ai/v1/video/generations/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/video/generations/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/video/generations/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gravitex.ai/v1/video/generations/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/video/generations/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body简介
查询视频任务接口用于根据任务ID查询视频生成任务的状态和结果。提交任务后,您需要定期轮询此接口来检查任务状态,直到任务完成或失败。 重要提示:建议每 3-5 秒轮询一次任务状态,直到任务状态变为succeeded 或 failed。
认证
string
必填
Bearer Token,如
Bearer sk-xxxxxxxxxx路径参数
string
必填
视频生成任务ID,由提交任务接口返回
响应说明
任务状态
| 状态 | 说明 | 建议操作 |
|---|---|---|
queued | 任务已排队,等待处理 | 继续轮询 |
in_progress | 任务正在处理中 | 继续轮询 |
succeeded | 任务成功完成 | 下载视频或获取视频URL |
failed | 任务失败 | 查看失败原因 |
响应示例(排队中)
{
"task_id": "video_69095b4ce0048190893a01510c0c98b0",
"status": "queued",
"format": "mp4"
}
响应示例(处理中)
{
"task_id": "video_69095b4ce0048190893a01510c0c98b0",
"status": "in_progress",
"format": "mp4"
}
响应示例(已完成)
{
"task_id": "video_69095b4ce0048190893a01510c0c98b0",
"status": "succeeded",
"format": "mp4",
"url": "https://gravitex-ads.oss-cn-guangzhou.aliyuncs.com/2025/11/18/abc123/video.mp4"
}
响应示例(失败)
{
"task_id": "video_69095b4ce0048190893a01510c0c98b0",
"status": "failed",
"format": "mp4",
"error": {
"code": 400,
"message": "提示词包含不当内容"
}
}
使用示例
curl -X GET "https://api.gravitex.ai/v1/video/generations/video_69095b4ce0048190893a01510c0c98b0" \
-H "Authorization: Bearer sk-xxxxxxxxxx"
轮询示例
Python 示例
import requests
import time
def poll_task_status(task_id, api_key, max_wait_time=300):
"""轮询任务状态直到完成"""
url = f"https://api.gravitex.ai/v1/video/generations/{task_id}"
headers = {"Authorization": f"Bearer {api_key}"}
start_time = time.time()
while True:
response = requests.get(url, headers=headers)
data = response.json()
status = data.get("status")
print(f"当前状态: {status}")
if status == "succeeded":
video_url = data.get("url")
print(f"✅ 任务完成!视频URL: {video_url}")
return video_url
elif status == "failed":
error_msg = data.get("error", {}).get("message", "未知错误")
print(f"❌ 任务失败: {error_msg}")
return None
# 检查超时
if time.time() - start_time > max_wait_time:
print("⏰ 等待超时")
return None
# 等待5秒后再次查询
time.sleep(5)
JavaScript 示例
async function pollTaskStatus(taskId, apiKey, maxWaitTime = 300000) {
const url = `https://api.gravitex.ai/v1/video/generations/${taskId}`;
const headers = { 'Authorization': `Bearer ${apiKey}` };
const startTime = Date.now();
while (true) {
const response = await fetch(url, { headers });
const data = await response.json();
const status = data.status;
console.log(`当前状态: ${status}`);
if (status === 'succeeded') {
const videoUrl = data.url;
console.log(`✅ 任务完成!视频URL: ${videoUrl}`);
return videoUrl;
} else if (status === 'failed') {
const errorMsg = data.error?.message || '未知错误';
console.error(`❌ 任务失败: ${errorMsg}`);
throw new Error(errorMsg);
}
// 检查超时
if (Date.now() - startTime > maxWaitTime) {
throw new Error('等待超时');
}
// 等待5秒后再次查询
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
相关接口
提交视频任务
提交视频生成任务
下载视频
下载已完成的视频文件(仅 Sora 2)
⌘I
