> 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

# PublishMultiStoryDraft

# Package: socialMedia

# Namespace: PublicationService

# Method link: https://dev.wix.com/docs/api-reference/business-management/marketing/social-media/item-v1/publish-multi-story-draft.md

## Permission Scopes:
Manage Social Posts: SCOPE.PROMOTE.MANAGE-SOCIAL-POSTS

## Introduction

Publishes a multi-story draft as a sequence of single-media story items.

The draft's media list is split into individual story items that are published sequentially
in media order, stopping on the first failure. Each story item gets a derived `referenceId`
of `{draftReferenceId}:story:{index}` (the draft `id` is used when the draft has no `referenceId`).
Story items already published by a previous call are skipped, so the method can be safely retried
after a partial failure. The draft is deleted only after all story items are published.
To schedule the story sequence, set `schedulingInfo.scheduledDate`; otherwise it's published immediately.

---

## REST API

### Schema

```
 Method: publishMultiStoryDraft
 Description: Publishes a multi-story draft as a sequence of single-media story items.  The draft's media list is split into individual story items that are published sequentially in media order, stopping on the first failure. Each story item gets a derived `referenceId` of `{draftReferenceId}:story:{index}` (the draft `id` is used when the draft has no `referenceId`). Story items already published by a previous call are skipped, so the method can be safely retried after a partial failure. The draft is deleted only after all story items are published. To schedule the story sequence, set `schedulingInfo.scheduledDate`; otherwise it's published immediately.
 URL: https://www.wixapis.com/social-publisher/v1/publish-multi-story-draft
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  id
 Method parameters: 
   param name: id | type: id | description: GUID of the multi-story draft to publish. | required: true | validation: format GUID
   param name: schedulingInfo | type: SchedulingInfo    
        - name: scheduledDate | type: string | description: Date and time the item is scheduled to be published.  | validation: format date-time
 Return type: PublishMultiStoryDraftResponse
  - name: results | type: array<BulkItemsResult> | description: Results, one per story item handled in this call, in story order. Story items already published by a previous call aren't included.  
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual item's publish result.  
        - name: id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item).  
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  
        - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: Item | description: Published item. Returned only when `returnEntity` is `true` in the request.  
        - ONE-OF: 
           - name: instagramPost | type: InstagramPost | description: Instagram post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
                    - name: media | type: array<Media> | description: List of media items.  
                       - name: type | type: MediaType | description: Media type.  
                                 - enum: IMAGE, VIDEO
                       - name: url | type: string | description: Media URL.  | validation: format WEB_URL
                       - name: fileId | type: string | description: Media Manager file GUID backing the media. Available only when the media is stored in the Media Manager.  | validation: maxLength 1000
              - name: caption | type: string | description: Caption for the post. Can include hashtags (for example, `#crazywildebeest`) and mentions of Instagram users (for example, `@natgeo`). Mentioned users are notified when the post is published. Supports up to 30 hashtags and 20 mentions.  | validation: maxLength 2200
              - name: postUrl | type: string | description: The post URL on Instagram.  | read-only: true 
              - name: insights | type: InstagramInsights | description: Insights from Instagram.  | read-only: true 
                 - name: likes | type: integer | description: Number of likes.  
                 - name: engagement | type: integer | description: Number of engagements.  
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: plays | type: integer | description: Number of plays.  
                 - name: reach | type: integer | description: Number of accounts reached.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: saved | type: integer | description: Number of saves.  
                 - name: totalInteractions | type: integer | description: Total number of interactions.  
           - name: instagramStory | type: InstagramStory | description: Instagram story content.  
              - name: storyUrl | type: string | description: The story URL on Instagram.  | read-only: true | validation: format WEB_URL
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: InstagramStoryInsights | description: insights data from Instagram.  | read-only: true 
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: reach | type: integer | description: Number of accounts reached.  
                 - name: replies | type: integer | description: Number of replies.  
           - name: facebookPost | type: FacebookPost | description: Facebook post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: link | type: string | description: The link URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: pageId | type: string | description: The page GUID to publish the post to.  
              - name: caption | type: string | description: Caption for the post.  
              - name: postUrl | type: string | description: The post URL on Facebook.  | read-only: true 
              - name: linkMetadata | type: LinkMetadata | description: Link preview metadata. Available only when the post contains a link.  
                 - name: thumbnailUrl | type: string | description: Thumbnail URL for the link preview.  
                 - name: title | type: string | description: Title for the link preview.  
                 - name: description | type: string | description: Description for the link preview.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
                 - name: impressions | type: FacebookImpressions | description: Impression counts.  
                    - name: unique | type: integer | description: Number of unique impressions.  
                    - name: total | type: integer | description: Total number of impressions.  
                 - name: interactions | type: FacebookInteractions | description: Interaction counts.  
                    - name: unique | type: integer | description: Number of unique interactions.  
                    - name: total | type: integer | description: Total number of interactions.  
                 - name: reactions | type: FacebookReactions | description: Reaction counts.  
                    - name: like | type: integer | description: Number of "like" reactions.  
                    - name: love | type: integer | description: Number of "love" reactions.  
                    - name: wow | type: integer | description: Number of "wow" reactions.  
                    - name: haha | type: integer | description: Number of "haha" reactions.  
                    - name: sad | type: integer | description: Number of "sad" reactions.  
                    - name: anger | type: integer | description: Number of "angry" reactions.  
                 - name: activity | type: FacebokActivity | description: Activity counts.  
                    - name: share | type: integer | description: Number of shares.  
                    - name: like | type: integer | description: Number of likes.  
                    - name: comment | type: integer | description: Number of comments.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: facebookReel | type: FacebookReel | description: Facebook reel content.  
              - name: pageId | type: string | description: The page GUID to publish the reel to.  
              - name: videoUrl | type: string | description: The video URL.  
              - name: description | type: string | description: A description for the reel.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: facebookStory | type: FacebookStory | description: Facebook story content.  
              - name: pageId | type: string | description: The page GUID to publish the story to.  | validation: maxLength 1024
              - name: storyUrl | type: string | description: The story URL on Facebook.  | read-only: true | validation: format WEB_URL
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
           - name: youtubeVideo | type: YouTubeVideo | description: YouTube video content.  
              - name: channelId | type: string | description: The channel GUID to publish the video to.  
              - name: videoUrl | type: string | description: The video URL.  
              - name: title | type: string | description: A title for the video.  
              - name: description | type: string | description: A description for the video.  
              - name: categoryId | type: string | description: A category for the video.  
              - name: notifySubscribers | type: boolean | description: Whether to notify channel subscribers when the video is published.  
              - name: insights | type: YoutubeInsights | description: Insights data from YouTube.  | read-only: true 
                 - name: views | type: integer | description: Number of views.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: dislikes | type: integer | description: Number of dislikes.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: youtubeShort | type: YouTubeShort | description: YouTube short content.  
              - name: channelId | type: string | description: The channel GUID to publish the short to.  
              - name: videoUrl | type: string | description: The short URL.  
              - name: title | type: string | description: A title for the short.  
              - name: description | type: string | description: A description for the short.  
              - name: categoryId | type: string | description: A category for the short.  
              - name: notifySubscribers | type: boolean | description: Whether to notify channel subscribers when the short is published.  
              - name: insights | type: YoutubeInsights | description: Insights data from YouTube.  | read-only: true 
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: linkedinPost | type: LinkedinPost | description: LinkedIn post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: link | type: string | description: The link URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: authorId | type: string | description: Author GUID of the post. Can be an organization page or a personal feed.  
              - name: caption | type: string | description: Caption for the post.  
              - name: linkMetadata | type: LinkMetadata | description: Link preview metadata. Available only when the post contains a link.  
              - name: insights | type: LinkedinPostInsights | description: Insights from LinkedIn.  | read-only: true 
                 - name: uniqueImpressions | type: integer | description: Number of unique impressions.  
                 - name: impression | type: integer | description: Total number of impressions.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: engagement | type: float | description: Engagement rate.  
                 - name: clicks | type: integer | description: Number of clicks.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: pinterestPost | type: PinterestPost | description: Pinterest post content.  
              - name: boardId | type: string | description: The board GUID to publish the post to.  | validation: maxLength 128
              - name: title | type: string | description: The title of the post.  | validation: maxLength 100
              - name: description | type: string | description: The description of the post.  | validation: maxLength 800
              - name: link | type: string | description: The link to include in the post.  | validation: maxLength 2048
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: PinterestInsights | description: Insights from Pinterest.  | read-only: true 
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: clicks | type: integer | description: Number of clicks.  
                 - name: saves | type: integer | description: Number of saves.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: reactions | type: integer | description: Number of reactions.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: gbpPost | type: GbpPost | description: Google Business Profile post content.  
              - name: locationId | type: string | description: The location GUID to publish the post to.  | validation: maxLength 128
              - name: locationAccountId | type: string | description: Account (group) GUID of the location.  | validation: maxLength 128
              - name: description | type: string | description: The description of the post.  | validation: maxLength 1500
              - name: callToAction | type: GbpPostCallToAction | description: Call to action type and URL to include in the post.  
                 - name: actionType | type: GbpPostCallToActionType | description: Type of the call to action.  
                         - enum: BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP
                 - name: url | type: string | description: URL of the call to action.  | validation: maxLength 2048
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: GbpInsights | description: Insights from Google Business Profile.  | read-only: true 
                 - name: shares | type: integer | description: Number of shares. Google Business Profile post insights aren't currently available, so this returns `-1`.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: tiktokVideo | type: TikTokVideo | description: TikTok video content.  
              - name: accountId | type: string | description: The account GUID to publish the video to.  | validation: maxLength 128
              - name: privacyLevel | type: TikTokPrivacyLevel | description: Privacy level for the video.  
                     - enum: PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY
              - name: description | type: string | description: A description for the video.  | validation: maxLength 2200
              - name: disableComment | type: boolean | description: Whether comments are disabled for the video.  
              - name: disableDuet | type: boolean | description: Whether duets are disabled for the video.  
              - name: disableStitch | type: boolean | description: Whether stitches are disabled for the video.  
              - name: brandContentToggle | type: boolean | description: Whether the content is a paid partnership promoting a third-party business.  
              - name: brandOrganicToggle | type: boolean | description: Whether the content promotes the creator's own business.  
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: TikTokInsights | description: Insights from TikTok.  | read-only: true 
                 - name: views | type: integer | description: Number of views.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: tiktokPhoto | type: TikTokPhoto | description: TikTok photo content.  
              - name: accountId | type: string | description: The account GUID to publish the photo to.  | validation: maxLength 128
              - name: privacyLevel | type: TikTokPrivacyLevel | description: Privacy level for the photo.  
              - name: title | type: string | description: A title for the photo.  | validation: maxLength 90
              - name: description | type: string | description: A description for the photo.  | validation: maxLength 4000
              - name: disableComment | type: boolean | description: Whether comments are disabled for the photo.  
              - name: autoAddMusic | type: boolean | description: Whether to automatically add music to the photo.  
              - name: brandContentToggle | type: boolean | description: Whether the content is a paid partnership promoting a third-party business.  
              - name: brandOrganicToggle | type: boolean | description: Whether the content promotes the creator's own business.  
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: TikTokInsights | description: Insights from TikTok.  | read-only: true 
        - name: id | type: string | description: Item GUID.  | read-only: true | validation: format GUID
        - name: channel | type: Channel | description: Social channel the item is published to, and the account within that channel.  
           - name: name | type: ChannelName | description: Social channel the item is published to.  
                 - enum: INSTAGRAM, FACEBOOK, YOUTUBE, LINKEDIN, TWITTER, PINTEREST, GBP, TIKTOK
           - name: accountId | type: string | description: GUID of the connected account the item is published to.  
           - name: accountName | type: string | description: Display name of the connected account the item is published to.  | read-only: true 
           - name: externalItemId | type: string | description: GUID of the post on the social channel. Returned after the item is published.  | read-only: true 
           - name: externalItemUrl | type: string | description: URL of the post on the social channel. Returned after the item is published.  | read-only: true | validation: format WEB_URL
           - name: publishingTarget | type: PublishingTarget | description: Specific destination within the account, such as a Facebook page or a Pinterest board.  
              - name: id | type: string | description: GUID of the publishing target.  | validation: maxLength 128
              - name: displayName | type: string | description: Display name of the publishing target.  | validation: maxLength 2000
              - name: pictureUrl | type: string | description: URL of the publishing target's picture.  | validation: format WEB_URL
        - name: type | type: ItemType | description: Item format. The `type` and the content set in `data` must match a combination supported by the item's `channel.name`:  - Instagram: `POST` with `instagramPost`, or `STORY` with `instagramStory`. - Facebook: `POST` with `facebookPost`, `REEL` with `facebookReel`, or `STORY` with `facebookStory`. - YouTube: `VIDEO` with `youtubeVideo`, or `SHORT` with `youtubeShort`. - LinkedIn: `POST` with `linkedinPost`. - X (Twitter): `POST` with `twitterPost`. Deprecated: No longer functional as of July 31, 2026. - Pinterest: `POST` with `pinterestPost`. - Google Business Profile: `POST` with `gbpPost`. - TikTok: `POST` with `tiktokPhoto`, or `VIDEO` with `tiktokVideo`.  
             - enum:
             -     POST: A standard post.
             -     REEL: A short-form vertical video reel.
             -     VIDEO: A video.
             -     SHORT: A short-form vertical video.
             -     STORY: A story that's available for a limited time.
        - name: status | type: Status | description: Current status of the item in its lifecycle.  | read-only: true 
             - enum:
             -     PUBLISHED: Published to the social channel.
             -     SCHEDULED: Scheduled to be published at a future date.
             -     CANCELED: Scheduling was canceled before the item was published.
             -     FAILED: Publishing failed.
             -     DELETED: Deleted.
             -     PROCESSING: Publishing is in progress.
             -     DRAFT: Saved as a draft, not yet published.
             -     IN_QUEUE: Queued for publishing as part of a bulk operation.
        - name: publishedDate | type: string | description: Date and time the item was published. Returned only after the item is published.  | read-only: true | validation: format date-time
        - name: schedulingInfo | type: SchedulingInfo | description: Scheduling info. Set to schedule the item for a future date instead of publishing it immediately.  
           - name: scheduledDate | type: string | description: Date and time the item is scheduled to be published.  | validation: format date-time
           - name: schedulingTimestamp | type: string | description: Date and time the item was scheduled.  | read-only: true | validation: format date-time
        - name: consumerInfo | type: ConsumerInfo | description: Identifies what created the item.  
           - name: name | type: string | description: Stable name identifying what created the item, for example `social-marketing` for the Social Media Marketing dashboard. Set on creation only. Update Item ignores it.  
        - name: referenceId | type: string | description: Caller-defined reference that uniquely identifies the item. Can be used to prevent duplicate publishing: an attempt to publish a second item with the same `referenceId` fails. Can also be used as a UTM campaign GUID.  
        - name: siteAnalytics | type: SiteAnalytics | description: Aggregated analytics for the site, attributed to traffic from this post.  
           - name: traffic | type: integer | description: Number of site sessions attributed to this post.  
           - name: pageView | type: integer | description: Number of page views attributed to this post.  
           - name: siteBounceRate | type: float | description: Site bounce rate attributed to this post.  
           - name: revenue | type: float | description: Revenue attributed to this post.  
           - name: conversionFunnel | type: ConversionFunnel | description: Conversion funnel data attributed to this post.  
              - name: cartViewsSessions | type: integer | description: Number of sessions that viewed the cart.  
              - name: checkOutSessions | type: integer | description: Number of sessions that reached checkout.  
              - name: storeOrdersSessions | type: integer | description: Number of sessions that placed a store order.  
              - name: bookingsConfirmed | type: integer | description: Number of confirmed bookings.  
           - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
        - name: insightsSummary | type: InsightsSummary | description: Summary of the post's performance on the social channel, such as impressions and interactions.  
           - name: impressions | type: integer | description: Number of unique impressions (reach).  
           - name: interactions | type: integer | description: Number of interactions, such as likes and comments.  
           - name: updatedDate | type: string | description: Date and time the insights were last updated.  | validation: format date-time
           - name: impressionsTotal | type: integer | description: Total number of impressions.  
        - name: draftInfo | type: DraftInfo | description: Creation and update dates, returned for draft items.  
           - name: createdDate | type: string | description: Date and time the draft was created.  | read-only: true | validation: format date-time
           - name: updatedDate | type: string | description: Date and time the draft was updated.  | read-only: true | validation: format date-time
        - name: suggested | type: boolean | description: Whether the item was generated as an AI suggestion.  
        - name: external | type: boolean | description: Whether the item is a post created natively on the social channel rather than published through Wix.  
        - name: publicationError | type: PublicationErrorDetails | description: Details of why the item failed to publish. Returned only when `status` is `FAILED`.  | read-only: true 
           - name: message | type: string | description: Error message shown when publishing fails.  | read-only: true | validation: maxLength 500
        - name: siteAssetRef | type: AssetReference | description: Reference to the site content the post promotes, such as a product, a blog post, or an event. Set per channel.  
           - name: siteAssetRefType | type: Type | description: Type of the site asset (for example, product or blog post). See `SiteAsset.Type` for the closed set of values.  
                 - enum:
                 -     BLOG_POST: A Wix Blog post.
                 -     EVENT: A Wix Events event.
                 -     STORES_PRODUCT: A Wix Stores product.
                 -     BOOKINGS_SERVICE: A Wix Bookings service.
                 -     STORES_COUPON: A Wix Stores coupon.
                 -     STORES_CATEGORY: A Wix Stores category.
           - name: id | type: string | description: GUID of the asset within its provider's data store.  | validation: maxLength 256
           - name: name | type: string | description: Display name of the asset (for example, the product title or blog post title), cached at post-creation time.  | validation: maxLength 3000
        - name: originItemId | type: string | description: GUID of the item this item was derived from, when publishing produced several items from one. Currently set only by `PublishMultiStoryDraft`, which splits a multi-media story draft into one published item per frame: every resulting item carries the originating draft's GUID here. Lets a consumer re-correlate the new items with whatever it had recorded against the original draft, which no longer exists after the split. Set by the publisher, never by the caller.  | read-only: true | validation: format GUID
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Bulk action metadata.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: NOT_MULTI_STORY_DRAFT | Description: The item isn't a story draft with more than one media item.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: INELIGIBLE_FOR_FEATURE | Description: The site's social media marketing plan doesn't permit this action, or its quota for the current period is exhausted.


