Response objects

Every field of the Product, Scene, Surface, Render and Error objects the API returns.

Updated

Every field below is always present. A value the API does not have is null, never left out.

Product

JSON
{
  "id": 4410,
  "name": "Emerald velvet",
  "brand": "Northwind",
  "sku": "NW-VEL-104",
  "category": "Upholstery fabric",
  "type": "furniture",
  "material_type": "fabric",
  "image_url": "https://…"
}
idinteger

The product’s id, for product_id.

namestring

Its name, as in your catalog.

brandstring | null

Its brand.

skustring | null

Its SKU, for matching to your own systems.

categorystring | null

The name of its category.

typestring

Which surfaces it can go on: wall, floor, counter, cabinetry, furniture, furnishing or lighting. See Which products fit which surfaces.

material_typestring

What it is made of; other when not known. See Material types.

image_urlstring | null

A link to the product’s image.

Scene

JSON
{
  "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"
}
idinteger

The scene’s id, for scene_id.

namestring

Its name.

originstring

upload, editorial or library. See Where scenes come from.

settingstring

indoor or outdoor, as chosen when the scene was added.

statusstring

analyzing, ready, failed or not_analyzed. Only a ready scene can take renders.

image_urlstring | null

A signed link to the room picture.

surfacesSurface[]

What a render can go on, in your workspace’s order. Empty until the status is ready.

created_atstring | null

When it was added, as ISO 8601 in UTC.

Surface

JSON
{
  "id": "sofa_1",
  "name": "Sofa",
  "type": "furniture"
}
idstring

For surface_id. Meaningful only within its scene.

namestring

A readable label, such as “Back wall”.

typestring

wall, ceiling, floor, counter, cabinetry, furniture, light_fixture or lighting. See Surface types.

Render

JSON
{
  "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
}
idstring

The render’s id, a UUID.

statusstring

queued, rendering, upscaling, completed, failed or cancelled. See Render statuses.

sceneobject

The scene’s id and name.

productobject

The product’s id and name, both null for a paint render.

paintobject | null

For a paint render, its hex as #RRGGBB and your name for it. null for a product render.

surfacestring | null

The name of the surface it went on.

image_urlstring | null

Once completed, a signed link to the image, valid for at least 30 days. null until then. See Image output and links.

upscale_statusstring | null

not_requested, pending, completed, failed or unavailable: whether image_url is upscaled. not_requested whenever no upscale was asked for; null for a failed or cancelled render that asked for one. See Upscaling.

errorstring | null

For a failed or cancelled render, why, in words you can show your team. null otherwise.

created_atstring | null

When it was requested, as ISO 8601 in UTC.

Error

JSON
{
  "error": {
    "type": "not_found",
    "message": "No such render."
  }
}
error.typestring

Stable; branch on it. Every value is listed in Error types.

error.messagestring

Written for people. May change at any time.

Something these pages do not answer? Email admin@skipshoot.com and we’ll help.