# check_image_jobs (https://sellersheetai.com/docs/mcp-api/tools/check_image_jobs)

> Batch-poll multiple async image jobs in one call.

Access: **READ** · toolset sellersheet · family null

Use this when you have submitted several edit_image jobs in parallel (e.g. a family-recolor fan-out) — avoids N separate round trips per polling cycle. Rows stay small (~1 KB per job) and carry no image. Each row already carries cdn_url; call check_image_job only for a 'done' job whose cdn_url is still null.

## Call it

MCP tool call:

```json
{
  "name": "check_image_jobs",
  "arguments": {
    "job_ids": []
  }
}
```

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/check_image_jobs \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"job_ids":[]}'
```

## Arguments

| Name | Type | Required | Description |
|---|---|---|---|
| `job_ids` | object[] | yes | up to 20 job_ids from edit_image; ids past the 20th are dropped without notice. |

## Result

- `data.jobs` — one row per id, in input order — id, status ('pending' | 'processing' | 'done' | 'error' | 'not_found' = unknown or past its ~15-minute retention), progress, elapsed_s, queue_wait_s, cdn_url, error.
- `data.done / data.pending / data.error` — counts — poll until data.pending is 0.

## Workflow

- 1. Submit N jobs via edit_image → collect job_ids 2. Poll check_image_jobs(job_ids) every 20–30s 3. When data.pending is 0, read cdn_url from each 'done' row.

## Gotchas

- Successes = data.done (or cdn_url); failures = data.error only, not slow jobs. Re-submit only 'error' jobs, never a 'pending'/'processing' one (that duplicates and rebills).