API Documentation

Products - Product Previews

Submit an image (or images) to be rendered into a product preview.

Asynchronous Previews

Preview generation is asynchronous by default. That means that the result you receive will contain a link to an image that will eventually exist at that URL. Given the amount of previews in our queue, the preview can take anywhere from 100 milliseconds to a few minutes.

We offer synchronous preview generation to some partners. To see if you qualify, or to speak to someone in sales about buying access, you can contact partnersupport@gooten.com.

Product Mockup API

Our endpoint takes a single argument - ProductPreviewRequest - which is JSON that needs to contain the following data:

  • SKU - SKU of product
  • Template - template name of product
  • Images - array of objects, each containing the following:
    • LayerId - id of the layer that the image belongs to (String)
    • Image object with the following properties:
      • Url - url of image
      • MaxFit - fit image to area true/false
      • X1 - left coordinate of image
      • X2 - right coordinate of image
      • Y1 - top coordinate of image
      • Y2- bottom coordinate of image
  • MaxWidth - (optional) max width of the resultant image. Defaults to 500px
  • MaxHeight - (optional) max height of the resultant image. Defaults to 500px

This request yields following response:

    "Url": "https://gtnimgmanipcdn.azureedge.net/img-manip/195b31e2529f37eb00fa586773bccccc.png"
  "HadError": false

Multi-Image Product Mockup Example

Here is an example request JSON for when you need to submit a preview for an item with multiple spaces and layers; here we do so in order to create mockup images for left and right sandals:

  "Sku": "string",
  "Template": "string",
  "Images": [
      "LayerId": "string",
      "Image": {
        "Url": "string",
        "MaxFit": "bool",
        "X1": "int",
        "X2": "int",
        "Y1": "int",
        "Y2": "int"
  "MaxHeight": "int",
  "MaxWidth": "int"

And the response looks like:

  "Url": "string",
  "HadError": "boolean",
  "ErrorMessage": "string"