Job Status
Check the processing status and progress of a job.
GET
/api/v1/jobs/{jobId}/statusMonitor the progress of your image enhancement job.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Required | The unique job identifier returned when creating an order |
Request Example
curl https://www.quickhome.ai/api/v1/jobs/job_abc123xyz/status \
-H "Authorization: Bearer YOUR_API_KEY"Response
Response
200 OK
{
"jobId": "job_abc123xyz",
"status": "processing",
"progress": {
"total": 4,
"completed": 2,
"percentage": 50
},
"createdAt": "2025-11-18T10:30:00Z"
}Response Fields
| Name | Type | Required | Description |
|---|---|---|---|
jobId | string | Required | The job identifier |
status | string | Required | Current status: pending, processing, completed, failed |
progress | object | Required | Processing progress information |
createdAt | string | Required | ISO 8601 timestamp when the job was created |
error | string | Optional | Error message if status is failed |
Status Values
pendingJob is queued and waiting to be processed
processingJob is currently being processed
completedProcessing complete, results ready for download
failedProcessing failed, check error field
Polling Best Practices
- • Recommended polling interval: Check status every 30 seconds
- • Typical processing time: Most jobs complete in about an hour
- • Job expiration: Completed jobs remain available for 7 days
- • Maximum job duration: Jobs that exceed 2 hours will automatically fail
Example Polling Loop
async function waitForCompletion(jobId) {
const maxAttempts = 240; // 2 hours with 30-second intervals
let attempts = 0;
while (attempts < maxAttempts) {
const response = await fetch(
`https://www.quickhome.ai/api/v1/jobs/${jobId}/status`,
{
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
}
);
const status = await response.json();
if (status.status === 'completed') {
console.log('Job completed!');
return status;
} else if (status.status === 'failed') {
throw new Error('Job failed: ' + status.error);
}
// Wait 30 seconds before next check
await new Promise(resolve => setTimeout(resolve, 30000));
attempts++;
}
throw new Error('Job timeout');
}