```

### Examples

### Publish a multi-frame story draft
Split a story draft that holds several media items into one story item per frame, and publish them in media order. Setting `schedulingInfo.scheduledDate` schedules the sequence instead of publishing it immediately. The draft is deleted only after all its story items are published, so the call can be safely retried after a partial failure.

```curl
curl -X POST \
'https://www.wixapis.com/social-publisher/v1/publish-multi-story-draft' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "id": "8e2b7c94-0af1-4d35-b6e8-3c7f01d29b45"
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.promoteGrowthToolsPublisher.items.publishMultiStoryDraft(_id, options)
 Description: Publishes a multi-story draft as a sequence of single-media story items.  The draft's media list is split into individual story items that are published sequentially in media order, stopping on the first failure. Each story item gets a derived `referenceId` of `{draftReferenceId}:story:{index}` (the draft `id` is used when the draft has no `referenceId`). Story items already published by a previous call are skipped, so the method can be safely retried after a partial failure. The draft is deleted only after all story items are published. To schedule the story sequence, set `schedulingInfo.scheduledDate`; otherwise it's published immediately.
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  _id
 Method parameters: 
   param name: _id | type: string | description: GUID of the multi-story draft to publish. | required: true | validation: format GUID
   param name: options | type: PublishMultiStoryDraftOptions  none  
        - name: schedulingInfo | type: SchedulingInfo | description: Scheduling info applied to all story items. If set, the story items are scheduled instead of published immediately.  
           - name: scheduledDate | type: Date | description: Date and time the item is scheduled to be published.  
 Return type: PROMISE<PublishMultiStoryDraftResponse>
  - name: results | type: array<BulkItemsResult> | description: Results, one per story item handled in this call, in story order. Story items already published by a previous call aren't included.  
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual item's publish result.  
        - name: _id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item).  
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  
        - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: Item | description: Published item. Returned only when `returnEntity` is `true` in the request.  
        - ONE-OF: 
           - name: instagramPost | type: InstagramPost | description: Instagram post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
                    - name: media | type: array<Media> | description: List of media items.  
                       - name: type | type: MediaType | description: Media type.  
                                 - enum: IMAGE, VIDEO
                       - name: url | type: string | description: Media URL.  | validation: format WEB_URL
                       - name: fileId | type: string | description: Media Manager file GUID backing the media. Available only when the media is stored in the Media Manager.  | validation: maxLength 1000
              - name: caption | type: string | description: Caption for the post. Can include hashtags (for example, `#crazywildebeest`) and mentions of Instagram users (for example, `@natgeo`). Mentioned users are notified when the post is published. Supports up to 30 hashtags and 20 mentions.  | validation: maxLength 2200
              - name: postUrl | type: string | description: The post URL on Instagram.  | read-only: true 
              - name: insights | type: InstagramInsights | description: Insights from Instagram.  | read-only: true 
                 - name: likes | type: integer | description: Number of likes.  
                 - name: engagement | type: integer | description: Number of engagements.  
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: plays | type: integer | description: Number of plays.  
                 - name: reach | type: integer | description: Number of accounts reached.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: saved | type: integer | description: Number of saves.  
                 - name: totalInteractions | type: integer | description: Total number of interactions.  
           - name: instagramStory | type: InstagramStory | description: Instagram story content.  
              - name: storyUrl | type: string | description: The story URL on Instagram.  | read-only: true | validation: format WEB_URL
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: InstagramStoryInsights | description: insights data from Instagram.  | read-only: true 
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: reach | type: integer | description: Number of accounts reached.  
                 - name: replies | type: integer | description: Number of replies.  
           - name: facebookPost | type: FacebookPost | description: Facebook post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: link | type: string | description: The link URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: pageId | type: string | description: The page GUID to publish the post to.  
              - name: caption | type: string | description: Caption for the post.  
              - name: postUrl | type: string | description: The post URL on Facebook.  | read-only: true 
              - name: linkMetadata | type: LinkMetadata | description: Link preview metadata. Available only when the post contains a link.  
                 - name: thumbnailUrl | type: string | description: Thumbnail URL for the link preview.  
                 - name: title | type: string | description: Title for the link preview.  
                 - name: description | type: string | description: Description for the link preview.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
                 - name: impressions | type: FacebookImpressions | description: Impression counts.  
                    - name: unique | type: integer | description: Number of unique impressions.  
                    - name: total | type: integer | description: Total number of impressions.  
                 - name: interactions | type: FacebookInteractions | description: Interaction counts.  
                    - name: unique | type: integer | description: Number of unique interactions.  
                    - name: total | type: integer | description: Total number of interactions.  
                 - name: reactions | type: FacebookReactions | description: Reaction counts.  
                    - name: like | type: integer | description: Number of "like" reactions.  
                    - name: love | type: integer | description: Number of "love" reactions.  
                    - name: wow | type: integer | description: Number of "wow" reactions.  
                    - name: haha | type: integer | description: Number of "haha" reactions.  
                    - name: sad | type: integer | description: Number of "sad" reactions.  
                    - name: anger | type: integer | description: Number of "angry" reactions.  
                 - name: activity | type: FacebokActivity | description: Activity counts.  
                    - name: share | type: integer | description: Number of shares.  
                    - name: like | type: integer | description: Number of likes.  
                    - name: comment | type: integer | description: Number of comments.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: facebookReel | type: FacebookReel | description: Facebook reel content.  
              - name: pageId | type: string | description: The page GUID to publish the reel to.  
              - name: videoUrl | type: string | description: The video URL.  
              - name: description | type: string | description: A description for the reel.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: facebookStory | type: FacebookStory | description: Facebook story content.  
              - name: pageId | type: string | description: The page GUID to publish the story to.  | validation: maxLength 1024
              - name: storyUrl | type: string | description: The story URL on Facebook.  | read-only: true | validation: format WEB_URL
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: FacebookInsights | description: Insights from Facebook.  | read-only: true 
           - name: youtubeVideo | type: YouTubeVideo | description: YouTube video content.  
              - name: channelId | type: string | description: The channel GUID to publish the video to.  
              - name: videoUrl | type: string | description: The video URL.  
              - name: title | type: string | description: A title for the video.  
              - name: description | type: string | description: A description for the video.  
              - name: categoryId | type: string | description: A category for the video.  
              - name: notifySubscribers | type: boolean | description: Whether to notify channel subscribers when the video is published.  
              - name: insights | type: YoutubeInsights | description: Insights data from YouTube.  | read-only: true 
                 - name: views | type: integer | description: Number of views.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: dislikes | type: integer | description: Number of dislikes.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: youtubeShort | type: YouTubeShort | description: YouTube short content.  
              - name: channelId | type: string | description: The channel GUID to publish the short to.  
              - name: videoUrl | type: string | description: The short URL.  
              - name: title | type: string | description: A title for the short.  
              - name: description | type: string | description: A description for the short.  
              - name: categoryId | type: string | description: A category for the short.  
              - name: notifySubscribers | type: boolean | description: Whether to notify channel subscribers when the short is published.  
              - name: insights | type: YoutubeInsights | description: Insights data from YouTube.  | read-only: true 
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
           - name: linkedinPost | type: LinkedinPost | description: LinkedIn post content.  
              - ONE-OF: 
                 - name: imageUrl | type: string | description: The image URL.  
                 - name: videoUrl | type: string | description: The video URL.  
                 - name: link | type: string | description: The link URL.  
                 - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: authorId | type: string | description: Author GUID of the post. Can be an organization page or a personal feed.  
              - name: caption | type: string | description: Caption for the post.  
              - name: linkMetadata | type: LinkMetadata | description: Link preview metadata. Available only when the post contains a link.  
              - name: insights | type: LinkedinPostInsights | description: Insights from LinkedIn.  | read-only: true 
                 - name: uniqueImpressions | type: integer | description: Number of unique impressions.  
                 - name: impression | type: integer | description: Total number of impressions.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: engagement | type: float | description: Engagement rate.  
                 - name: clicks | type: integer | description: Number of clicks.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: pinterestPost | type: PinterestPost | description: Pinterest post content.  
              - name: boardId | type: string | description: The board GUID to publish the post to.  | validation: maxLength 128
              - name: title | type: string | description: The title of the post.  | validation: maxLength 100
              - name: description | type: string | description: The description of the post.  | validation: maxLength 800
              - name: link | type: string | description: The link to include in the post.  | validation: maxLength 2048
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: PinterestInsights | description: Insights from Pinterest.  | read-only: true 
                 - name: impressions | type: integer | description: Number of impressions.  
                 - name: clicks | type: integer | description: Number of clicks.  
                 - name: saves | type: integer | description: Number of saves.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: reactions | type: integer | description: Number of reactions.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: gbpPost | type: GbpPost | description: Google Business Profile post content.  
              - name: locationId | type: string | description: The location GUID to publish the post to.  | validation: maxLength 128
              - name: locationAccountId | type: string | description: Account (group) GUID of the location.  | validation: maxLength 128
              - name: description | type: string | description: The description of the post.  | validation: maxLength 1500
              - name: callToAction | type: GbpPostCallToAction | description: Call to action type and URL to include in the post.  
                 - name: actionType | type: GbpPostCallToActionType | description: Type of the call to action.  
                         - enum: BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP
                 - name: url | type: string | description: URL of the call to action.  | validation: maxLength 2048
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: GbpInsights | description: Insights from Google Business Profile.  | read-only: true 
                 - name: shares | type: integer | description: Number of shares. Google Business Profile post insights aren't currently available, so this returns `-1`.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: tiktokVideo | type: TikTokVideo | description: TikTok video content.  
              - name: accountId | type: string | description: The account GUID to publish the video to.  | validation: maxLength 128
              - name: privacyLevel | type: TikTokPrivacyLevel | description: Privacy level for the video.  
                     - enum: PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY
              - name: description | type: string | description: A description for the video.  | validation: maxLength 2200
              - name: disableComment | type: boolean | description: Whether comments are disabled for the video.  
              - name: disableDuet | type: boolean | description: Whether duets are disabled for the video.  
              - name: disableStitch | type: boolean | description: Whether stitches are disabled for the video.  
              - name: brandContentToggle | type: boolean | description: Whether the content is a paid partnership promoting a third-party business.  
              - name: brandOrganicToggle | type: boolean | description: Whether the content promotes the creator's own business.  
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: TikTokInsights | description: Insights from TikTok.  | read-only: true 
                 - name: views | type: integer | description: Number of views.  
                 - name: likes | type: integer | description: Number of likes.  
                 - name: comments | type: integer | description: Number of comments.  
                 - name: shares | type: integer | description: Number of shares.  
                 - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: tiktokPhoto | type: TikTokPhoto | description: TikTok photo content.  
              - name: accountId | type: string | description: The account GUID to publish the photo to.  | validation: maxLength 128
              - name: privacyLevel | type: TikTokPrivacyLevel | description: Privacy level for the photo.  
              - name: title | type: string | description: A title for the photo.  | validation: maxLength 90
              - name: description | type: string | description: A description for the photo.  | validation: maxLength 4000
              - name: disableComment | type: boolean | description: Whether comments are disabled for the photo.  
              - name: autoAddMusic | type: boolean | description: Whether to automatically add music to the photo.  
              - name: brandContentToggle | type: boolean | description: Whether the content is a paid partnership promoting a third-party business.  
              - name: brandOrganicToggle | type: boolean | description: Whether the content promotes the creator's own business.  
              - name: mediaWrapper | type: MediaWrapper | description: The media list.  
              - name: insights | type: TikTokInsights | description: Insights from TikTok.  | read-only: true 
        - name: _id | type: string | description: Item GUID.  | read-only: true | validation: format GUID
        - name: channel | type: Channel | description: Social channel the item is published to, and the account within that channel.  
           - name: name | type: ChannelName | description: Social channel the item is published to.  
                 - enum: INSTAGRAM, FACEBOOK, YOUTUBE, LINKEDIN, TWITTER, PINTEREST, GBP, TIKTOK
           - name: accountId | type: string | description: GUID of the connected account the item is published to.  
           - name: accountName | type: string | description: Display name of the connected account the item is published to.  | read-only: true 
           - name: externalItemId | type: string | description: GUID of the post on the social channel. Returned after the item is published.  | read-only: true 
           - name: externalItemUrl | type: string | description: URL of the post on the social channel. Returned after the item is published.  | read-only: true | validation: format WEB_URL
           - name: publishingTarget | type: PublishingTarget | description: Specific destination within the account, such as a Facebook page or a Pinterest board.  
              - name: _id | type: string | description: GUID of the publishing target.  | validation: maxLength 128
              - name: displayName | type: string | description: Display name of the publishing target.  | validation: maxLength 2000
              - name: pictureUrl | type: string | description: URL of the publishing target's picture.  | validation: format WEB_URL
        - name: type | type: ItemType | description: Item format. The `type` and the content set in `data` must match a combination supported by the item's `channel.name`:  - Instagram: `POST` with `instagramPost`, or `STORY` with `instagramStory`. - Facebook: `POST` with `facebookPost`, `REEL` with `facebookReel`, or `STORY` with `facebookStory`. - YouTube: `VIDEO` with `youtubeVideo`, or `SHORT` with `youtubeShort`. - LinkedIn: `POST` with `linkedinPost`. - X (Twitter): `POST` with `twitterPost`. Deprecated: No longer functional as of July 31, 2026. - Pinterest: `POST` with `pinterestPost`. - Google Business Profile: `POST` with `gbpPost`. - TikTok: `POST` with `tiktokPhoto`, or `VIDEO` with `tiktokVideo`.  
             - enum:
             -     POST: A standard post.
             -     REEL: A short-form vertical video reel.
             -     VIDEO: A video.
             -     SHORT: A short-form vertical video.
             -     STORY: A story that's available for a limited time.
        - name: status | type: Status | description: Current status of the item in its lifecycle.  | read-only: true 
             - enum:
             -     PUBLISHED: Published to the social channel.
             -     SCHEDULED: Scheduled to be published at a future date.
             -     CANCELED: Scheduling was canceled before the item was published.
             -     FAILED: Publishing failed.
             -     DELETED: Deleted.
             -     PROCESSING: Publishing is in progress.
             -     DRAFT: Saved as a draft, not yet published.
             -     IN_QUEUE: Queued for publishing as part of a bulk operation.
        - name: publishedDate | type: Date | description: Date and time the item was published. Returned only after the item is published.  | read-only: true 
        - name: schedulingInfo | type: SchedulingInfo | description: Scheduling info. Set to schedule the item for a future date instead of publishing it immediately.  
           - name: scheduledDate | type: Date | description: Date and time the item is scheduled to be published.  
           - name: schedulingTimestamp | type: Date | description: Date and time the item was scheduled.  | read-only: true 
        - name: consumerInfo | type: ConsumerInfo | description: Identifies what created the item.  
           - name: name | type: string | description: Stable name identifying what created the item, for example `social-marketing` for the Social Media Marketing dashboard. Set on creation only. Update Item ignores it.  
        - name: referenceId | type: string | description: Caller-defined reference that uniquely identifies the item. Can be used to prevent duplicate publishing: an attempt to publish a second item with the same `referenceId` fails. Can also be used as a UTM campaign GUID.  
        - name: siteAnalytics | type: SiteAnalytics | description: Aggregated analytics for the site, attributed to traffic from this post.  
           - name: traffic | type: integer | description: Number of site sessions attributed to this post.  
           - name: pageView | type: integer | description: Number of page views attributed to this post.  
           - name: siteBounceRate | type: float | description: Site bounce rate attributed to this post.  
           - name: revenue | type: float | description: Revenue attributed to this post.  
           - name: conversionFunnel | type: ConversionFunnel | description: Conversion funnel data attributed to this post.  
              - name: cartViewsSessions | type: integer | description: Number of sessions that viewed the cart.  
              - name: checkOutSessions | type: integer | description: Number of sessions that reached checkout.  
              - name: storeOrdersSessions | type: integer | description: Number of sessions that placed a store order.  
              - name: bookingsConfirmed | type: integer | description: Number of confirmed bookings.  
           - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
        - name: insightsSummary | type: InsightsSummary | description: Summary of the post's performance on the social channel, such as impressions and interactions.  
           - name: impressions | type: integer | description: Number of unique impressions (reach).  
           - name: interactions | type: integer | description: Number of interactions, such as likes and comments.  
           - name: _updatedDate | type: Date | description: Date and time the insights were last updated.  
           - name: impressionsTotal | type: integer | description: Total number of impressions.  
        - name: draftInfo | type: DraftInfo | description: Creation and update dates, returned for draft items.  
           - name: _createdDate | type: Date | description: Date and time the draft was created.  | read-only: true 
           - name: _updatedDate | type: Date | description: Date and time the draft was updated.  | read-only: true 
        - name: suggested | type: boolean | description: Whether the item was generated as an AI suggestion.  
        - name: external | type: boolean | description: Whether the item is a post created natively on the social channel rather than published through Wix.  
        - name: publicationError | type: PublicationErrorDetails | description: Details of why the item failed to publish. Returned only when `status` is `FAILED`.  | read-only: true 
           - name: message | type: string | description: Error message shown when publishing fails.  | read-only: true | validation: maxLength 500
        - name: siteAssetRef | type: AssetReference | description: Reference to the site content the post promotes, such as a product, a blog post, or an event. Set per channel.  
           - name: siteAssetRefType | type: Type | description: Type of the site asset (for example, product or blog post). See `SiteAsset.Type` for the closed set of values.  
                 - enum:
                 -     BLOG_POST: A Wix Blog post.
                 -     EVENT: A Wix Events event.
                 -     STORES_PRODUCT: A Wix Stores product.
                 -     BOOKINGS_SERVICE: A Wix Bookings service.
                 -     STORES_COUPON: A Wix Stores coupon.
                 -     STORES_CATEGORY: A Wix Stores category.
           - name: _id | type: string | description: GUID of the asset within its provider's data store.  | validation: maxLength 256
           - name: name | type: string | description: Display name of the asset (for example, the product title or blog post title), cached at post-creation time.  | validation: maxLength 3000
        - name: originItemId | type: string | description: GUID of the item this item was derived from, when publishing produced several items from one. Currently set only by `PublishMultiStoryDraft`, which splits a multi-media story draft into one published item per frame: every resulting item carries the originating draft's GUID here. Lets a consumer re-correlate the new items with whatever it had recorded against the original draft, which no longer exists after the split. Set by the publisher, never by the caller.  | read-only: true | validation: format GUID
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Bulk action metadata.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: NOT_MULTI_STORY_DRAFT | Description: The item isn't a story draft with more than one media item.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: INELIGIBLE_FOR_FEATURE | Description: The site's social media marketing plan doesn't permit this action, or its quota for the current period is exhausted.


