查询结果

生成任务是异步的。创建任务后,需要持续轮询,直到状态变为 successfailed

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 会在 successfailedcanceled 时停止;对于失败或取消的任务,不同语言 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(&current.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."
    }
  }
}