> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# SetItemSeoTags

# Package: seo

# Namespace: ItemSeoTagsService

# Method link: https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/set-item-seo-tags.md

## Permission Scopes:
Manage SEO Settings: SCOPE.PROMOTE.MANAGE-SEO

## Introduction

Sets the SEO tags of a single item.

List the fields to change in `fieldMask`.

Setting `tags` replaces the item's tags in full, so send the complete set you want the
item to have. To return the item to the tags it inherits, call [Reset Item SEO Tags To
Default](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/reset-item-seo-tags-to-default.md)
rather than sending an empty list.

Whether the change reaches the live site immediately depends on the item type. Items
that keep no separate draft, such as store products, are always live. Static pages
keep a draft and a published version, so set `publish` to `true` to update the
published one. A blog post that's already published stays published. Setting `publish`
for an item type that keeps no draft has no effect.

For a static page, `publish: true` updates only the published revision — it does not
also update the saved one. [Get Item SEO
Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/get-item-seo-tags.md)
and List Item SEO Tags always read the saved revision, so they keep returning the values
from before this call until the same changed fields are also set without `publish`.
This method's own response isn't a read of the published revision either, so don't treat
it as confirmation that the live page changed — check the live page to confirm that.

Tags are validated before anything is saved, so a request that contains an invalid tag
changes nothing.

To set the tags of many items in one call, call [Bulk Set Item SEO
Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/bulk-set-item-seo-tags.md).

---

## REST API

### Schema

