How to Get Result
Retrieve the result of a submitted task.
Endpoint
GET https://api.get3w.com/v1/requests/{request_id}request_id is the id from the submit response.
Request
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);Response
Still Running
While the task is not yet terminal, the response is minimal and carries a Retry-After: 3 header:
json
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "processing"
}Completed
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"
}Failed
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"
}A failed task still returns HTTP 200 — the failure is reported in status and code, not in the HTTP status. See Error Codes.
Response Fields
| Field | Description |
|---|---|
id | Task ID |
model | Model slug that ran |
status | created, processing, completed, or failed |
code | 0 on success, otherwise a task error code |
outputs | Array of output URLs; empty unless completed |
timings | Per-stage durations in milliseconds |
error | Error message, null on success |
created_at | When the task was created |
For speech-to-text, outputs contains the transcribed text rather than a URL.
Polling Pattern
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)Poll every 3–5 seconds. Use estimated_duration from the submit response to delay your first poll rather than hammering the endpoint immediately.
Alternatives to Polling
- Sync — Add
?sync=truewhen submitting to get the result in the same response. Waits up to 10 minutes, then returnsstatus: "processing"and you poll from there - Webhook — Add
?webhook=<your-url>when submitting to receive the result as a callback
Next Steps
- Async Mode — Full polling walkthrough
- How to Use Webhooks — Callback alternative