Build on
Atelier Noir.
A small, honest REST API: send a product photo, get on-model frames and clips back. Usage counts against your plan, exactly like the studio.
Create a key in Studio → Settings → API & webhooks (owners and admins). Send it as a Bearer token. Keys are shown once and stored hashed.
curl -X POST https://ateliernoir.ai/api/v1/generations \
-H "Authorization: Bearer an_live_…" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://your-cdn.com/product.jpg","frames":3}'/generationsStart a generation from a product photo URL. The image is downloaded, antivirus-scanned and checked like a studio upload.
{
"image_url": "https://your-cdn.com/product.jpg",
"frames": 3, // 1–8, uses frame credits
"model_id": "ml2609_greta", // optional, defaults to your house model
"set_id": "bg2209_resort_santorini", // optional
"title": "SS27 · linen dress"
}202 { "id": "cm…", "status": "queued", "poll": "/api/v1/generations/cm…" }/generations/{id}Status, frames (with quality-check result) and clips.
{ "status": "completed", "frames": [{ "index": 1, "shot": "Full body", "url": "https://…/frame-001.jpg", "quality_check": "ok" }], "clips": [] }/generations/{id}/clipsMake a clip from a finished frame. Uses clip credits: reveal 1, motion 2, spin 2, runway 3.
{ "style": "runway", "frame_index": 1 }202 { "id": "cm…", "status": "processing" }/modelsActive models in the library (id, name, tags, image).
{ "models": [ … ] }/setsActive sets in the library (id, name, category, image).
{ "sets": [ … ] }Errors: 401 invalid key · 402 not enough frames or clip credits · 409 not ready · 400 invalid input (with a message).
Limits: image_url must be a public http(s) address, up to 25 MB, JPG/PNG/WEBP/HEIC. Poll every few seconds; frames take a minute or two, clips about three minutes.
Shopify: connect your store in Settings → Integrations to send frames straight to a product, from the studio.