```
 Method: setItemSeoTags
 Description: Sets the SEO tags of a single item.  List the fields to change in `fieldMask`.  Setting `tags` replaces the item's tags in full, so send the complete set you want the item to have. To return the item to the tags it inherits, call [Reset Item SEO Tags To Default](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/reset-item-seo-tags-to-default.md) rather than sending an empty list.  Whether the change reaches the live site immediately depends on the item type. Items that keep no separate draft, such as store products, are always live. Static pages keep a draft and a published version, so set `publish` to `true` to update the published one. A blog post that's already published stays published. Setting `publish` for an item type that keeps no draft has no effect.  For a static page, `publish: true` updates only the published revision — it does not also update the saved one. [Get Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/get-item-seo-tags.md) and List Item SEO Tags always read the saved revision, so they keep returning the values from before this call until the same changed fields are also set without `publish`. This method's own response isn't a read of the published revision either, so don't treat it as confirmation that the live page changed — check the live page to confirm that.  Tags are validated before anything is saved, so a request that contains an invalid tag changes nothing.  To set the tags of many items in one call, call [Bulk Set Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/bulk-set-item-seo-tags.md).
 URL: https://www.wixapis.com/promote/seo/v1/item-seo-tags/{itemType}/{itemId}
 Method: PATCH
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  itemSeoTags, fieldMask
 Method parameters: 
   param name: fieldMask | type: fieldMask | description: Fields to update.  Supported properties: `tags`, `focusKeywords` | required: true 
   param name: itemSeoTags | type: ItemSeoTags | description: The SEO tags of a single item on a site, such as a page, a blog post, a store product, or a bookings service.  An item is addressed by an item type and an item GUID together. Item SEO tags always exist for a valid item: when the item has no tags of its own, it inherits them, and `resolvedTags` reports the tags the item is expected to render with. | required: true 
        - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
           - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
           - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
           - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
           - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
           - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
           - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
        - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
           - name: term | type: string | description: Keyword value.  
           - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
           - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
   param name: publish | type: publish | description: Whether to publish the change to the live site, for item types that keep a separate draft, such as static pages.  Has no effect for item types that are always live, and isn't an error for them.  Default: `false`  
 Return type: SetItemSeoTagsResponse
  - name: itemSeoTags | type: ItemSeoTags | description: Updated item SEO tags.  
     - name: id | type: string | description: Item SEO tags GUID, in the format `{itemType}:{itemId}`.  | read-only: true | validation: maxLength 400
     - name: itemType | type: string | description: Type of item the tags belong to. For example, `STATIC_PAGE`, `BLOG_POST`, or `STORES_PRODUCT`.  For an item on a page built from a Wix Data collection, the item type takes the form `WIX_DATA_PAGE_ITEM-{pageId}`.  | read-only: true | validation: maxLength 100
     - name: itemId | type: string | description: GUID of the item the tags belong to. For a static page, this is the page GUID.  | read-only: true | validation: maxLength 200
     - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
        - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
        - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
        - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
        - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
        - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
        - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
     - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
        - name: term | type: string | description: Keyword value.  
        - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
        - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
     - name: hasOverride | type: boolean | description: Whether the item has tags of its own, as opposed to inheriting them.  `false` doesn't mean the item shows Wix's built-in tags: it may inherit from the pattern for its item type, from the site's tags, or from the page that hosts it. See `resolvedTags` for the tags the item is expected to render with.  | read-only: true 
     - name: resolvedTags | type: array<ResolvedTag> | description: The tags the item is expected to render with, each marked with where it came from.  Derived by combining every source Wix manages, so it reflects inherited tags as well as the item's own. Tags that site code, apps, or page components add while the page renders aren't included, so this isn't a literal copy of the page's rendered head.  If a tag's source can't be determined, the tag is still exact but its `source` is `TAG_SOURCE_UNSPECIFIED`.  | read-only: true | validation: maxItems 500
        - name: tag | type: Tag | description: Resolved SEO tag.  
        - name: source | type: TagSource | description: Where the tag came from.  
             - enum:
             -     TAG_SOURCE_UNSPECIFIED: Unknown source.
             -     TAG_SOURCE_SITE: The site's own site-wide tags.
             -     TAG_SOURCE_DEFAULT_PATTERN: The pattern Wix provides for the page type.
             -     TAG_SOURCE_USER_PATTERN: The pattern the Wix user customized for the page type.
             -     TAG_SOURCE_HOST_PAGE: The tags of the page the item is displayed on.
             -     TAG_SOURCE_ITEM: The item's own tags, which the Wix user set for that item alone.
     - name: hostPageId | type: string | description: GUID of the page that displays the item, for items shown on a shared page, such as a blog post or a store product.  Informational: the hosting page can't be addressed through this API.  | read-only: true | validation: maxLength 200
     - name: publishStatus | type: PublishStatus | description: Whether the item's SEO tags are live on the published site.  | read-only: true 
         - enum:
         -     PUBLISH_STATUS_UNSPECIFIED: Unknown publish status. Returned when the item type doesn't report one.
         -     PUBLISH_STATUS_PUBLISHED: The item's SEO tags are live on the published site. Item types that keep no separate draft, such as store products, events, and portfolio collections, always report this status.
         -     PUBLISH_STATUS_NOT_PUBLISHED: The item has never been published, so its SEO tags exist only as a draft and aren't on the live site. For example, a blog post that's still a draft.
     - name: language | type: string | description: Language the tags apply to, as an IETF BCP 47 language tag. For example, `en-US` for U.S. English.  Tags can currently be written only for the site's primary language, so leave this unset on a write. Sending a language fails with `LANGUAGE_NOT_SUPPORTED`.  | read-only: true | validation: maxLength 100
     - name: origin | type: Origin | description: What made the most recent change to the item's tags, for example a user or the site migration flow. Derived from the caller, not from the request.  `ORIGIN_UNSPECIFIED` when the caller isn't one Wix identifies as a specific origin. Origin isn't stored with the tags either, so Get Item SEO Tags and List Item SEO Tags always return `ORIGIN_UNSPECIFIED`.  | read-only: true 
         - enum:
         -     ORIGIN_UNSPECIFIED: Unknown origin. Returned by read methods, because origin isn't stored alongside the data it describes.
         -     ORIGIN_USER: A user, working in the dashboard or editor, or calling the API on their own behalf.
         -     ORIGIN_MIGRATION: The flow that imports an existing site into Wix.
         -     ORIGIN_AI: An AI agent or an automated suggestion flow.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_FIELD_MASK | Description: The `fieldMask` is empty, or names a field that doesn't exist or can't be changed.
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_TAGS | Description: A tag isn't valid for an item. For example, its value isn't valid for that tag, it uses an unsupported `robots` directive, or the item's tags exceed the size limit.
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_ITEM_TYPE | Description: Wix doesn't support the specified `itemType`. The error message lists the item types that are supported.
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ITEM_NOT_FOUND | Description: Couldn't find the item.


```

