Manage Products
This guide covers all operations to query, create, update, and delete products and their sub-entities.For all available fields, types, and validations for each endpoint, see the API Reference.
Important Rules
Before you begin, keep these rules in mind — they apply to all product management:- Product status: Currently the only supported value is
"published". The status is returned as-is in responses. option_valuesis immutable: Once a variant is created, you cannot change itsoption_valuesvia PATCH. If you need to fix them, delete the variant and create it again.- Supported currencies:
MXN,PEN,COP,CLP,ARS,BRL,VES,BOB,USD,PYG,UYU,CRC,EUR. - Currency must match the catalog’s currency: All variants of a product must use the same currency configured in the catalog. Using a different currency may cause internal inconsistencies.
- Responses:
PATCHreturns200with the updated resource.DELETEreturns204with no body. - Every product requires at least one variant: Even simple products (no sizes or colors) need at minimum one option and one variant. Use a generic name like “Presentation” or “Unit”.
- No batch endpoints: Each entity must be created individually.
Query Products
List products
Returns a paginated list of products with all their sub-entities.limit accepts a maximum of 100. See Pagination for more details.Get a product
Returns a product with all its options, variants (with media), and categories.Create a Complete Product
1. Create the product
2. Add options
The response includes the IDs of the created values. Save these IDs to use them when creating variants.Need to add more values to an option? Use
POST /v1/products/{product_id}/options/{option_id}/values with the new value name (e.g. {"name": "XL"}).3. Create variants
Each variant must includeoption_values with at least one option value ID.
4. Add media to the variant
Allowed file types:
5. Assign categories
This endpoint is idempotent: if a tag is already assigned, it is skipped and the response is200. Only returns 201 when new tags are assigned.
Update Entities
Update product
Update product
Update option
Update option
Update option value
Update option value
Update variant
Update variant
Update media
Update media
Delete Entities
Remove category from a product
Remove category from a product
This unlinks the category from the product, but does not delete the global category.
Delete media
Delete media
Delete variant
Delete variant
Delete option value
Delete option value
Delete option
Delete option
Delete entire product
Delete entire product
Simple Product (no variations)
Not all products have sizes or colors. Even so, every product requires at least one option and one variant. Use a generic name for the option.The option name is free-form:
"Presentación", "Tipo", "Unidad", etc.Common Errors
Validation errors (422) return a body with details about the failing field:
422 — "option_values must have at least 1 item"
422 — "option_values must have at least 1 item"
You are creating a variant without
option_values or with an empty list. You must create options first with POST /v1/products/{product_id}/options and use the IDs of the returned values.Creating variants before options
Creating variants before options
If you try to create a variant before creating options, you will not have value IDs available for the
option_values field. Always create options first.Using name instead of tag_id for categories
Using name instead of tag_id for categories
The
POST /v1/products/{product_id}/categories endpoint requires tag_ids (a list of numeric IDs), not category names. First create the category with POST /v1/categories and use the returned id.Forgetting catalog_id when creating a product
Forgetting catalog_id when creating a product
The
catalog_id field is required when creating a product. Get your catalog with GET /v1/catalogs.Invalid option_value IDs
Invalid option_value IDs
The
option_values IDs must correspond to values from the same product. Using IDs from another product or nonexistent IDs will result in an error.Trying to change option_values of an existing variant
Trying to change option_values of an existing variant
PATCH /v1/products/{product_id}/variants/{variant_id} does not accept option_values. Option values for a variant are assigned only at creation time. If you need to fix them, delete the variant and create it again with the correct values.
