Image output and links
A completed render links to its 4K image, a PNG or a JPEG. The link is signed and lasts at least 30 days, so download what you keep.
Updated
What a render produces
| A completed render | |
|---|---|
| Resolution | 4K. |
| Format | PNG or JPEG, kept as the model made it: the file name and Content-Type say which. |
| Shape | The aspect ratio closest to the scene's picture: 16:9, 4:5, 1:1 or 9:16. |
| Link | image_url, set once the status is completed and null before then. |
Upscaling
A render request can ask for an upscaled image with upscale: true. It costs no extra credit. Each render then reports what became of it in upscale_status:
| upscale_status | Means | image_url is |
|---|---|---|
| not_requested | No upscale was asked for. | The image as rendered |
| pending | Asked for; the render is not finished yet. | Not set yet |
| completed | The upscale was made. | The upscaled image |
| failed | The upscale was tried and failed. The render still completed. | The image as rendered |
| unavailable | Upscaling is not available, so none was made. | The image as rendered |
A failed or cancelled render has no image, so its upscale_status is null.
Signed image links
- Every image link is a full
httpsURL, signed, and lasts at least 30 days. - Each time you fetch a render, its link is signed afresh, so Retrieve a render always gives you a working one.
- Anyone who has a link can open the image until it expires, without a key. Share links only where you would share the image.
Download and store images
Download the image as soon as its render completes, and keep the render’s id beside it:
import { writeFile } from "node:fs/promises";
async function saveImage(render) {
const response = await fetch(render.image_url);
if (!response.ok) {
throw new Error(`Could not download ${render.id}: ${response.status}`);
}
await writeFile(`renders/${render.id}.png`, Buffer.from(await response.arrayBuffer()));
}The image link needs no key. If a download fails because the link has expired, fetch the render again and use the new link.
Scene and product images
Scenes and products carry an image_url too: the scene’s room picture, and the product’s own image. Links to images stored with us are signed in the same way. A product image that lives on your own website is returned as the address you gave it.
Ownership and use
Renders made from your content are yours: the Terms of service say so. They also appear in your workspace’s gallery in the app, marked as made by the API.
Something these pages do not answer? Email admin@skipshoot.com and we’ll help.
