---
title: "Creates a new scheduled post."
method: POST
path: "/v2/scheduler/posts"
tags: ["Posts Api Service"]
---

# Creates a new scheduled post.

`POST /v2/scheduler/posts`

## Request

- Base URL: `https://app.metricool.com/api`
- URL: `https://app.metricool.com/api/v2/scheduler/posts`
- Auth: none declared

## Query parameters

- `jobId` string

## Request body

- ScheduledPost
  - `id` integer
  - `publicationDate` DateTimeInfo, required
    - `dateTime` string, required: Local Date-time represented with a certain timezone
    - `timezone` string: Timezone applied to the datetime
  - `creationDate` DateTimeInfo
    - `dateTime` string, required: Local Date-time represented with a certain timezone
    - `timezone` string: Timezone applied to the datetime
  - `text` string, required
  - `firstCommentText` string
  - `providers` ProviderStatus[], required
    - `network` string
    - `id` string
    - `status` 'PUBLISHED' | 'PUBLISHING' | 'PENDING' | 'AWAITING_CONFIRMATION' | 'ERROR' | 'DRAFT'
    - `publicUrl` string
    - `detailedStatus` string
  - `media` string[]
  - `autoPublish` boolean
  - `saveExternalMediaFiles` boolean
  - `mediaAltText` string[]
  - `shortener` boolean
  - `draft` boolean
  - `location` ScheduledPostLocation
    - `name` string
    - `link` string
    - `id` string
    - `location` ScheduledPostLocationCoordinates
      - `city` string
      - `country` string
      - `state` string
      - `street` string
      - `zip` string
      - `latitude` number, double
      - `longitude` number, double
    - `deleted` boolean
  - `videoCoverMilliseconds` integer
  - `videoThumbnailUrl` string
  - `parentId` integer
  - `twitterData` ScheduledPostTwitterData
    - `tags` ScheduledPostImageTag[]
      - `username` string
      - `x` number, double
      - `y` number, double
      - `deleted` boolean
    - `replySettings` string
    - `type` string
    - `poll` ScheduledPostTwitterPoll
      - `options` ScheduledPostTwitterPollOption[]
        - `text` string
      - `settings` ScheduledPostTwitterPollSettings
        - `durationMinutes` integer
    - `isPollChild` boolean
  - `facebookData` ScheduledPostFacebookData
    - `boost` number, double
    - `boostPayer` string
    - `boostBeneficiary` string
    - `type` string
    - `title` string
  - `smartLinkData` ScheduledPostSmartLinkData
    - `targetUrl` string
    - `ids` integer[]
  - `instagramData` ScheduledPostInstagramData
    - `autoPublish` boolean
    - `tags` ScheduledPostImageTag[]
      - `username` string
      - `x` number, double
      - `y` number, double
      - `deleted` boolean
    - `productTags` ScheduledPostProductTag[]
      - `productName` string
      - `productId` string
      - `x` number, double
      - `y` number, double
      - `catalogId` string
    - `carouselTags` object
    - `carouselProductTags` object
    - `type` string
    - `showReelOnFeed` boolean
    - `isAiGenerated` boolean: Whether the Instagram post is flagged as AI-generated content (sent as is_ai_generated on publish).
    - `boost` number, double
    - `boostPayer` string
    - `boostBeneficiary` string
    - `audioName` string
    - `audioConfiguration` ScheduledPostInstagramAudioConfiguration
      - `audioId` string, required: Unique identifier of the audio asset from the Instagram Audio API.
      - `audioType` 'music' | 'original_sound' | 'music' | 'original_sound': Audio type. Allowed values: 'music', 'original_sound'.
      - `title` string: Title of the audio track.
      - `displayArtist` string: Display artist name (populated for 'music' type).
      - `igUsername` string: Instagram username of the creator (populated for 'original_sound' type).
      - `coverArtworkUrl` string: URL of the cover artwork thumbnail.
      - `durationMs` integer: Duration of the audio in milliseconds.
      - `audioVolume` integer: Volume level for the audio asset, from 0 (muted) to 100 (full volume). Defaults to 100.
      - `videoVolume` integer: Volume level for the video's original audio, from 0 (muted) to 100 (full volume). Defaults to 100.
    - `collaborators` InstagramCollaboratorTag[]
      - `username` string
      - `deleted` boolean
    - `shareTrialAutomatically` boolean
  - `pinterestData` ScheduledPostPinterestData
    - `boardId` string
    - `pinTitle` string
    - `pinLink` string
    - `pinNewFormat` boolean
  - `youtubeData` ScheduledPostYoutubeData
    - `title` string
    - `type` string
    - `privacy` string
    - `tags` string[]
    - `category` string
    - `playlistId` string
    - `madeForKids` boolean
    - `isAiGeneratedContent` boolean
    - `notifySubscribers` boolean
  - `tiktokData` ScheduledPostTikTokData
    - `disableComment` boolean
    - `disableDuet` boolean
    - `disableStitch` boolean
    - `privacyOption` string
    - `commercialContentThirdParty` boolean
    - `commercialContentOwnBrand` boolean
    - `title` string
    - `autoAddMusic` boolean
    - `photoCoverIndex` integer
    - `music` ScheduledPostTikTokTrack
      - `musicId` string, required
      - `title` string, required
      - `author` string, required
      - `previewUrl` string, required
      - `thumbnailUrl` string, required
      - `soundVolume` integer
      - `originalVolume` integer
      - `startMillis` integer
      - `endMillis` integer
    - `articleLink` ScheduledPostTikTokArticleLink: TikTok Article Link attached to a post: an external URL shown as a link sticker on the video.
      - `url` string, required: The article URL.
      - `title` string: Optional link title shown over the article link sticker.
    - `isAigc` boolean
  - `linkedinData` ScheduledPostLinkedinData
    - `documentTitle` string
    - `publishImagesAsPDF` boolean
    - `previewIncluded` boolean
    - `type` string
    - `poll` ScheduledPostLinkedinPoll
      - `question` string
      - `options` ScheduledPostLinkedinPollOption[]
        - `text` string
      - `settings` ScheduledPostLinkedinPollSettings
        - `duration` string
  - `autolistData` ScheduledPostAutolistData
    - `id` integer
    - `name` string
  - `brandName` string
  - `targetBrandId` integer
  - `gmbData` ScheduledPostGmbData
    - `type` string
  - `descendants` ScheduledPost[]
  - `notes` ScheduledPostNote[]
    - `id` integer, required
    - `postId` integer, required
    - `userId` integer
    - `agencyId` integer
    - `userName` string, required
    - `created` DateTimeInfo, required
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `content` string, required
    - `updatedDate` DateTimeInfo
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `updated` boolean
    - `deletedDate` DateTimeInfo
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `deleted` boolean
    - `profilePicture` string: Public URL of the author's 400x400 profile picture. Absent when they have none, in which case the frontend renders its initials fallback. Filled for agency-authored notes too.
    - `mentions` NoteMentionDto[]: Users mentioned in the content of the note, resolved when the note is read. Empty when the note mentions nobody.
      - `userId` integer: Regular user id of the mentioned user. Absent for an agency end client.
      - `agencyId` integer: Agency id of the mentioned user. Only for an agency end client.
      - `agencyUserId` integer: Agency user id of the mentioned user. Only for an agency end client.
      - `name` string: Current display name of the mentioned user. Absent when the account was deleted, in which case the frontend renders its own localized deleted-user label.
      - `deleted` boolean: True when the mentioned account no longer exists. A user that merely lost access to the brand is not deleted: their mention keeps rendering as it always did.
    - `mentionId` string: Identity of the note author, and the field to compare against your own to tell whether a note is yours. `12345` for a regular user, `a:<agencyId>:<agencyUserId>` for an agency end client. Prefer it over the raw id fields: an agency author's `userId` is not a regular-user id — it holds their id inside the agency, which is a different id space and can be the same number as an unrelated regular user, so comparing that one can answer "mine" on somebody else's note. Same shape as the `mentionId` of the mention picker, so the author of a note and the entry that mentions them carry the same string. Absent only for a note whose author could not be resolved.
  - `hasNotReadNotes` boolean
  - `uuid` string
  - `copiedFrom` string
  - `creatorUserMail` string
  - `creatorUserId` integer
  - `creatorAgencyUserMail` string
  - `creatorAgencyId` integer
  - `creatorAgencyUserId` integer
  - `postApprovalData` ScheduledPostApprovalData
    - `approvalStatus` string
    - `approvalCriteria` string, required
    - `approvalEvents` ScheduledPostApprovalEvent[], required
      - `postUuid` string
      - `postId` integer
      - `reviewerId` integer
      - `reviewerMail` string, required
      - `reviewerPortalPublicId` string
      - `status` string
      - `updatedDate` DateTimeInfo
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `deletedDate` DateTimeInfo
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `deleted` boolean
    - `sendMailToReviewers` boolean
    - `saveData` boolean
    - `anonymousReviewerLanguage` string
  - `threadsData` ScheduledPostThreadsData: Data needed for schedule a Threads post
    - `allowedCountryCodes` string[]: A string list of valid ISO 3166-1 alpha-2 country codes that represents the countries where this media should be shown.
    - `isSpoiler` boolean: A boolean that represents if isSpoiler is activated or not
    - `replyControl` string: A string that represents who can reply to a Threads post, been EVERYONE by default. (EVERYONE, ACCOUNTS_YOU_FOLLOW,MENTIONED_ONLY,PARENT_POST_AUTHOR_ONLY,FOLLOWERS_ONLY)
    - `type` string: Post type (POST or GHOST)
    - `shareAsInstagramStory` boolean: A boolean that represents if the Threads post must be cross-shared as an Instagram Story. The Story is published on the Instagram account linked to the Threads account, which may not match the Instagram account connected to this brand.
    - `instagramStoryTheme` string: Theme used when the Threads post is cross-shared as an Instagram Story (LIGHT or DARK). Only allowed when shareAsInstagramStory is enabled; must be absent otherwise.
  - `blueskyData` ScheduledPostBlueskyData
    - `postLanguages` string[]
  - `libraryPostId` integer
  - `performanceDashboardIds` integer[]
  - `brandTags` BrandTagDto[]: Brand tags applied to the post, alphabetically. Empty when it has none.
    - `id` integer: Tag id.
    - `name` string: Tag name.
    - `color` string: Tag color in uppercase #RRGGBB, or #RRGGBBAA with alpha; absent when the tag has no color.
  - `brandTagIds` integer[]: Ids of the brand tags to apply: absent keeps the current ones, empty removes them all, a list replaces them. Ids that are not live tags of the brand are ignored; at most 20.