```

### Examples

### Publish a multi-frame story draft
```javascript
// @description: Each frame becomes its own story item, published in media order. The draft is deleted only after all of them are published.
import { items } from "@wix/promote-growth-tools-publisher";

const draftId = "8e2b7c94-0af1-4d35-b6e8-3c7f01d29b45";

async function publishMultiStoryDraft() {
  const response = await items.publishMultiStoryDraft(draftId);
}

/* Promise resolves to:
 * {
 *   "results": [
 *     {
 *       "itemMetadata": {
 *         "_id": "1f5c8a37-9be2-4d10-84af-06b73e2d915c",
 *         "originalIndex": 0,
 *         "success": true
 *       }
 *     },
 *     {
 *       "itemMetadata": {
 *         "_id": "7ab049d6-3c81-4f27-95e0-b2d641f8a37e",
 *         "originalIndex": 1,
 *         "success": true
 *       }
 *     },
 *     {
 *       "itemMetadata": {
 *         "_id": "c34e17b8-05fa-4d93-a6b1-8e70925cf4d2",
 *         "originalIndex": 2,
 *         "success": true
 *       }
 *     }
 *   ],
 *   "bulkActionMetadata": {
 *     "totalSuccesses": 3,
 *     "totalFailures": 0,
 *     "undetailedFailures": 0
 *   }
 * }
 */

```

### publishMultiStoryDraft (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 { items } from '@wix/promote-growth-tools-publisher';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

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


async function publishMultiStoryDraft(_id,options) {
  const response = await myWixClient.items.publishMultiStoryDraft(_id,options);
};
```

---