---
title: "Create a post"
method: POST
path: "/posts"
tags: ["Posts"]
---

# Create a post

`POST /posts`

Create or schedule a new post. Each social media platform has its own settings schema.

## Request body

- CreatePostRequest
  - `type` 'draft' | 'schedule' | 'now', required — Post type
  - `date` string, date-time, required — Publish date in UTC ISO format
  - `shortLink` boolean, required — Whether to use short links
  - `order` string — Order of posts
  - `inter` number — Interval between posts
  - `tags` Tag[], required
    - `value` string, required
    - `label` string, required
  - `posts` PostItem[] — Required if type is not 'draft'
    - `integration` object, required
      - `id` string, required — Integration ID
    - `value` PostContent[], required
      - `content` string, required — Post text content
      - `id` string — Post ID (for updates)
      - `image` Media[]
        - `id` string, required
        - `path` string, required
    - `group` string — Group ID for related posts
    - `settings` union — Provider-specific settings
      - XSettings
        - `__type` 'x', required — Must be 'x'
        - `who_can_reply_post` 'everyone' | 'following' | 'mentionedUsers' | 'subscribers' | 'verified', required — Who can reply to the post
        - `community` string — X Community URL (format: https://x.com/i/communities/123)
      - LinkedInSettings
        - `__type` 'linkedin' | 'linkedin-page', required — Use 'linkedin' for profiles, 'linkedin-page' for company pages
        - `post_as_images_carousel` boolean — Display multiple images as a carousel
        - `carousel_name` string — Name for the carousel document
      - InstagramSettings
        - `__type` 'instagram' | 'instagram-standalone', required — Use 'instagram' for FB-linked, 'instagram-standalone' for standalone
        - `post_type` 'post' | 'story', required — Type of Instagram post
        - `is_trial_reel` boolean — Whether to post as a trial reel
        - `graduation_strategy` 'MANUAL' | 'SS_PERFORMANCE' — Graduation strategy for trial reels
        - `collaborators` object[]
          - `label` string — Collaborator username
      - FacebookSettings — Facebook post settings
        - `__type` 'facebook', required
        - `url` string, uri — Optional link URL to include in the post
      - YouTubeSettings
        - `__type` 'youtube', required
        - `title` string, required — Video title
        - `type` 'public' | 'private' | 'unlisted', required — Video visibility
        - `selfDeclaredMadeForKids` 'yes' | 'no' — Made for kids declaration
        - `thumbnail` Media
          - `id` string, required
          - `path` string, required
        - `tags` Tag[]
          - `value` string, required
          - `label` string, required
      - TikTokSettings
        - `__type` 'tiktok', required
        - `title` string — Used as the title of the post. The only setting TikTok keeps when content_posting_method=UPLOAD.
        - `privacy_level` 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY', required — Applied only when content_posting_method=DIRECT_POST. Ignored by TikTok on UPLOAD.
        - `duet` boolean, required — Video posts only, and only when content_posting_method=DIRECT_POST. TikTok has no duet setting for photo posts.
        - `stitch` boolean, required — Video posts only, and only when content_posting_method=DIRECT_POST. TikTok has no stitch setting for photo posts.
        - `comment` boolean, required — Applied only when content_posting_method=DIRECT_POST. Ignored by TikTok on UPLOAD.
        - `autoAddMusic` 'yes' | 'no', required — Photo posts only, and only when content_posting_method=DIRECT_POST. Ignored by TikTok on UPLOAD.
        - `brand_content_toggle` boolean, required — Applied only when content_posting_method=DIRECT_POST. Ignored by TikTok on UPLOAD.
        - `brand_organic_toggle` boolean, required — Applied only when content_posting_method=DIRECT_POST. Ignored by TikTok on UPLOAD.
        - `video_made_with_ai` boolean — Labels the post as AI generated. Video posts only, and only when content_posting_method=DIRECT_POST. TikTok has no AI-generated label for photo posts, and discards it on UPLOAD.
        - `content_posting_method` 'DIRECT_POST' | 'UPLOAD', required — Required. Use "DIRECT_POST" to actually publish the post to TikTok. "UPLOAD" does NOT publish: it only sends the media to the user's TikTok app inbox, where they must manually finish and publish it within 24 hours or it is discarded. Only use "UPLOAD" when the user explicitly asks to review or edit the post inside the TikTok app before publishing. "UPLOAD" also makes TikTok ignore every other setting in this object except the title.
      - RedditSettings
        - `__type` 'reddit', required
        - `subreddit` object[], required
          - `value` object
            - `subreddit` string, required — Subreddit name without r/
            - `title` string, required — Post title
            - `type` 'self' | 'link' | 'image' | 'video', required — Post type
            - `url` string — URL for link posts
            - `is_flair_required` boolean, required
            - `flair` object
              - …
      - LemmySettings — Lemmy uses 'subreddit' for communities (historical naming)
        - `__type` 'lemmy', required
        - `subreddit` object[], required
          - `value` object
            - `subreddit` string, required — Community name
            - `id` string, required — Community ID
            - `title` string, required — Post title
            - `url` string, uri — Optional URL
      - PinterestSettings
        - `__type` 'pinterest', required
        - `board` string, required — Board ID
        - `title` string
        - `link` string, uri
        - `dominant_color` string
      - DiscordSettings
        - `__type` 'discord', required
        - `channel` string, required — Discord channel ID
      - SlackSettings
        - `__type` 'slack', required
        - `channel` string, required — Slack channel ID
      - TwitchSettings — Twitch post settings
        - `__type` 'twitch', required
        - `messageType` 'message' | 'announcement' — Message type
        - `announcementColor` 'primary' | 'blue' | 'green' | 'orange' | 'purple' — Announcement color (only for announcement type)
      - DribbbleSettings
        - `__type` 'dribbble', required
        - `title` string, required — Shot title
        - `team` string, uri — Team URL
      - MediumSettings
        - `__type` 'medium', required
        - `title` string, required — Article title
        - `subtitle` string, required — Article subtitle
        - `canonical` string, uri — Original URL for SEO
        - `publication` string — Publication ID to post to
        - `tags` Tag[]
          - `value` string, required
          - `label` string, required
      - DevToSettings
        - `__type` 'devto', required
        - `title` string, required — Article title
        - `main_image` Media
          - `id` string, required
          - `path` string, required
        - `canonical` string, uri — Original URL for SEO
        - `organization` string — Organization ID
        - `tags` Tag[]
          - `value` string, required
          - `label` string, required
      - HashnodeSettings
        - `__type` 'hashnode', required
        - `title` string, required — Article title
        - `subtitle` string — Article subtitle
        - `main_image` Media
          - `id` string, required
          - `path` string, required
        - `canonical` string, uri — Original URL for SEO
        - `publication` string — Publication ID (required)
        - `tags` Tag[], required
          - `value` string, required
          - `label` string, required
      - WordpressSettings
        - `__type` 'wordpress', required
        - `title` string, required — Post title
        - `main_image` Media
          - `id` string, required
          - `path` string, required
        - `type` string, required — Post type (depends on WordPress setup)
      - ListmonkSettings
        - `__type` 'listmonk', required
        - `subject` string, required — Email subject line
        - `preview` string, required — Email preview text
        - `list` string, required — List ID to send to
        - `template` string — Template ID (optional)
      - GmbSettings — Google My Business post settings
        - `__type` 'gmb', required
        - `topicType` 'STANDARD' | 'EVENT' | 'OFFER' — Post type
        - `callToActionType` 'NONE' | 'BOOK' | 'ORDER' | 'SHOP' | 'LEARN_MORE' | 'SIGN_UP' | 'GET_OFFER' | 'CALL' — Call-to-action button
        - `callToActionUrl` string, uri — URL for CTA (required if callToActionType is set)
        - `eventTitle` string — Event title (required for EVENT type)
        - `eventStartDate` string — Event start date
        - `eventEndDate` string — Event end date
        - `eventStartTime` string — Event start time
        - `eventEndTime` string — Event end time
        - `offerCouponCode` string — Coupon code (for OFFER type)
        - `offerRedeemUrl` string, uri — Redemption URL
        - `offerTerms` string — Offer terms and conditions
      - WarpcastSettings — Warpcast (Farcaster) post settings
        - `__type` 'warpcast', required
        - `subreddit` object[] — Farcaster channels to post to
          - `value` object
            - `id` string, required — Channel ID
      - MoltbookSettings — Moltbook post settings
        - `__type` 'moltbook', required
        - `submolt` string, required — Submolt (community) ID
      - SkoolSettings — Skool post settings
        - `__type` 'skool', required
        - `group` string, required — Group ID
        - `label` string, required — Label/category ID
        - `title` string, required — Post title
      - WhopSettings — Whop post settings
        - `__type` 'whop', required
        - `company` string, required — Company ID
        - `experience` string, required — Experience/forum ID
        - `title` string — Post title
      - EmptySettings — For platforms that don't require additional settings
        - `__type` 'threads' | 'mastodon' | 'bluesky' | 'telegram' | 'nostr' | 'vk' | 'kick', required — Platform identifier

## Response `200`

Post created successfully

- object[]
  - `postId` string
  - `integration` string

---

[API](https://skmtc.net/postiz/apis/postiz-public-api.md) · [All operations](https://skmtc.net/postiz/apis/postiz-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/postiz/postiz-public-api/revisions/91e98b6af585/schema)
