查询结果
生成任务是异步的。创建任务后,需要持续轮询,直到状态变为 success 或 failed。
Endpoint
GET /api/v1/generations/[id]
请求
curl https://img2vid.net/api/v1/generations/YOUR_GENERATION_ID \
-H "Authorization: Bearer $BUBLE_API_KEY"
状态值
| 状态 | 含义 |
|---|---|
pending |
任务已接收,等待执行。 |
processing |
模型提供方正在生成结果。 |
success |
生成成功。 |
failed |
生成失败,请查看 error。 |
canceled |
任务已取消。 |
图片结果示例
{
"data": {
"id": "task_id",
"status": "success",
"model": "google/nano-banana-pro",
"media_type": "image",
"mode": "text_to_image",
"cost_credits": 2,
"created_at": "2026-05-11T00:00:00.000Z",
"updated_at": "2026-05-11T00:01:00.000Z",
"result": {
"images": [{ "url": "https://..." }]
}
}
}
SDK 示例
SDK 提供 retrieve 用于单次查询任务状态,也提供 wait 用于持续轮询直到终态。默认情况下,wait 会在 success、failed 或 canceled 时停止;对于失败或取消的任务,不同语言 SDK 会按自身错误模型抛出异常或返回错误元组,除非你通过 wait options 关闭对应行为。
下面的片段假设你已经按快速开始初始化了 SDK client,并引入了对应语言需要的 SDK 类型。
JavaScript / TypeScript
const current = await buble.generations.retrieve('task_id');
const finalResult = await buble.generations.wait('task_id');
console.log(finalResult.data.result?.images?.[0]?.url);
Python
current = client.generations.retrieve("task_id")
final_result = client.generations.wait("task_id")
print(final_result["data"]["result"]["images"][0]["url"])
Go
current, err := client.Generations.Retrieve(ctx, "task_id")
if err != nil {
return err
}
finalResult, err := client.Generations.Wait(ctx, current.Data.ID)
Rust
let current = client.generations().retrieve("task_id").await?;
let final_result = client
.generations()
.wait(¤t.data.id, WaitOptions::default())
.await?;
Swift
let current = try await client.generations.retrieve("task_id")
let finalResult = try await client.generations.wait(current.data.id)
Dart / Flutter
final current = await client.generations.retrieve('task_id');
final finalResult = await client.generations.wait(current.data.id);
Elixir
{:ok, current} = Buble.Generations.retrieve(client, "task_id")
{:ok, final_result} = Buble.Generations.wait(client, current["data"]["id"])
Java
Envelope<GenerationTask> current = client.generations().retrieve("task_id");
Envelope<GenerationTask> finalResult = client.generations().wait(current.getData().getId());
.NET
var current = await client.Generations.RetrieveAsync("task_id");
var finalResult = await client.Generations.WaitAsync(current!.Data!.Id!);
PHP
$current = $client->generations()->retrieve('task_id');
$finalResult = $client->generations()->wait($current['data']['id']);
Ruby
current = client.generations.retrieve("task_id")
final_result = client.generations.wait(current.dig("data", "id"))
视频结果示例
{
"data": {
"id": "task_id",
"status": "success",
"model": "google/veo3.1-fast",
"media_type": "video",
"mode": "frames_to_video",
"cost_credits": 40,
"result": {
"videos": [
{
"url": "https://...",
"preview_url": "https://...",
"thumbnail_url": "https://...",
"duration": 8
}
]
}
}
}
失败任务示例
{
"data": {
"id": "task_id",
"status": "failed",
"model": "google/nano-banana-pro",
"media_type": "image",
"mode": "text_to_image",
"cost_credits": 2,
"result": null,
"error": {
"code": "generation_failed",
"message": "Generation failed."
}
}
}