如何获取结果
取回已提交任务的结果。
接口
GET https://api.get3w.com/v1/requests/{request_id}request_id 就是提交任务时响应里的 id。
请求
bash
curl "https://api.get3w.com/v1/requests/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-H "Authorization: Bearer YOUR_API_KEY"python
import requests
response = requests.get(
"https://api.get3w.com/v1/requests/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()
print(data["status"], data.get("outputs"))javascript
const response = await fetch(
"https://api.get3w.com/v1/requests/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
{ headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);
const data = await response.json();
console.log(data.status, data.outputs);响应
执行中
任务尚未进入终态时,响应内容非常精简,并带有 Retry-After: 3 响应头:
json
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "processing"
}已完成
json
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"model": "google/nano-banana-pro/text-to-image",
"status": "completed",
"code": 0,
"outputs": ["https://storage.example.com/output.png"],
"timings": {
"queue_wait": 427,
"celery_init": 2054,
"api_call": 23068,
"save": 1902,
"run_overhead": 679,
"total": 28131
},
"error": null,
"created_at": "2026-03-28T07:50:42"
}已失败
json
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"model": "google/nano-banana-pro/text-to-image",
"status": "failed",
"code": 1200,
"outputs": [],
"error": "Content moderation: prompt contains prohibited content",
"created_at": "2026-03-28T07:50:42"
}任务失败时 HTTP 状态码仍然是 200 —— 失败信息通过 status 和 code 反馈,而不是 HTTP 状态码。详见错误码。
响应字段
| 字段 | 说明 |
|---|---|
id | 任务 ID |
model | 实际运行的模型 slug |
status | created、processing、completed 或 failed |
code | 成功时为 0,否则为任务错误码 |
outputs | 输出 URL 数组;未完成时为空 |
timings | 各阶段耗时(毫秒) |
error | 错误信息,成功时为 null |
created_at | 任务创建时间 |
对于 speech-to-text,outputs 里是转写出的文本,而不是 URL。
轮询写法
python
import time
import requests
request_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
while True:
response = requests.get(
f"https://api.get3w.com/v1/requests/{request_id}",
headers=headers
)
data = response.json()
if data["status"] == "completed":
print("Done!", data["outputs"])
break
if data["status"] == "failed":
print(f"Failed ({data['code']}):", data["error"])
break
time.sleep(3)建议每 3–5 秒轮询一次。用提交响应里的 estimated_duration 来推迟第一次轮询,而不是一提交就立刻高频请求接口。
轮询之外的方案
- 同步(Sync) — 提交时加上
?sync=true,在同一个响应中拿到结果。最多等待 10 分钟,超时后返回status: "processing",之后再轮询 - Webhook — 提交时加上
?webhook=<your-url>,通过回调接收结果
下一步
- 异步模式 — 完整的轮询流程讲解
- 如何使用 Webhook — 回调方案