product-photo-batch-pipelinelisted
Install: claude install-skill apimageorg/apimage-skills
# Batch Image Pipeline
A catalogue is not one image done many times. It's a queue with rate limits, a credit budget, a consistency requirement and a review step — and the review step is the one that gets dropped first and matters most.
## The rate limits
| Endpoint | Per minute |
|---|---|
| `/generations`, `/brand-assets` | **120** |
| `/ai-image-generate` | **60** |
| `/image-studio` | see plan |
| Background tools (`remove_background`, `replace_background`) | **30** |
**Background tools are the bottleneck at 30/minute**, and they're usually the first step in a catalogue pipeline. A 300-product cutout job is at least ten minutes of wall clock at the limit.
Images are synchronous, unlike video — so the pipeline is a rate-limited loop rather than a job queue with polling. That's simpler, and it means throttling is the only concurrency concern.
## The pipeline
```python
import time
RPM_BACKGROUND = 30
GAP = 60.0 / RPM_BACKGROUND + 0.3 # margin
LOOK = ("On pure white, soft even studio light from above and slightly "
"left, neutral white balance, accurate colour, subtle contact "
"shadow. Product fills 85% of frame. Product unchanged.")
def process(product, log):
pid = product["id"]
try:
cutout = remove_background(image=product["photo"])
time.sleep(GAP)
asset = create_brand_asset(type="product", ...) # free
shots = {}
for angle in ("straight on, front elevation",
"three-qua