Products

Products

What is a Product in ecartAPI?

A Product is a sellable item listed in a connected store. It represents the catalog entry — the thing a customer sees, reads about, and decides to buy. Products carry the name, description, price, images, category, and other attributes that define what is being sold.

Every ecommerce platform has its own way of representing a product — some use "Products" with variants and options, others use "Listings" tied to unique identifiers, "Items" with variations, or entirely proprietary structures. Without ecartAPI, a developer building a multi-platform catalog app would need to learn and maintain a separate integration for each one.

ecartAPI solves this by mapping every platform's native product into a single canonical shape. When you call GET /api/v2/products, you get the same JSON structure regardless of which platform the connected store runs on.

The canonical model

ecartAPI's canonical product includes:

  • A unique identifier and a human-readable title.
  • A description (body HTML).
  • A product type and vendor.
  • One or more Variants — the purchasable versions (e.g., "Red / Large"). See Variants.
  • Options that define variant axes (e.g., "Color", "Size").
  • Images associated with the product.
  • A status (active, draft, archived) and visibility settings.
  • Pricing: base price, compare-at price, cost.
  • Inventory: tracked per variant, per location.
  • Tags and categories for organization.
  • Dates: when the product was created and last updated.

All platforms are normalized to this model. Some platforms have richer data in certain areas (e.g., ASIN and detailed condition info), and ecartAPI preserves that in dedicated fields. But the core shape is always the same.

Important: ecartAPI products support full CRUD on most platforms, but availability of create, update, and delete operations depends on each platform's API capabilities.


API endpoints

MethodPathDescription
GET/api/v2/productsList products with filters.
GET/api/v2/products/countCount products matching the same filters.
GET/api/v2/products/{id}Get a single product by its platform id.
POST/api/v2/productsCreate a product. Not available on all platforms.
PUT/api/v2/products/{id}Update a product. Not available on all platforms.
DELETE/api/v2/products/{id}Delete a product. Not available on all platforms.
POST/api/v2/products/batchCreate multiple products in batch.
PUT/api/v2/products/batchUpdate multiple products in batch.
DELETE/api/v2/products/batchDelete multiple products in batch.
GET/api/v2/products/{productId}/imagesList images for a product.
GET/api/v2/products/{productId}/images/{id}Get a single image.
POST/api/v2/products/{productId}/imagesAdd an image to a product.
DELETE/api/v2/products/{productId}/images/{id}Delete an image.
GET/api/v2/products/{productId}/feedbackGet product reviews/feedback.
POST/api/v2/products/{productId}/feedbackCreate product feedback.
GET/api/v2/catalog/searchSearch the platform's catalog.

Note: Variant endpoints (/api/v2/products/{productId}/variants/...) are documented separately in Variants.

Note: The {id} and {productId} parameters are the product's identifier on the connected platform. ecartAPI does not generate its own ids for products.


Query filters

When listing products, you can pass query parameters to filter, paginate, and sort results. ecartAPI translates these canonical filters into whatever the connected platform's API expects.

ParameterDescription
idsComma-separated list of product ids to retrieve.
skuFilter by SKU.
nameFilter by product name/title.
productTypeFilter by product type.
categoryIdFilter by category id.
limitMaximum number of products per page. Default varies by platform (typically 50).
pagePage token or page number for pagination.
sinceIdReturn products created after this id (cursor-based pagination).
createdAt[from], createdAt[to]Filter by creation date range. ISO 8601 strings recommended.
updatedAt[from], updatedAt[to]Filter by last-updated date range.
status[visibility]Filter by visibility status.
status[active]Filter by active status.
status[status]Filter by platform-specific status.
price[min], price[max]Filter by price range.
sortSort direction: asc or desc.
sortByField to sort by (platform-dependent).
ascAlternative sort direction flag.
searchTypeType of search to perform.
searchIdSearch by specific id.
validateValidation flag for certain platforms.
marketplaceIdFilter by marketplace (for multi-marketplace platforms).

Important: Not every filter works on every platform. If a filter is not supported by the connected platform, it is silently ignored. The most universally supported filters are limit, page, and createdAt.


Response shape

Every product response follows the same canonical shape. Below is a detailed explanation of each field.

Root fields

FieldTypeDescription
idstringThe product's unique identifier on the platform.
productUserIdstringThe seller/user-defined identifier, if the platform supports it.
groupIdstringGroup identifier for product variations (e.g., Amazon parent ASIN).
skustringStock Keeping Unit — the seller's internal identifier.
namestringThe product title/name.
subNamestringSubtitle or secondary name.
upcstringUniversal Product Code.
asinstringAmazon Standard Identification Number.
gtinstringGlobal Trade Item Number.
descriptionstringFull product description (may contain HTML).
currencystringCurrency code (e.g., USD, MXN).
productTypestringProduct type or category classification.
quantitystringTotal available quantity (aggregated across variants/locations).
pricestringBase price.
salePricestringSale/compare-at price.
coststringCost of goods (seller's cost).
discountstringDiscount amount or percentage.
tagsstring/arrayProduct tags for organization.
conditionstringProduct condition (new, used, refurbished).
linkstringURL to the product on the store.
vendorstringProduct vendor/brand.
sellOutStockbooleanWhether the product can be sold when out of stock.
imageUrlstringMain product image URL.
variantsarrayArray of Variant objects.
optionsarrayProduct options (e.g., Color, Size).
imagesarrayProduct image objects.
associatedItemsarrayRelated or bundled items.
locationsarrayLocation-specific data.
internationalShipmentobjectInternational shipping configuration.

Nested objects

status

FieldTypeDescription
idstringPlatform-specific status id.
visibilitystringVisibility state (e.g., visible, hidden).
activestringWhether the product is active (true/false as string).
statusstringPlatform-native status value.
ecartapiIdstringecartAPI-normalized status id.
ecartapistringecartAPI-normalized status name.
hasOptionsbooleanWhether the product has configurable options.
inStockbooleanWhether the product is currently in stock.

dates

FieldTypeDescription
createdAtstringISO 8601 creation timestamp.
updatedAtstringISO 8601 last-updated timestamp.

dimensions / units

FieldTypeDescription
widthstringProduct width.
heightstringProduct height.
lengthstringProduct length/depth.
weightstringProduct weight.

The dimensions object holds numeric values, and units holds the measurement units (e.g., cm, kg).

category

FieldTypeDescription
idstringCategory identifier.
namestringCategory name.
allarrayFull category path/breadcrumb.

Important notes

  • Read support is universal. All integrated platforms support listing and getting products.
  • Write support varies. Create, update, and delete operations depend on each platform's API. If a platform does not support an operation, ecartAPI returns 400 with "The resource is not available for this ecommerce".
  • Batch operations allow creating, updating, or deleting multiple products in a single request. Availability is platform-dependent.
  • Images are a sub-resource of products. Not all platforms support image management through the API.
  • Catalog search (/api/v2/catalog/search) searches the platform's catalog and may return results in a different format than the standard product listing.
  • Response fields are platform-dependent. Not all fields listed in the response shape are available for every ecommerce platform. Some properties may be absent or returned as null depending on what the connected platform's API provides.
  • Variants are documented separately in Variants. Products and variants are tightly coupled — a product always has at least one variant.