### Examples

### Set the title and description of one page
```curl
curl -X PATCH \
'https://www.wixapis.com/seo-metatags-server/v1/item-seo-tags/STATIC_PAGE/c1dmp' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "itemSeoTags": {
    "tags": [
      {
        "type": "title",
        "children": "Winter collection | Ceramics studio"
      },
      {
        "type": "meta",
        "props": {
          "name": "description",
          "content": "Stoneware mugs and bowls, thrown and glazed by hand."
        }
      }
    ]
  },
  "fieldMask": "tags"
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.seo.itemSeoTags.setItemSeoTags(identifiers, itemSeoTags, options)
 Description: Sets the SEO tags of a single item.  List the fields to change in `fieldMask`.  Setting `tags` replaces the item's tags in full, so send the complete set you want the item to have. To return the item to the tags it inherits, call [Reset Item SEO Tags To Default](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/reset-item-seo-tags-to-default.md) rather than sending an empty list.  Whether the change reaches the live site immediately depends on the item type. Items that keep no separate draft, such as store products, are always live. Static pages keep a draft and a published version, so set `publish` to `true` to update the published one. A blog post that's already published stays published. Setting `publish` for an item type that keeps no draft has no effect.  For a static page, `publish: true` updates only the published revision — it does not also update the saved one. [Get Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/get-item-seo-tags.md) and List Item SEO Tags always read the saved revision, so they keep returning the values from before this call until the same changed fields are also set without `publish`. This method's own response isn't a read of the published revision either, so don't treat it as confirmation that the live page changed — check the live page to confirm that.  Tags are validated before anything is saved, so a request that contains an invalid tag changes nothing.  To set the tags of many items in one call, call [Bulk Set Item SEO Tags](https://dev.wix.com/docs/api-reference/business-management/seo/item-seo-tags-v1/bulk-set-item-seo-tags.md).
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  identifiers.itemType, identifiers.itemId, itemSeoTags, options.fieldMask, identifiers, options
 Method parameters: 
   param name: identifiers | type: SetItemSeoTagsIdentifiers  none | required: true 
        - name: itemType | type: string | description: Type of item to set tags for. For example, `STATIC_PAGE` or `STORES_PRODUCT`. | required: true | validation: maxLength 100
        - name: itemId | type: string | description: GUID of the item to set tags for. | required: true | validation: maxLength 200
   param name: itemSeoTags | type: SetItemSeoTags | description: The SEO tags of a single item on a site, such as a page, a blog post, a store product, or a bookings service.  An item is addressed by an item type and an item GUID together. Item SEO tags always exist for a valid item: when the item has no tags of its own, it inherits them, and `resolvedTags` reports the tags the item is expected to render with. | required: true 
        - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
           - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
           - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
           - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
           - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
           - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
           - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
        - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
           - name: term | type: string | description: Keyword value.  
           - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
           - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
   param name: options | type: SetItemSeoTagsOptions  none | required: true 
        - name: fieldMask | type: array<string> | description: Fields to update.  Supported properties: `tags`, `focusKeywords` | required: true 
        - name: publish | type: boolean | description: Whether to publish the change to the live site, for item types that keep a separate draft, such as static pages.  Has no effect for item types that are always live, and isn't an error for them.  Default: `false`  
 Return type: PROMISE<SetItemSeoTagsResponse>
  - name: itemSeoTags | type: ItemSeoTags | description: Updated item SEO tags.  
     - name: _id | type: string | description: Item SEO tags GUID, in the format `{itemType}:{itemId}`.  | read-only: true | validation: maxLength 400
     - name: itemType | type: string | description: Type of item the tags belong to. For example, `STATIC_PAGE`, `BLOG_POST`, or `STORES_PRODUCT`.  For an item on a page built from a Wix Data collection, the item type takes the form `WIX_DATA_PAGE_ITEM-{pageId}`.  | read-only: true | validation: maxLength 100
     - name: itemId | type: string | description: GUID of the item the tags belong to. For a static page, this is the page GUID.  | read-only: true | validation: maxLength 200
     - name: tags | type: array<Tag> | description: Tags set for this item alone, which take precedence over the tags it would otherwise inherit.  Empty when the item has no tags of its own.  | validation: maxItems 100
        - name: type | type: string | description: SEO tag type.   Supported values: `title`, `meta`, `script`, `link`.  
        - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`.  
        - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`.  
        - name: children | type: string | description: SEO tag inner content. For example, `<title> inner content </title>`.  
        - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) — i.e. an entry from the site's Advanced/Custom Tags list.  This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed default/pattern — standard tags always resolve with `custom: false`, even when their content comes from a page's manually saved SEO title/description override. Don't use this field to verify whether a live page reflects a manual per-page SEO edit.  Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the response entirely — there, `false` means this API could not tell, not that no custom tag exists. Pass `seoData` explicitly to resolve against a known set of tags.  
        - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.  
     - name: focusKeywords | type: array<Keyword> | description: Keywords the item's content is intended to rank for. Used by Wix's SEO tools to assess the item's content; they aren't rendered on the page.  Mark the item's main keyword with `isMain` rather than relying on its position in the list.  | validation: maxItems 5
        - name: term | type: string | description: Keyword value.  
        - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword.  
        - name: origin | type: string | description: The source that added the keyword terms to the SEO settings.  | validation: maxLength 1000
     - name: hasOverride | type: boolean | description: Whether the item has tags of its own, as opposed to inheriting them.  `false` doesn't mean the item shows Wix's built-in tags: it may inherit from the pattern for its item type, from the site's tags, or from the page that hosts it. See `resolvedTags` for the tags the item is expected to render with.  | read-only: true 
     - name: resolvedTags | type: array<ResolvedTag> | description: The tags the item is expected to render with, each marked with where it came from.  Derived by combining every source Wix manages, so it reflects inherited tags as well as the item's own. Tags that site code, apps, or page components add while the page renders aren't included, so this isn't a literal copy of the page's rendered head.  If a tag's source can't be determined, the tag is still exact but its `source` is `TAG_SOURCE_UNSPECIFIED`.  | read-only: true | validation: maxItems 500
        - name: tag | type: Tag | description: Resolved SEO tag.  
        - name: source | type: TagSource | description: Where the tag came from.  
             - enum:
             -     TAG_SOURCE_UNSPECIFIED: Unknown source.
             -     TAG_SOURCE_SITE: The site's own site-wide tags.
             -     TAG_SOURCE_DEFAULT_PATTERN: The pattern Wix provides for the page type.
             -     TAG_SOURCE_USER_PATTERN: The pattern the Wix user customized for the page type.
             -     TAG_SOURCE_HOST_PAGE: The tags of the page the item is displayed on.
             -     TAG_SOURCE_ITEM: The item's own tags, which the Wix user set for that item alone.
     - name: hostPageId | type: string | description: GUID of the page that displays the item, for items shown on a shared page, such as a blog post or a store product.  Informational: the hosting page can't be addressed through this API.  | read-only: true | validation: maxLength 200
     - name: publishStatus | type: PublishStatus | description: Whether the item's SEO tags are live on the published site.  | read-only: true 
         - enum:
         -     PUBLISH_STATUS_UNSPECIFIED: Unknown publish status. Returned when the item type doesn't report one.
         -     PUBLISH_STATUS_PUBLISHED: The item's SEO tags are live on the published site. Item types that keep no separate draft, such as store products, events, and portfolio collections, always report this status.
         -     PUBLISH_STATUS_NOT_PUBLISHED: The item has never been published, so its SEO tags exist only as a draft and aren't on the live site. For example, a blog post that's still a draft.
     - name: language | type: string | description: Language the tags apply to, as an IETF BCP 47 language tag. For example, `en-US` for U.S. English.  Tags can currently be written only for the site's primary language, so leave this unset on a write. Sending a language fails with `LANGUAGE_NOT_SUPPORTED`.  | read-only: true | validation: maxLength 100
     - name: origin | type: Origin | description: What made the most recent change to the item's tags, for example a user or the site migration flow. Derived from the caller, not from the request.  `ORIGIN_UNSPECIFIED` when the caller isn't one Wix identifies as a specific origin. Origin isn't stored with the tags either, so Get Item SEO Tags and List Item SEO Tags always return `ORIGIN_UNSPECIFIED`.  | read-only: true 
         - enum:
         -     ORIGIN_UNSPECIFIED: Unknown origin. Returned by read methods, because origin isn't stored alongside the data it describes.
         -     ORIGIN_USER: A user, working in the dashboard or editor, or calling the API on their own behalf.
         -     ORIGIN_MIGRATION: The flow that imports an existing site into Wix.
         -     ORIGIN_AI: An AI agent or an automated suggestion flow.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_FIELD_MASK | Description: The `fieldMask` is empty, or names a field that doesn't exist or can't be changed.
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_TAGS | Description: A tag isn't valid for an item. For example, its value isn't valid for that tag, it uses an unsupported `robots` directive, or the item's tags exceed the size limit.
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: UNSUPPORTED_ITEM_TYPE | Description: Wix doesn't support the specified `itemType`. The error message lists the item types that are supported.
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ITEM_NOT_FOUND | Description: Couldn't find the item.


```

