Measura API documentation · v1

List products

Discover products and their Measura configuration before retrieving variant measurement settings.

Code example
GET /api/v1/products

Headers:
  Authorization: Bearer <api-key>

Query parameters

Scroll horizontally to see all columns.

ParameterTypeDescription
limitintegerOptional. Positive integer; capped at 100. Default: 25. Controls the Shopify page size before measurement-type filtering.
cursorstringOptional. Opaque nextCursor from a previous response; pagination is forward only.
tagstringOptional. Filter Shopify products by tag.
updatedSincestringOptional. ISO-8601 date/time; includes Shopify products updated at or after this time.
measurementTypestringOptional. Case-insensitive measurement type filter, such as weight, length, area, volume, or time. Applied after fetching each Shopify page.

Response example (200 success)

Code example
{
  "success": true,
  "data": {
    "products": [
      {
        "id": "123",
        "title": "Bulk flour",
        "handle": "bulk-flour",
        "tags": ["bulk"],
        "status": "ACTIVE",
        "createdAt": "2026-01-01T00:00:00Z",
        "updatedAt": "2026-10-19T00:00:00Z",
        "measurementType": "weight",
        "isSellByMeasurementConfigured": true
      }
    ]
  },
  "error": null,
  "meta": {
    "nextCursor": "opaque-page-end-cursor",
    "prevCursor": "opaque-page-start-cursor",
    "hasMore": true
  }
}

Response fields

Scroll horizontally to see all columns.

FieldTypeDescription
data.productsarrayProduct summaries; includes unconfigured Shopify products unless filtered out by measurementType.
data.products[].idstring | nullShopify legacy numeric product ID.
data.products[].title / handle / statusstring | nullShopify product title, URL handle, and status.
data.products[].tagsstring[]Shopify product tags.
data.products[].createdAt / updatedAtstring | nullShopify product creation and update timestamps.
data.products[].measurementTypestringMeasurement type resolved from Measura settings. This value alone does not establish configuration or variant eligibility.
data.products[].isSellByMeasurementConfiguredbooleanWhether the product belongs to a configured Measura product group. Check individual variant eligibility separately.
metaPaginationMetaPagination of the underlying Shopify page.
errornullNull for a successful response.

Error responses

Scroll horizontally to see all columns.

Status codeDescription
400Invalid limit or updatedSince.
401 / 403 / 429Authentication, Public API entitlement, or rate-limit failure.
500Failed to fetch products.

Note

  • Responses are cached for five minutes and return Cache-Control: private, max-age=300.
  • The measurementType filter can produce an empty or short page even when meta.hasMore is true. Continue with nextCursor until hasMore is false.
  • nextCursor and prevCursor represent the fetched page's end and start. Use hasMore to decide whether to continue; a non-null nextCursor alone does not mean another page exists. Save prior request cursors locally for backward navigation.
  • updatedSince filters Shopify product update timestamps. It is not a change feed for all Measura settings or fractional inventory changes.

Related:

Retrieve measurement configuration using Get product with variants. See the Product object for the summary and detail shapes.