Third Variation Tutorial
important
This is an upcoming feature. OpenAPI devs need to be ready by June 1st 2026, but Etsy will communicate the exact date of launch closer to cutover.
The maximum number of listing properties to be used in a listing's inventory is now 3.
Set the new query parameter max_variations_supported to 3 to write listing inventory with 3 variations.
The third variation has to be one of the properties of the listing's taxonomy node and can only use the property's predefined values("possible_values").
The third variation cannot be a custom variation or have custom values.
When using predefined properties and values, buyers can find your listings via search filters.
Reading Listings with a Third Variation#
warning
Ensure you update your app to support reading all three variations before June 1st 2026. After that date, your app may incorrectly process listings with three variations and fail silently.
Endpoints that return inventory and variation data may now have up to three variations.
If a listing has three variations:
- when calling getListingInventory, all the
"products" > "property_values"arrays have three elements. - when calling getListing with the
includes=Inventoryquery param, the"inventory" > "products" > "property_values"arrays have three elements. - when calling getShopReceiptTransaction for a transaction for the listing, the
"variations"array has three elements. - when calling getShopReceipt for a receipt for the listing, the
"transactions" > "product_data"arrays and the"transactions" > "variations"array have three elements.
Example Response for getListingInventory
Writing Listings with a Third Variation#
The updateListingInventory accepts values for a third variation.
If the query parameter max_variations_supported is set to 3, adding or updating the third variation is enabled.
The third variation cannot be a custom variation or have custom values.
The *_on_property fields can have zero, one, or all the variation properties.
- Related endpoints: updateListingInventory
- Structure changes: The request and response structures remain the same.
- New parameters: Optional integer query parameter
max_variations_supportedwith accepted values[2, 3].- If included and set to
3, the endpoint accepts requests with three variations and/or updates to listings with three variations. - If omitted or set to
2, the endpoint rejects requests with three variations and/or updates to listings with three variations and return an appropriate error message. - Invalid values for this parameter return an appropriate error message.
- For requests with two or less variations this parameter is not required.
- If included and set to
- Errors:
- 400: Invalid value (X) for query parameter
max_variations_supported. - 400: Could not update inventory with unsupported number of variations. The maximum number of supported variations is X.
- 400: Could not update inventory because the third variation uses a custom variation property (513 or 514).
- 400: Could not update inventory because the third variation does not support custom values. Use the property's value ids defined by the listing's taxonomy node.
- 400:
X_on_property:unsupported number of property IDs. Supports only zero, one, or all variation properties (Y).
- 400: Invalid value (X) for query parameter
Parameter Conditionals#
- Query parameter
max_variations_supportedis omitted or set to2.
| Listing | Request Payload | Result |
|---|---|---|
| Has up to two variations | Has up to two variations | Request succeeds, listing has request variations |
| Has up to three variations | Has three variations | Request fails with a 400 error, listing has original variations |
| Has three variations | Has up to three variations | Request fails with a 400 error, listing has original variations |
- Query parameter
max_variations_supportedis set to3.
| Listing | Request Payload | Result |
|---|---|---|
| Has up to three variations | Has up to three variations | Request succeeds, listing has request variations |
Notes:
- If the
max_variations_supportedquery parameter is set to a different value than2or3the request returns a 400 error. - If the listing has three variations and the request payload has less than three variations, the missing variations is deleted.
Writing a Third Variation#
Use the endpoint getPropertiesByTaxonomyId to get the list of properties that can be used for variations ("supports_variations": true).
The third variation can't be a custom variation.
Custom variations use property_ids 513 and 514.
The first two variations can be custom or property variations.
Examples#
- Parameter set to 3
- Parameter unset or set to 2
- Parameter set to 3, custom variation
- Context:
- Request for listing with two or less variations, request adds a third variation.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Request for listing with two or less variations, request adds a third variation.
- Query parameter
max_variations_supportedis omitted or set to2. (max_variations_supported=2)
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
- Context:
- Request for listing with two variations, payload adds a third custom variation.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
Writing a Third Variation: Value Types#
The values of the third variation must be predefined for the property. There are three kinds of properties that support variations for the third variation:
- Properties with predefined values, for example
Color(200): The third variation can only use the predefined values. - Properties with predefined scales and predefined values, for example
Bed pillow size (148789511779): The third variation can only use the predefined scales with the predefined values. - Properties with predefined scales and no predefined values, for example
Width(47626759898): The third variation can use the predefined scales with custom values.
Use the endpoint getPropertiesByTaxonomyId to get the valid value_id or scale_id for the related properties of the listing's taxonomy node.
Examples#
- Predefined values
- Predefined scaled values
- Scaled custom values
- Custom values
- Context:
- Payload has a third variation with predefined values.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation with predefined scaled values.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation with predefined scaled values.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields may have zero, one, or all three properties.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation with predefined scaled values.
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
Writing a Third Variation: On Property#
For listings with a third variation, you can use the *_on_property fields as follows:
- Leave all of them empty, OR
- Add one property to any of them, OR
- Add all three properties to any of them.
When the listing has three variations, adding only two properties to any of these fields returns an error.
Examples#
- Empty on_property fields
- Up to one element
- Three elements
- Two elements
- Context:
- Payload has a third variation and empty
*_on_propertyfields. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and empty
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have up to one element. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty or have one element.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have three elements. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- All
products[].property_valueshave three elements. - The
*_on_propertyfields are empty or have three elements.
- All
Example Payload
Example Response
- Context:
- Payload has a third variation and
*_on_propertyfields have two elements. - Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Payload has a third variation and
- Response changes:
- Returns a 400 error.
Example Payload
Example Response
Removing the Third Variation#
To remove the third variation, use the updateListingInventory endpoint.
Set the query parameter max_variations_supported to 3 and remove the variation property from property_values.
Ensure that *_on_property fields only have properties used in the new inventory.
Examples#
- Parameter set to 3
- Parameter unset or set to 2
- Context:
- Request for listing with three variations, payload removes a variation
- Query parameter
max_variations_supportedis set to3. (max_variations_supported=3)
- Response changes:
- All
products[].property_valueshave two elements. - The
*_on_propertyfields may have zero, one, or all two properties.
- All
Example Payload
Example Response
- Context:
- Request for listing with three variations, payload removes a variation
- Query parameter
max_variations_supportedis omitted or set to2. (max_variations_supported=2)
- Response changes:
- Returns a 400 error.
Example Payload
Example Response