Status
rw.job()
Check the status and result of an asynchronous generation job. Useful for long-running tasks like video or high-resolution image generation.
Signature
TypeScript
rw.job(id: string): Promise<Job>Parameters
| Parameter | Type | Description |
|---|---|---|
idrequired | string | Job ID returned from an async generation request, e.g. "job_abc123" |
Response
TypeScript
interface Job {
id: string;
object: "job";
status: "completed" | "queued" | "processing" | "failed" | "cancelled";
model: {
name: string;
slug: string;
category: string;
provider: string;
};
input: Record<string, unknown>;
output: string | null;
output_url: string | null;
cost: { credits: number; currency: string };
tokens: { input: number; output: number; total: number } | null;
timing: {
created_at: number;
started_at: number | null;
completed_at: number | null;
latency_ms: number | null;
duration_ms: number | null;
};
error: string | null;
}Examples
Check job status
TypeScript
const job = await rw.job("job_abc123");
console.log(job.status); // "completed" | "queued" | "processing" | "failed"
console.log(job.output_url); // URL to the resultPolling for completion
TypeScript
async function waitForJob(rw, jobId: string, intervalMs = 2000) {
while (true) {
const job = await rw.job(jobId);
if (job.status === "completed") {
return job;
}
if (job.status === "failed") {
throw new Error(job.error ?? "Job failed");
}
await new Promise(resolve => setTimeout(resolve, intervalMs));
}
}
const result = await waitForJob(rw, "job_abc123");
console.log(result.output_url);
console.log(result.cost); // { credits: 10, currency: "credits" }Job timing
The
timing object includes latency and duration metrics, useful for monitoring and optimizing your application.