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
Resolution4K.
FormatPNG or JPEG, kept as the model made it: the file name and Content-Type say which.
ShapeThe aspect ratio closest to the scene's picture: 16:9, 4:5, 1:1 or 9:16.
Linkimage_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_statusMeansimage_url is
not_requestedNo upscale was asked for.The image as rendered
pendingAsked for; the render is not finished yet.Not set yet
completedThe upscale was made.The upscaled image
failedThe upscale was tried and failed. The render still completed.The image as rendered
unavailableUpscaling 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.

  • Every image link is a full https URL, 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.