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

# Create a post

`POST /v1/posts/create`

## Request

- Base URL: `https://www.postquick.ai/api`
- URL: `https://www.postquick.ai/api/v1/posts/create`
- Auth: HTTP bearer

Manually create a post with your own content. Supports text, image, and carousel post types. Media URLs must be publicly accessible.

For video / Reels (TikTok, YouTube, Instagram Reels, Facebook Reels, X, Threads, LinkedIn), use POST /v1/videos instead — postType="video" is not accepted here.

Attaching a raw file you have inline (e.g. a file the user uploaded to Claude/ChatGPT): first call `uploadImage` with the base64 `data` to get a public `imageUrl`, then pass that here. Posting an existing image already on the web works too — call `uploadImage` with `sourceUrl` first so the URL ends up on a TikTok-whitelisted domain.

## Request body

- object
  - `contentGroupId` string, required: Content group (app) that owns this post
  - `content` string, required: Post body text / caption
  - `postType` 'text' | 'image' | 'carousel', required
  - `platforms` string[]
  - `imageUrl` string, uri: Required for postType=image
  - `imageUrls` string[]: Required for postType=carousel. Per-platform image limits apply: X/Twitter 4, Threads 20.
  - `isDraft` boolean: Save as draft instead of pending. Default false.
  - `scheduledFor` string, date-time: ISO 8601 timestamp for scheduling
  - `linkedinTarget` object: LinkedIn publishing target
    - `type` 'personal' | 'organization', required
    - `organizationId` string
  - `facebookTarget` object: Facebook page publishing target
    - `pageId` string, required
    - `pageName` string
  - `threadParts` object[]: Reply-based thread parts for twitter_x / threads / bluesky. Minimum 2. Other platforms only post the first part.
    - `text` string, required
    - `image_urls` string[]
    - `video_url` string, uri
    - `post_type` 'text' | 'image' | 'carousel' | 'video'

## Response `201`

Post created.

- object
  - `success` true, required
  - `data` object, required
    - `post` object, required: A social media post record
      - `id` string, required
      - `app_id` string, required
      - `content` string, required
      - `status` 'pending' | 'draft' | 'scheduled' | 'processing' | 'posted' | 'published' | 'partial' | 'failed', required: Post lifecycle status. `partial` indicates at least one targeted platform succeeded and at least one failed — check `platform_errors` for the per-platform breakdown.
      - `post_type` 'text' | 'image' | 'carousel' | 'video', required: Post content type
      - `platforms` string[], nullable, required
      - `posted_platforms` string[], nullable, required
      - `image_url` string, nullable, required
      - `image_urls` string[], nullable, required
      - `video_url` string, nullable, required
      - `scheduled_for` string, date-time, nullable, required
      - `posted_at` string, date-time, nullable, required
      - `thread_parts` object[], nullable, required
        - `text` string, required
        - `image_urls` string[]
        - `video_url` string, uri
        - `post_type` 'text' | 'image' | 'carousel' | 'video'
      - `linkedin_target` object, nullable, required: LinkedIn publishing target
        - `type` 'personal' | 'organization', required
        - `organizationId` string
      - `facebook_target` object, nullable, required: Facebook page publishing target
        - `pageId` string, required
        - `pageName` string
      - `platform_post_ids` object, nullable, required
      - `error_message` string, nullable, required
      - `platform_errors` object, nullable, required: Per-platform error messages keyed by platform name. Populated when `status` is `partial` or `failed`.
      - `is_manual` boolean, nullable, required
      - `created_at` string, date-time
      - `updated_at` string, date-time

---

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