---
title: "Validate a post without saving it"
method: POST
path: "/posts/validate"
tags: ["Posts"]
---

# Validate a post without saving it

`POST /posts/validate`

## Request

- Base URL: `https://api.post-quest.com/v1`
- URL: `https://api.post-quest.com/v1/posts/validate`
- Auth: HTTP bearer

Requires `posts:write`. The transaction is rolled back and no quota or job is retained.

## Request body

- CreatePostInput
  - `caption` string, required
  - `social_account_ids` string[]
  - `platform_captions` object: Platform or `platform:<social account id>` target keys mapped to custom captions.
  - `content_pillar` string, nullable
  - `content_pillar_id` string, uuid, nullable
  - `media_ids` string[]
  - `scheduled_at` string, date-time, nullable: Must contain `Z` or an explicit UTC offset and be in the future.
  - `publish_now` boolean
  - `platform_configurations` PlatformConfigurations: On updates, submitted fields are merged into the stored settings; omitted platforms and fields keep their values.
    - `tiktok` TikTokConfiguration
      - `title` string, nullable
      - `privacy_status` 'public' | 'private' | 'null', nullable
      - `allow_comment` boolean
      - `allow_duet` boolean
      - `allow_stitch` boolean
      - `is_ai_generated` boolean
      - `disclose_video_content` boolean
      - `disclose_your_brand` boolean
      - `disclose_branded_content` boolean
    - `youtube` YouTubeConfiguration
      - `title` string, nullable
      - `category_id` '1' | '2' | '10' | '15' | '17' | '19' | '20' | '22' | '23' | '24' | '25' | '26' | '27' | '28' | '29' | 'null', nullable
      - `visibility` 'public' | 'private' | 'unlisted' | 'null', nullable
      - `license` 'youtube' | 'creativeCommon' | 'null', nullable
      - `notify_subscribers` boolean
      - `allow_embedding` boolean
      - `made_for_kids` boolean
  - `account_configurations` AccountConfigurations: Keys use `pinterest:{social_account_id}`.
  - `is_draft` boolean: Set false before scheduling or publishing from this operation.

## Response `200`

Validation result. Platform issues may be returned with a successful HTTP status.

- ValidationResult
  - `valid` boolean, required
  - `issues` ValidationIssue[], required
    - `platform` 'instagram' | 'facebook' | 'x' | 'youtube' | 'tiktok' | 'pinterest' | 'linkedin' | 'threads' | 'bluesky' | 'mastodon', required
    - `field` string, required
    - `code` string, required
    - `message` string, required
    - `blocking` boolean, required

## Other responses

- `400`: Malformed request, invalid idempotency key, or credential in the query string.
- `401`: Missing, invalid, expired, revoked, or unbound API key.
- `402`: The workspace does not have effective paid REST access.
- `403`: The key lacks an ability, onboarding is incomplete, or publish-now is disabled.
- `429`: The per-key global or media-specific request limit was exceeded.
- `500`: Unexpected server failure. Internal details are never exposed.

---

[API](https://skmtc.dev/post-quest/apis/postquest-public-api.md) · [All operations](https://skmtc.dev/post-quest/apis/postquest-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/post-quest/apis/postquest-public-api/revisions/089d3c362f35?raw)
