Concepts

Quality

Read the AI reviewer's verdicts and let the AI retoucher fix what it flags

Two AI agents look after the quality of your results:

  • The AI reviewer checks every generated image against your inputs (the product, its details, the identity, the brief) and the set for consistency. It is free and runs on its own when a job completes, and again after a regenerate or a fix.
  • The AI retoucher fixes what the AI reviewer flagged: logos and text, small garment details, artifacts. The fixed image becomes the image's latest version, and the AI reviewer checks it again. Each fixed image costs 1 credit, charged only when an image is fixed.

The agents are part of the Pro and Enterprise plans. On other plans the quality fields below are null and the agent options are ignored.

The agents cover Flat-to-Model, Create Packshot, Model Swap, Garment Recolor and Detail Repair. Identity drafts (Create Identity) and Image Playground images are not checked.

Reading the verdicts

GET /jobs/<id>/results carries the verdicts:

FieldDescription
results[].quality.verdictpass, check (worth a look), fail (should not ship as is), or unknown (could not be judged)
results[].quality.findingsWhat the AI reviewer found on this image (see below)
results[].quality_pendingtrue while this image's check is queued or running
results[].quality_historyThe AI reviewer's checks of the image's earlier versions, newest first, with what replaced each one
results[].ai_fixWhether the AI retoucher can fix this image now, and which findings it can and cannot handle
results[].ai_retouchThe state of the AI retoucher's latest run on this image: running, delivered or failed
quality_summary.verdictThe job's worst verdict, consistency across the set included
quality_summary.findingsConsistency findings across the set
quality_summary.flagged / judgedHow many images were flagged, out of how many judged
quality_summary.statuswaiting while the job generates, checking, then done (or not_checked if a check failed)
quality_summary.settledtrue when the agents are done: no check and no fix running
quality_summary.ai_retouchauto when the job fixes flagged images on its own

Each finding has a stable id, a code, a severity (fail, warning, or note for information that never counts), a short label, and what (what the reviewer saw on this image), why and fix. Close-up findings also carry the product and its box, as [ymin, xmin, ymax, xmax] on a 0 to 1000 scale.

When an image was replaced (fixed by the AI retoucher, retouched, or regenerated), its earlier checks stay readable in results[].quality_history. Each entry has the earlier version, its quality (same shape as above), the next_version and how it was made (next_by: ai_retouch, retouch or regenerate), and after an AI retouch the ids of the findings it fixed and the ones it worked on but did not fix (not_fixed).

Fixing automatically

Pass "ai_retouch": "auto" when you create a job (Flat-to-Model, Create Packshot, Model Swap, Garment Recolor, or a bulk run of these). On Detail Repair, start the AI retoucher on request instead (below). Once the AI reviewer has checked the outputs, the AI retoucher fixes each flagged image it can handle, once per generated image, without being asked.

{
  "ai_retouch": "auto"
}

The job itself completes as usual, and its images are usable right away. To know when the agents are done, wait for quality_summary.settled to be true, or for the job_quality notification:

{
  "name": "job_quality",
  "data": {
    "id_task": "3f9c...",
    "status": "settled",
    "verdict": "pass",
    "flagged": 0,
    "judged": 6,
    "unchecked": 0,
    "ai_retouch": "auto"
  }
}

Then read the final images and verdicts from GET /jobs/<id>/results. A fixed image is the image's latest version; the version before stays in its history. job_quality is sent each time the agents settle, so it can arrive again later, for example after you regenerate an image.

An image the AI retoucher could not fully fix keeps its findings, so it still reads as flagged. Images beyond your credit balance are left as they are.

Fixing on request

POST /jobs/<id>/ai-fix asks the AI retoucher to fix the latest version of the images you name:

{
  "images": [
    { "image_index": 0, "group_index": 0 },
    { "image_index": 2, "group_index": 0 }
  ]
}

The response lists the images it started and the ones it refused, with a reason:

ReasonMeaning
not_flaggedThe AI reviewer found nothing on this image
nothing_fixableWhat it found is not something the AI retoucher handles
busyA fix is already running on this image
already_triedThe last fix on this version fixed nothing; regenerate it instead
in_reviewThe image is in a review round; fix it from the review screen
not_foundNo such image in this job

Check results[].ai_fix.available first to only send images that can be fixed. The request returns 402 when your balance does not cover the images it would start.

Dismissing a finding

If you think a finding is wrong, dismiss it: it stops counting in the image's verdict and the AI retoucher no longer tries to fix it.

  • POST /jobs/<id>/quality/findings/<finding_id>/dismiss with an optional reason: not_an_issue (default), acceptable or wrong_spot
  • POST /jobs/<id>/quality/findings/<finding_id>/restore to count it again

A dismissal is kept when the same image is checked again.

On this page