Skip to content

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 ​

FieldDescription
idTask ID
modelModel slug that ran
statuscreated, processing, completed, or failed
code0 on success, otherwise a task error code
outputsArray of output URLs; empty unless completed
timingsPer-stage durations in milliseconds
errorError message, null on success
created_atWhen 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=true when submitting to get the result in the same response. Waits up to 10 minutes, then returns status: "processing" and you poll from there
  • Webhook — Add ?webhook=<your-url> when submitting to receive the result as a callback

Next Steps ​

Released under the MIT License.