Attribute and attribute option translations

Read and write attribute and option translations through the Store API.

Translate an attribute's name, slug, and description, or translate an option's label and value, for an enabled non-default locale. Reads return stored translations only; an existing resource with no translations returns an empty fields object. Batch reads return a resources entry for each requested ID, and batch writes commit all rows or none.

These translations do not change attribute or option IDs. Product option selectors and product-option URL tokens currently use the source labels, slug, and values; storefront filter labels may use translated option labels. Use the Attributes endpoints to read source values. Translation reads require read_products and read_translations; writes require write_products and write_translations.

Get attribute translation

GET read_products + read_translations

Fetch one attribute translation.

Returns stored translated attribute fields for one locale, including whether the translation is out of date. Attribute translations cover name, slug, and description; option labels/values use the Attribute Option translation endpoints. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute id does not exist in this store.

Set attribute translation

PUT write_products + write_translations

Set one attribute translation.

Writes translated attribute fields for one locale. Empty values clear the matching field translation.

Path parameters

Name Type Description
id required integer

Attribute id.

Example: 7
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required object

Field-keyed translation values. Allowed fields: name, slug, description.

Example: {"name": "Couleur", "slug": "couleur", "description": "Choix de couleur."}

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute id must be an integer.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute id does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The supplied field is not translatable for this resource.

  • 400 TRANSLATION_FIELDS_REQUIRED

    A translation row contains no fields.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the configured length limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds its field-specific length limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains a forbidden control character.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    A localized unique value conflicts with another resource.

  • 400 ATTRIBUTE_SLUG_INVALID_FORMAT

    Translated slug is not a valid URL token.

  • 400 ATTRIBUTE_SLUG_RESERVED

    Translated slug is reserved.

  • 409 ATTRIBUTE_DUPLICATE

    Translated attribute name or slug conflicts with another attribute.

Batch get attribute translations

GET read_products + read_translations

Fetch attribute translations in batch.

Returns one resources entry per requested attribute id. An existing attribute without stored translations has an empty field map; an unknown id fails the request. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Query parameters

Name Type Description
ids required string

Comma-separated attribute ids.

Example: 7,8,9

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute id does not exist in this store.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    An id is not an integer, or no ids were supplied.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

Batch set attribute translations

PUT write_products + write_translations

Set attribute translations in batch.

Writes translated attribute fields for multiple attribute ids in one locale. Either every row is written or, if any row is invalid, none are.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required array<object>

Rows with id and fields. Allowed fields: name, slug, description.

