> ## Documentation Index
> Fetch the complete documentation index at: https://usenaive.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Post

> POST /v1/social/posts — Create a social post as a draft, or publish/schedule it immediately.

<ParamField body="content" type="string" required>
  The text content of the post.
</ParamField>

<ParamField body="title" type="string">
  Post title. Auto-generated from content (first 100 chars) if omitted.
</ParamField>

<ParamField body="platforms" type="string[]" required>
  Platforms to post to. e.g. `["TWITTER", "LINKEDIN"]`.
</ParamField>

<ParamField body="platform_data" type="object">
  Platform-specific overrides keyed by platform name, e.g. `{ "TWITTER": { "text": "shorter version" } }`.
</ParamField>

<ParamField body="media_urls" type="string[]">
  URLs of media to attach. The server auto-uploads each URL on publish.
</ParamField>

<ParamField body="upload_ids" type="string[]">
  IDs of previously uploaded media to attach (from `POST /v1/social/upload` or the `upload_id` field on Media Assets). When provided, skips re-uploading.
</ParamField>

<ParamField body="youtube_type" type="string">
  YouTube video type. One of `SHORT` (default) or `VIDEO`.
</ParamField>

<ParamField body="publish_now" type="boolean">
  If `true`, the post is published immediately. Default `false` (creates a draft).
</ParamField>

<ParamField body="scheduled_at" type="string">
  ISO 8601 timestamp to schedule the post for future publishing. Ignored if `publish_now` is `true`.
</ParamField>

<ParamField body="account_ids" type="string[]">
  Specific account UUIDs to post from. If omitted, posts to all connected accounts for the given platforms.
</ParamField>

<RequestExample>
  ```bash Draft theme={"theme":"css-variables"}
  curl -X POST https://api.usenaive.ai/v1/social/posts \
    -H "Authorization: Bearer nv_sk_live_..." \
    -H "Content-Type: application/json" \
    -d '{
      "content": "We just launched Naive v2 — the all-in-one API.",
      "platforms": ["TWITTER", "LINKEDIN"]
    }'
  ```

  ```bash Publish immediately theme={"theme":"css-variables"}
  curl -X POST https://api.usenaive.ai/v1/social/posts \
    -H "Authorization: Bearer nv_sk_live_..." \
    -H "Content-Type: application/json" \
    -d '{
      "content": "We just launched Naive v2 — the all-in-one API for social, email, domains, and AI media.\n\nShip entire marketing workflows with a single API key.\n\nTry it free: https://usenaive.ai",
      "platforms": ["TWITTER", "LINKEDIN"],
      "media_urls": ["https://media.usenaive.ai/social/media-uuid.png"],
      "publish_now": true
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 Draft theme={"theme":"css-variables"}
  {
    "id": "post-uuid",
    "status": "draft",
    "platforms": ["TWITTER", "LINKEDIN"],
    "hint": "Draft created. Publish with POST /v1/social/posts/post-uuid/publish"
  }
  ```

  ```json 202 Publish theme={"theme":"css-variables"}
  {
    "id": "post-uuid",
    "post_id": "post-uuid",
    "status": "publishing",
    "platforms": ["TWITTER", "LINKEDIN"],
    "scheduled_at": null,
    "hint": "Post queued for immediate publishing. Check status with GET /v1/social/posts/post-uuid"
  }
  ```

  ```json 202 Scheduled theme={"theme":"css-variables"}
  {
    "id": "post-uuid",
    "post_id": "post-uuid",
    "status": "scheduled",
    "platforms": ["TWITTER", "LINKEDIN"],
    "scheduled_at": "2026-06-01T09:00:00Z",
    "hint": "Post scheduled for 2026-06-01T09:00:00Z. Check status with GET /v1/social/posts/post-uuid"
  }
  ```
</ResponseExample>

**Cost:** 2.5 credits (+0.5 if it targets X, +5 if that X post contains a link) when publishing (immediately or scheduled). Drafts are free. The X surcharges cover X’s own per-post API charge, which is passed through to us and is far higher for posts containing a link.
