Quickstart: render your first product image
Go from a new key to a finished render in six steps. Copy each request, run it, and read what comes back.
Updated
Before you start
- A Skip Shoot workspace with the API switched on. It is in early access: ask for access if your workspace does not have it yet.
- You are an owner or admin of the workspace, so you can create keys.
- At least one product in your catalog, and 1 credit for the render.
- A picture of a room as JPEG, PNG or WebP, up to 30 MB, at a public URL or on your computer.
- A terminal with
curl, or Node.js 18 or later, or Python 3 with therequestspackage.
1. Create a secret key
In Skip Shoot, open Settings → Developers and create a secret key named “Quickstart”. The key is shown once: copy it before you close the dialog.
Put it in an environment variable, so it stays out of your code:
export SKIPSHOOT_SECRET_KEY="sk_live_…" # paste your own key2. Check the key
This spends nothing, and shows the key works:
curl https://www.skipshoot.com/api/v1/me \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY"{
"workspace": {
"name": "Northwind Textiles"
},
"key": {
"kind": "secret",
"mode": "live"
},
"credits": {
"used": 312,
"limit": 1500,
"remaining": 1188
}
}A 401 here means the key was not copied whole. See Authentication errors.
3. Add a scene
A scene is the room your product renders into. Send a room picture’s URL, or upload the file. Adding a scene is free.
curl -X POST https://www.skipshoot.com/api/v1/scenes \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/rooms/library.jpg",
"name": "Library"
}'{
"scene": {
"id": 812,
"name": "Library",
"origin": "upload",
"setting": "indoor",
"status": "analyzing",
"image_url": "https://…",
"surfaces": [],
"created_at": "2026-10-21T14:02:40.000Z"
}
}Note the scene’s id. Here it is 812.
4. Wait for the scene
The room’s surfaces are found in the background. Fetch the scene every few seconds until its status is ready:
curl https://www.skipshoot.com/api/v1/scenes/812 \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY"{
"scene": {
"id": 812,
"name": "Library",
"origin": "upload",
"setting": "indoor",
"status": "ready",
"image_url": "https://…",
"surfaces": [
{
"id": "wall_1",
"name": "Back wall",
"type": "wall"
},
{
"id": "floor_1",
"name": "Floor",
"type": "floor"
},
{
"id": "sofa_1",
"name": "Sofa",
"type": "furniture"
},
{
"id": "scene_lighting",
"name": "Scene lighting",
"type": "lighting"
}
],
"created_at": "2026-10-21T14:02:40.000Z"
}
}If it comes back failed, the picture could not be read this time: add it again in a few minutes. If it is ready but lists only scene_lighting, no surfaces were found: try a sharper, wider picture of the room. Adding a scene costs nothing.
5. Choose a product
List the products your workspace can render, and pick one:
curl https://www.skipshoot.com/api/v1/products \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY"{
"products": [
{
"id": 4410,
"name": "Emerald velvet",
"brand": "Northwind",
"sku": "NW-VEL-104",
"category": "Upholstery fabric",
"type": "furniture",
"material_type": "fabric",
"image_url": "https://…"
}
]
}6. Render and download
Ask for the product in the scene. Leave out surface_id and it goes on the first surface it fits. The Idempotency-Key makes a retry safe: the same request sent twice is charged once.
curl -X POST https://www.skipshoot.com/api/v1/renders \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY" \
-H "Idempotency-Key: quickstart-library-4410" \
-H "Content-Type: application/json" \
-d '{
"scene_id": 812,
"product_id": 4410
}'{
"renders": [
{
"id": "3f2b8e9a-6c1d-4e7b-9a05-2d8c41f7b6e0",
"scene": {
"id": 812,
"name": "Library"
},
"product": {
"id": 4410,
"name": "Emerald velvet"
},
"paint": null,
"surface": "Sofa",
"created_at": "2026-10-21T14:03:12.000Z",
"status": "queued",
"image_url": null,
"upscale_status": "not_requested",
"error": null
}
],
"credits_charged": 1
}Fetch the render every few seconds until its status is completed:
curl https://www.skipshoot.com/api/v1/renders/3f2b8e9a-6c1d-4e7b-9a05-2d8c41f7b6e0 \
-H "Authorization: Bearer $SKIPSHOOT_SECRET_KEY"{
"render": {
"id": "3f2b8e9a-6c1d-4e7b-9a05-2d8c41f7b6e0",
"scene": {
"id": 812,
"name": "Library"
},
"product": {
"id": 4410,
"name": "Emerald velvet"
},
"paint": null,
"surface": "Sofa",
"created_at": "2026-10-21T14:03:12.000Z",
"status": "completed",
"image_url": "https://…",
"upscale_status": "not_requested",
"error": null
}
}Then download the image from image_url. The link needs no key:
curl -o library-emerald-velvet.png "<image_url from the response>"Next steps
- Paste a ready-made client into your project: Client code.
- Send up to 100 renders at once: Render in batches.
- Repaint walls in your exact colors: Render paint colors.
- Render your whole catalog from a script: Sync a catalog.
- Before you go live, read the go-live checklist.
Something these pages do not answer? Email admin@skipshoot.com and we’ll help.