Example: [{"id": 7, "fields": {"name": "Couleur"}}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute id does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The supplied field is not translatable for this resource.

  • 400 TRANSLATION_FIELDS_REQUIRED

    A translation row contains no fields.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the configured length limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds its field-specific length limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains a forbidden control character.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    A localized unique value conflicts with another resource.

  • 400 ATTRIBUTE_SLUG_INVALID_FORMAT

    Translated slug is not a valid URL token.

  • 400 ATTRIBUTE_SLUG_RESERVED

    Translated slug is reserved.

  • 409 ATTRIBUTE_DUPLICATE

    Translated attribute name or slug conflicts with another attribute.

  • 400 TRANSLATION_NO_WRITES_PROVIDED

    The translations array is empty.

  • 400 TRANSLATION_TOO_MANY_FIELDS

    The request exceeds the translation write field cap.

Get attribute option translation

GET read_products + read_translations

Fetch one attribute option translation.

Returns stored translated option fields for one locale, including whether the translation is out of date. Attribute option translations cover label and value. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
id required integer

Attribute option id.

Example: 41
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute option id must be an integer.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute option id does not exist in this store.

Set attribute option translation

PUT write_products + write_translations

Set one attribute option translation.

Writes translated option fields for one locale. Empty values clear the matching field translation.

Path parameters

Name Type Description
id required integer

Attribute option id.

Example: 41
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required object

Field-keyed translation values. Allowed fields: label, value.

Example: {"label": "Rouge", "value": "rouge"}

Errors

  • 400 STORE_API_INVALID_ATTRIBUTE_ID

    Attribute option id must be an integer.

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute option id does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The supplied field is not translatable for this resource.

  • 400 TRANSLATION_FIELDS_REQUIRED

    A translation row contains no fields.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the configured length limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds its field-specific length limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains a forbidden control character.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    A localized unique value conflicts with another resource.

  • 400 ATTRIBUTE_OPTION_LABEL_TOO_LONG

    Translated option label exceeds its limit.

  • 400 ATTRIBUTE_OPTION_VALUE_INVALID_FORMAT

    Translated option value is not a valid URL token.

  • 400 ATTRIBUTE_OPTION_VALUE_TOO_LONG

    Translated option value exceeds its limit.

  • 400 ATTRIBUTE_OPTION_LABEL_DUPLICATE

    Translated option label duplicates another option on the same attribute.

Batch get attribute option translations

GET read_products + read_translations

Fetch attribute option translations in batch.

Returns one resources entry per requested option id. An existing option without stored translations has an empty field map; an unknown id fails the request. Fields without a translation in this locale are omitted from the response. An omitted field is not empty: shoppers see the store's base-language value, which the resource's own GET endpoint returns.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Query parameters

Name Type Description
ids required string

Comma-separated attribute option ids.

Example: 41,42,43

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute option id does not exist in this store.

  • 400 TRANSLATION_INVALID_RESOURCE_ID

    An id is not an integer, or no ids were supplied.

  • 400 TRANSLATION_TOO_MANY_RESOURCES

    The request exceeds the translation batch resource cap.

Batch set attribute option translations

PUT write_products + write_translations

Set attribute option translations in batch.

Writes translated option fields for multiple option ids in one locale. Either every row is written or, if any row is invalid, none are.

Path parameters

Name Type Description
locale required string

Enabled non-default store locale.

Example: fr

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Idempotency-Key string

Optional key for this translation write. Reuse it only with the same payload when repeating the request.

Body parameters

Name Type Description
translations required array<object>

Rows with id and fields. Allowed fields: label, value.

Example: [{"id": 41, "fields": {"label": "Rouge", "value": "rouge"}}]

Errors

  • 400 STORE_API_INVALID_REQUEST_BODY

    Request body is not valid JSON or does not match the expected shape.

  • 400 TRANSLATION_LOCALE_NOT_ENABLED

    Locale is not enabled for this store.

  • 400 TRANSLATION_DEFAULT_LOCALE_FORBIDDEN

    The store's default locale cannot be queried as a translation.

  • 400 TRANSLATION_RESOURCE_ID_NOT_IN_STORE

    The attribute option id does not exist in this store.

  • 400 TRANSLATION_FIELD_NOT_TRANSLATABLE

    The supplied field is not translatable for this resource.

  • 400 TRANSLATION_FIELDS_REQUIRED

    A translation row contains no fields.

  • 400 TRANSLATION_FIELD_VALUE_TOO_LONG

    A translated value exceeds the configured length limit.

  • 400 TRANSLATION_FIELD_EXCEEDS_BYTE_LIMIT

    A translated value exceeds its field-specific length limit.

  • 400 TRANSLATION_STAGING_INVALID_CONTROL_CHARS

    A translated value contains a forbidden control character.

  • 409 TRANSLATION_DUPLICATE_NAME_OR_SLUG

    A localized unique value conflicts with another resource.

  • 400 ATTRIBUTE_OPTION_LABEL_TOO_LONG

    Translated option label exceeds its limit.

  • 400 ATTRIBUTE_OPTION_VALUE_INVALID_FORMAT

    Translated option value is not a valid URL token.

  • 400 ATTRIBUTE_OPTION_VALUE_TOO_LONG

    Translated option value exceeds its limit.

  • 400 ATTRIBUTE_OPTION_LABEL_DUPLICATE

    Translated option label duplicates another option on the same attribute.

  • 400 TRANSLATION_NO_WRITES_PROVIDED

    The translations array is empty.

  • 400 TRANSLATION_TOO_MANY_FIELDS

    The request exceeds the translation write field cap.

Webhook events#

Subscribe to these events when your integration mirrors localized attributes. Update and clear events identify the locale and changed fields. One write can emit both events when it sets some fields and clears others.

Attribute translations updated

EVENT attributes/translations/update App scope: read_products Staff permission: products:write

Fired when an attribute's translations are added or updated for a locale. Payload carries only the fields that changed.

Payload fields

Field Type Description
attribute.id integer Always present
attribute.store_seq_id integer Selectable in the Payload builder
attribute.name string Selectable in the Payload builder
attribute.slug string Selectable in the Payload builder
attribute.description string Selectable in the Payload builder
attribute.sub_type string Selectable in the Payload builder
attribute.sort_order integer Selectable in the Payload builder
attribute.in_use boolean Selectable in the Payload builder
attribute.variant_usage_count integer Selectable in the Payload builder
attribute.created_at string Selectable in the Payload builder
attribute.updated_at string Selectable in the Payload builder
attribute.options[*].id integer Always present
attribute.options[*].store_seq_id integer Selectable in the Payload builder
attribute.options[*].attribute_id integer Selectable in the Payload builder
attribute.options[*].label string Selectable in the Payload builder
attribute.options[*].value string Selectable in the Payload builder
attribute.options[*].color string Selectable in the Payload builder
attribute.options[*].file_id string Selectable in the Payload builder
attribute.options[*].file_url string Selectable in the Payload builder
attribute.options[*].file_cdn_url string Selectable in the Payload builder
attribute.options[*].sort_order integer Selectable in the Payload builder
attribute.options[*].created_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Attribute translations deleted

EVENT attributes/translations/delete App scope: read_products Staff permission: products:write

Fired when an attribute's translations are cleared for one or more fields in a locale.

Payload fields

Field Type Description
attribute.id integer Always present
attribute.store_seq_id integer Selectable in the Payload builder
attribute.name string Selectable in the Payload builder
attribute.slug string Selectable in the Payload builder
attribute.description string Selectable in the Payload builder
attribute.sub_type string Selectable in the Payload builder
attribute.sort_order integer Selectable in the Payload builder
attribute.in_use boolean Selectable in the Payload builder
attribute.variant_usage_count integer Selectable in the Payload builder
attribute.created_at string Selectable in the Payload builder
attribute.updated_at string Selectable in the Payload builder
attribute.options[*].id integer Always present
attribute.options[*].store_seq_id integer Selectable in the Payload builder
attribute.options[*].attribute_id integer Selectable in the Payload builder
attribute.options[*].label string Selectable in the Payload builder
attribute.options[*].value string Selectable in the Payload builder
attribute.options[*].color string Selectable in the Payload builder
attribute.options[*].file_id string Selectable in the Payload builder
attribute.options[*].file_url string Selectable in the Payload builder
attribute.options[*].file_cdn_url string Selectable in the Payload builder
attribute.options[*].sort_order integer Selectable in the Payload builder
attribute.options[*].created_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.name string Selectable in the Payload builder
translation.slug string Selectable in the Payload builder
translation.description string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Attribute option translations updated

EVENT attribute_options/translations/update App scope: read_products Staff permission: products:write

Fired when an attribute option's translations are added or updated for a locale. Payload carries only the fields that changed.

Payload fields

Field Type Description
option.id integer Always present
option.store_seq_id integer Selectable in the Payload builder
option.attribute_id integer Selectable in the Payload builder
option.label string Selectable in the Payload builder
option.value string Selectable in the Payload builder
option.color string Selectable in the Payload builder
option.file_id string Selectable in the Payload builder
option.file_url string Selectable in the Payload builder
option.file_cdn_url string Selectable in the Payload builder
option.sort_order integer Selectable in the Payload builder
option.created_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.label string Selectable in the Payload builder
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder

Attribute option translations deleted

EVENT attribute_options/translations/delete App scope: read_products Staff permission: products:write

Fired when an attribute option's translations are cleared for one or more fields in a locale.

Payload fields

Field Type Description
option.id integer Always present
option.store_seq_id integer Selectable in the Payload builder
option.attribute_id integer Selectable in the Payload builder
option.label string Selectable in the Payload builder
option.value string Selectable in the Payload builder
option.color string Selectable in the Payload builder
option.file_id string Selectable in the Payload builder
option.file_url string Selectable in the Payload builder
option.file_cdn_url string Selectable in the Payload builder
option.sort_order integer Selectable in the Payload builder
option.created_at string Selectable in the Payload builder
locale string Selectable in the Payload builder
translation.label string Selectable in the Payload builder
translation.value string Selectable in the Payload builder
updated_at string Selectable in the Payload builder