### Examples

### Set the title and description of one page
```javascript
import { itemSeoTags } from "@wix/seo";

async function setItemSeoTags() {
  const response = await itemSeoTags.setItemSeoTags(
    { itemType: "STATIC_PAGE", itemId: "c1dmp" },
    {
      tags: [
        { type: "title", children: "Winter collection | Ceramics studio" },
        {
          type: "meta",
          props: {
            name: "description",
            content: "Stoneware mugs and bowls, thrown and glazed by hand.",
          },
        },
      ],
    },
    { fieldMask: ["tags"] },
  );
  return response;
}

/* Promise resolves to:
 * {
 *   "itemSeoTags": {
 *     "_id": "STATIC_PAGE:c1dmp",
 *     "itemType": "STATIC_PAGE",
 *     "itemId": "c1dmp",
 *     "tags": [
 *       { "type": "title", "children": "Winter collection | Ceramics studio" },
 *       {
 *         "type": "meta",
 *         "props": {
 *           "name": "description",
 *           "content": "Stoneware mugs and bowls, thrown and glazed by hand."
 *         }
 *       }
 *     ],
 *     "hasOverride": true,
 *     "origin": "ORIGIN_UNSPECIFIED"
 *   }
 * }
 */

```

### setItemSeoTags (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { itemSeoTags } from '@wix/seo';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { itemSeoTags },
  // Include the auth strategy and host as relevant
});


async function setItemSeoTags(identifiers,itemSeoTags,options) {
  const response = await myWixClient.itemSeoTags.setItemSeoTags(identifiers,itemSeoTags,options);
};
```

---