## Response `200`

OK

- JsonOkResponseScheduledPost
  - `metadata` object
  - `page` JsonPaging
    - `next` string
  - `data` ScheduledPost
    - `id` integer
    - `publicationDate` DateTimeInfo, required
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `creationDate` DateTimeInfo
      - `dateTime` string, required: Local Date-time represented with a certain timezone
      - `timezone` string: Timezone applied to the datetime
    - `text` string, required
    - `firstCommentText` string
    - `providers` ProviderStatus[], required
      - `network` string
      - `id` string
      - `status` 'PUBLISHED' | 'PUBLISHING' | 'PENDING' | 'AWAITING_CONFIRMATION' | 'ERROR' | 'DRAFT'
      - `publicUrl` string
      - `detailedStatus` string
    - `media` string[]
    - `autoPublish` boolean
    - `saveExternalMediaFiles` boolean
    - `mediaAltText` string[]
    - `shortener` boolean
    - `draft` boolean
    - `location` ScheduledPostLocation
      - `name` string
      - `link` string
      - `id` string
      - `location` ScheduledPostLocationCoordinates
        - `city` string
        - `country` string
        - `state` string
        - `street` string
        - `zip` string
        - `latitude` number, double
        - `longitude` number, double
      - `deleted` boolean
    - `videoCoverMilliseconds` integer
    - `videoThumbnailUrl` string
    - `parentId` integer
    - `twitterData` ScheduledPostTwitterData
      - `tags` ScheduledPostImageTag[]
        - `username` string
        - `x` number, double
        - `y` number, double
        - `deleted` boolean
      - `replySettings` string
      - `type` string
      - `poll` ScheduledPostTwitterPoll
        - `options` ScheduledPostTwitterPollOption[]
          - `text` string
        - `settings` ScheduledPostTwitterPollSettings
          - `durationMinutes` integer
      - `isPollChild` boolean
    - `facebookData` ScheduledPostFacebookData
      - `boost` number, double
      - `boostPayer` string
      - `boostBeneficiary` string
      - `type` string
      - `title` string
    - `smartLinkData` ScheduledPostSmartLinkData
      - `targetUrl` string
      - `ids` integer[]
    - `instagramData` ScheduledPostInstagramData
      - `autoPublish` boolean
      - `tags` ScheduledPostImageTag[]
        - `username` string
        - `x` number, double
        - `y` number, double
        - `deleted` boolean
      - `productTags` ScheduledPostProductTag[]
        - `productName` string
        - `productId` string
        - `x` number, double
        - `y` number, double
        - `catalogId` string
      - `carouselTags` object
      - `carouselProductTags` object
      - `type` string
      - `showReelOnFeed` boolean
      - `isAiGenerated` boolean: Whether the Instagram post is flagged as AI-generated content (sent as is_ai_generated on publish).
      - `boost` number, double
      - `boostPayer` string
      - `boostBeneficiary` string
      - `audioName` string
      - `audioConfiguration` ScheduledPostInstagramAudioConfiguration
        - `audioId` string, required: Unique identifier of the audio asset from the Instagram Audio API.
        - `audioType` 'music' | 'original_sound' | 'music' | 'original_sound': Audio type. Allowed values: 'music', 'original_sound'.
        - `title` string: Title of the audio track.
        - `displayArtist` string: Display artist name (populated for 'music' type).
        - `igUsername` string: Instagram username of the creator (populated for 'original_sound' type).
        - `coverArtworkUrl` string: URL of the cover artwork thumbnail.
        - `durationMs` integer: Duration of the audio in milliseconds.
        - `audioVolume` integer: Volume level for the audio asset, from 0 (muted) to 100 (full volume). Defaults to 100.
        - `videoVolume` integer: Volume level for the video's original audio, from 0 (muted) to 100 (full volume). Defaults to 100.
      - `collaborators` InstagramCollaboratorTag[]
        - `username` string
        - `deleted` boolean
      - `shareTrialAutomatically` boolean
    - `pinterestData` ScheduledPostPinterestData
      - `boardId` string
      - `pinTitle` string
      - `pinLink` string
      - `pinNewFormat` boolean
    - `youtubeData` ScheduledPostYoutubeData
      - `title` string
      - `type` string
      - `privacy` string
      - `tags` string[]
      - `category` string
      - `playlistId` string
      - `madeForKids` boolean
      - `isAiGeneratedContent` boolean
      - `notifySubscribers` boolean
    - `tiktokData` ScheduledPostTikTokData
      - `disableComment` boolean
      - `disableDuet` boolean
      - `disableStitch` boolean
      - `privacyOption` string
      - `commercialContentThirdParty` boolean
      - `commercialContentOwnBrand` boolean
      - `title` string
      - `autoAddMusic` boolean
      - `photoCoverIndex` integer
      - `music` ScheduledPostTikTokTrack
        - `musicId` string, required
        - `title` string, required
        - `author` string, required
        - `previewUrl` string, required
        - `thumbnailUrl` string, required
        - `soundVolume` integer
        - `originalVolume` integer
        - `startMillis` integer
        - `endMillis` integer
      - `articleLink` ScheduledPostTikTokArticleLink: TikTok Article Link attached to a post: an external URL shown as a link sticker on the video.
        - `url` string, required: The article URL.
        - `title` string: Optional link title shown over the article link sticker.
      - `isAigc` boolean
    - `linkedinData` ScheduledPostLinkedinData
      - `documentTitle` string
      - `publishImagesAsPDF` boolean
      - `previewIncluded` boolean
      - `type` string
      - `poll` ScheduledPostLinkedinPoll
        - `question` string
        - `options` ScheduledPostLinkedinPollOption[]
          - `text` string
        - `settings` ScheduledPostLinkedinPollSettings
          - `duration` string
    - `autolistData` ScheduledPostAutolistData
      - `id` integer
      - `name` string
    - `brandName` string
    - `targetBrandId` integer
    - `gmbData` ScheduledPostGmbData
      - `type` string
    - `descendants` ScheduledPost[]
    - `notes` ScheduledPostNote[]
      - `id` integer, required
      - `postId` integer, required
      - `userId` integer
      - `agencyId` integer
      - `userName` string, required
      - `created` DateTimeInfo, required
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `content` string, required
      - `updatedDate` DateTimeInfo
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `updated` boolean
      - `deletedDate` DateTimeInfo
        - `dateTime` string, required: Local Date-time represented with a certain timezone
        - `timezone` string: Timezone applied to the datetime
      - `deleted` boolean
      - `profilePicture` string: Public URL of the author's 400x400 profile picture. Absent when they have none, in which case the frontend renders its initials fallback. Filled for agency-authored notes too.
      - `mentions` NoteMentionDto[]: Users mentioned in the content of the note, resolved when the note is read. Empty when the note mentions nobody.
        - `userId` integer: Regular user id of the mentioned user. Absent for an agency end client.
        - `agencyId` integer: Agency id of the mentioned user. Only for an agency end client.
        - `agencyUserId` integer: Agency user id of the mentioned user. Only for an agency end client.
        - `name` string: Current display name of the mentioned user. Absent when the account was deleted, in which case the frontend renders its own localized deleted-user label.
        - `deleted` boolean: True when the mentioned account no longer exists. A user that merely lost access to the brand is not deleted: their mention keeps rendering as it always did.
      - `mentionId` string: Identity of the note author, and the field to compare against your own to tell whether a note is yours. `12345` for a regular user, `a:<agencyId>:<agencyUserId>` for an agency end client. Prefer it over the raw id fields: an agency author's `userId` is not a regular-user id — it holds their id inside the agency, which is a different id space and can be the same number as an unrelated regular user, so comparing that one can answer "mine" on somebody else's note. Same shape as the `mentionId` of the mention picker, so the author of a note and the entry that mentions them carry the same string. Absent only for a note whose author could not be resolved.
    - `hasNotReadNotes` boolean
    - `uuid` string
    - `copiedFrom` string
    - `creatorUserMail` string
    - `creatorUserId` integer
    - `creatorAgencyUserMail` string
    - `creatorAgencyId` integer
    - `creatorAgencyUserId` integer
    - `postApprovalData` ScheduledPostApprovalData
      - `approvalStatus` string
      - `approvalCriteria` string, required
      - `approvalEvents` ScheduledPostApprovalEvent[], required
        - `postUuid` string
        - `postId` integer
        - `reviewerId` integer
        - `reviewerMail` string, required
        - `reviewerPortalPublicId` string
        - `status` string
        - `updatedDate` DateTimeInfo
          - `dateTime` string, required: Local Date-time represented with a certain timezone
          - `timezone` string: Timezone applied to the datetime
        - `deletedDate` DateTimeInfo
          - `dateTime` string, required: Local Date-time represented with a certain timezone
          - `timezone` string: Timezone applied to the datetime
        - `deleted` boolean
      - `sendMailToReviewers` boolean
      - `saveData` boolean
      - `anonymousReviewerLanguage` string
    - `threadsData` ScheduledPostThreadsData: Data needed for schedule a Threads post
      - `allowedCountryCodes` string[]: A string list of valid ISO 3166-1 alpha-2 country codes that represents the countries where this media should be shown.
      - `isSpoiler` boolean: A boolean that represents if isSpoiler is activated or not
      - `replyControl` string: A string that represents who can reply to a Threads post, been EVERYONE by default. (EVERYONE, ACCOUNTS_YOU_FOLLOW,MENTIONED_ONLY,PARENT_POST_AUTHOR_ONLY,FOLLOWERS_ONLY)
      - `type` string: Post type (POST or GHOST)
      - `shareAsInstagramStory` boolean: A boolean that represents if the Threads post must be cross-shared as an Instagram Story. The Story is published on the Instagram account linked to the Threads account, which may not match the Instagram account connected to this brand.
      - `instagramStoryTheme` string: Theme used when the Threads post is cross-shared as an Instagram Story (LIGHT or DARK). Only allowed when shareAsInstagramStory is enabled; must be absent otherwise.
    - `blueskyData` ScheduledPostBlueskyData
      - `postLanguages` string[]
    - `libraryPostId` integer
    - `performanceDashboardIds` integer[]
    - `brandTags` BrandTagDto[]: Brand tags applied to the post, alphabetically. Empty when it has none.
      - `id` integer: Tag id.
      - `name` string: Tag name.
      - `color` string: Tag color in uppercase #RRGGBB, or #RRGGBBAA with alpha; absent when the tag has no color.
    - `brandTagIds` integer[]: Ids of the brand tags to apply: absent keeps the current ones, empty removes them all, a list replaces them. Ids that are not live tags of the brand are ignored; at most 20.

---

[API](https://skmtc.dev/metricool/apis/metricool-api.md) · [All operations](https://skmtc.dev/metricool/apis/metricool-api/llms.txt) · [OpenAPI document](https://skmtc.dev/metricool/apis/metricool-api/revisions/aea9d9a8415a?raw)
