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

# Create posts

`POST /posts`

## Request

- Base URL: `https://www.socialfaktory.com/v1`
- URL: `https://www.socialfaktory.com/v1/posts`
- Auth: HTTP bearer

Compose one post per channel from the same media. Drafts by default, which stay inside the service and run no checks; send them one at a time with send_post so a refusal names the channel it belongs to. status "scheduled" instead checks every target first, creates nothing if one fails, then hands the posts to the publisher in the background for the social accounts the user connected: they come back queued, and list_posts shows each one turn scheduled, then published.

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `brand_id` string: The brand this call belongs to. Required unless the token is pinned to a brand.
  - `generation_id` string
  - `media_item_id` string
  - `editor_asset_id` string
  - `scheduled_at` string
  - `status` 'draft' | 'scheduled'
  - `targets` object[], required
    - `channel_id` string, required
    - `caption` string
    - `parts` string[]
    - `tiktok_privacy_level` 'public_to_everyone' | 'mutual_follow_friends' | 'follower_of_creator' | 'self_only'
    - `tiktok_allow_comment` boolean
    - `tiktok_allow_duet` boolean
    - `tiktok_allow_stitch` boolean
    - `tiktok_your_brand` boolean
    - `tiktok_branded_content` boolean
    - `pinterest_board_id` string
    - `youtube_title` string
    - `youtube_description` string
    - `youtube_privacy` 'public' | 'unlisted' | 'private'
    - `youtube_short` boolean

## Response `201`

Create posts

- object
  - `posts` object[], required

## Other responses

- `default`: The error envelope

---

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