API Documentation

Products - List of Products

Fulfill your print on demand products through an integration with the Gooten API. Learn more about powering your store through our print on demand API.

Now that we have the user’s country, we can call out to the API for a list of available products.

Each product belongs to some Product Category. Products can have multiple Product Variants, and Product Variants can have multiple Product Templates. For example, “Canvas Wraps” is a product that has multiple Product Variants (square, rectangle, black, white, 6x6 inch, etc…) and each of them has multiple Product Templates (with a single photo, 3 photos, 6 photos, etc…). It belongs to “Home Decor” Product Category. SKU (Stock Keeping Unit) is a string that uniquely identifies a single Product Variant. For example, CanvsWrp-BlkWrp-6x6 is a SKU for a black, square 6x6 inch Canvas Wrap.

The GET products endpoint can give you data to:

  • see which products are available in your region
  • see the starting prices for the products
  • get marketing-worthy content and images for the products

The GET products endpoint takes 4 parameters:

  • countryCode - required - the 2 character (ISO 3166-1 alpha-2) country code that the user is interested in shipping to
  • currencyCode - optional, defaults to “USD” - the currency in which the prices will be represented
  • languageCode - optional, defaults to “en” - the language to have product data returned in
  • all - optional, defaults to false - whether to return all the products that are orderable in the user’s region, or to only return products the user has set up in the product settings page.

This request yields the following response:

{
  "Products": [
    {
      "Id": "int",
      "UId": "string",
      "Name": "string",
      "ShortDescription": "string",
      "HasAvailableProductVariants": "boolean",
      "HasProductTemplates": "boolean",
      "FeaturedIndex": "integer",
      "IsFeatured": "bool",
      "IsComingSoon": "bool",
      "MaxZoom": "integer",
      "RetailPrice": {
        "Price": "decimal",
        "CurrencyCode": "string",
        "FormattedPrice": "string",
        "CurrencyFormat": "string",
        "CurrencyDigits": "integer"
      },
      "Info": [
        {
          "ContentType": "string",
          "Content": [
            "string"
          ],
          "Key": "string",
          "Index": "int"
        }
      ],
      "ProductImage": [
        {
          "Url": "string",
          "Description": "string",
          "Index": "int",
          "Id": "string",
          "ImageTypes": [
            "string"
          ]
        }
      ],
      "PriceInfo": {
        "Price": "decimal",
        "CurrencyCode": "string",
        "FormattedPrice": "string",
        "CurrencyFormat": "string",
        "CurrencyDigits": "integer"
      },
      "PartnerPriceInfo": {
        "Price": "decimal",
        "CurrencyCode": "string",
        "FormattedPrice": "string",
        "CurrencyFormat": "string",
        "CurrencyDigits": "integer"
      },
      "Categories": [
        {
          "Id": "int",
          "Name": "string"
        }
      ]
    }
  ]
}

So now we have a list of products. You may only want to display products that have Product.IsComingSoon property set to false. This indicates that a new product is getting ready to be launched but is not yet available for ordering.

Now that we have a list of available products, we can ping the API to see which Product Variants underneath them are available.

Next Step: List of Product Variants