Skip to main content
GET
https://api.firmly.work
/
api
/
v1
/
domains-products
/
{merchant-domain}
curl --request GET \
  --url 'https://api.firmly.work/api/v1/domains-products/staging.luma.gift?page=1&size=100' \
  --header 'x-firmly-authorization: YOUR_AUTH_TOKEN'
[
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/radiant-tee",
    "handle": "radiant-tee",
    "title": "Radiant Tee",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/radiant-tee-main.jpg"
    }
  },
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/hero-hoodie",
    "handle": "hero-hoodie",
    "title": "Hero Hoodie",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/hero-hoodie-main.jpg"
    }
  },
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/breathe-easy-tank",
    "handle": "breathe-easy-tank",
    "title": "Breathe-Easy Tank",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/breathe-easy-tank-main.jpg"
    }
  }
]
Retrieves a paginated list of all products from a merchant’s store. This endpoint returns product summaries with links to retrieve full details for each product.

Path Parameters

merchant-domain
string
required
The domain of the merchant website (e.g., staging.luma.gift)

Query Parameters

page
number
default:"1"
Page number for pagination
size
string
default:"2000"
Number of products per page. Valid values: 100, 500, 1000, 2000
countryCode
string
default:"us"
Country code for regional product availability

Response

Returns an array of product summaries, each containing:
loc
string
Full URL to retrieve detailed product information
handle
string
Product handle/identifier
title
string
Product title
image
object
Primary product image

Expected Errors

AllProductsNotImplemented
404
The merchant’s platform doesn’t support product catalog browsing
Size Invalid
400
The size parameter contains an invalid value. Valid values are: 100, 500, 1000, 2000
curl --request GET \
  --url 'https://api.firmly.work/api/v1/domains-products/staging.luma.gift?page=1&size=100' \
  --header 'x-firmly-authorization: YOUR_AUTH_TOKEN'
[
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/radiant-tee",
    "handle": "radiant-tee",
    "title": "Radiant Tee",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/radiant-tee-main.jpg"
    }
  },
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/hero-hoodie",
    "handle": "hero-hoodie",
    "title": "Hero Hoodie",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/hero-hoodie-main.jpg"
    }
  },
  {
    "loc": "https://api.firmly.work/api/v1/domains-products/staging.luma.gift/breathe-easy-tank",
    "handle": "breathe-easy-tank",
    "title": "Breathe-Easy Tank",
    "image": {
      "url": "https://cdn.staging.luma.gift/products/breathe-easy-tank-main.jpg"
    }
  }
]

Usage Notes

The loc field contains the full URL to retrieve detailed product information. You can either:
  • Extract the handle from the URL and use the Get a Product endpoint
  • Make a direct GET request to the loc URL with your authentication header
This endpoint may return a large amount of data. Use pagination parameters to control response size and improve performance.

Example: Product Browsing Implementation

// Fetch first page of products
const response = await fetch(
  'https://api.firmly.work/api/v1/domains-products/staging.luma.gift?page=1&size=100',
  {
    headers: {
      'x-firmly-authorization': authToken
    }
  }
);

const products = await response.json();

// Display product grid
products.forEach(product => {
  // Extract handle from loc URL or use the handle field
  const handle = product.handle;
  
  // Create product card with:
  // - product.title
  // - product.image.url
  // - Link to product details using handle
});

// When user clicks a product, fetch full details
const productDetails = await fetch(
  `https://api.firmly.work/api/v1/domains-products/staging.luma.gift/${selectedHandle}`,
  {
    headers: {
      'x-firmly-authorization': authToken
    }
  }
);