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

# Create post

> Schedules a post to one or more channels, or publishes it now when `publishAt` is omitted (it goes out within about a minute). With `draft: true` nothing is published: the post is saved for the user to review on the Posts page in Autoadify. Validates platform rules up front: media requirements, TikTok privacy, Reddit subreddit (the last two are optional for drafts).

Requires the `publish` scope.



## OpenAPI

````yaml /openapi.json post /posts
openapi: 3.1.0
info:
  title: Autoadify API
  version: 1.0.0
  description: >-
    Schedule and publish social posts, generate AI images and video, manage your
    media library and more.
servers:
  - url: https://api.autoadify.com/v1
security:
  - apiKey: []
tags:
  - name: Account
    description: The API key making the request.
  - name: Channels
    description: Connected social accounts.
  - name: Posts
    description: Schedule, publish and manage posts.
  - name: Media
    description: The media library.
  - name: Generation
    description: AI image and video generation, billed in credits.
paths:
  /posts:
    post:
      tags:
        - Posts
      summary: Create post
      description: >-
        Schedules a post to one or more channels, or publishes it now when
        `publishAt` is omitted (it goes out within about a minute). With `draft:
        true` nothing is published: the post is saved for the user to review on
        the Posts page in Autoadify. Validates platform rules up front: media
        requirements, TikTok privacy, Reddit subreddit (the last two are
        optional for drafts).


        Requires the `publish` scope.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePostRequest'
      responses:
        '201':
          description: The post, scheduled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        '401':
          description: Missing, invalid, expired or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            The key lacks the scope this endpoint needs (`forbidden_scope`), or
            the plan has no API access (`plan_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            The same post was created in the last 5 minutes (`duplicate_post`,
            with `details.postId`), or the plan's monthly post limit is reached
            (`limit_reached`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid body or a platform rule isn't met.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Rate limit (`rate_limited`) or monthly quota (`quota_exceeded`)
            reached. `details.resetsAt` says when to retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreatePostRequest:
      type: object
      properties:
        content:
          type: string
          minLength: 1
          maxLength: 63206
          description: >-
            The post text, used on every channel unless contentByPlatform
            overrides it.
        channelIds:
          minItems: 1
          maxItems: 20
          type: array
          items:
            type: string
          description: Channel ids from list_channels / GET /v1/channels.
        publishAt:
          description: >-
            When to publish, ISO 8601 with a UTC offset (e.g.
            2026-10-12T09:00:00+05:30). Omit to publish now (goes out within
            about a minute).
          type: string
          format: date-time
        mediaIds:
          default: []
          description: >-
            Ids of READY images or videos from the media library, in display
            order.
          maxItems: 10
          type: array
          items:
            type: string
        contentByPlatform:
          default: {}
          description: >-
            Per-platform text replacing content there, keyed by platform, e.g. {
            "X": "short version", "LINKEDIN": "long version" }.
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
            minLength: 1
            maxLength: 63206
        reddit:
          description: Required when posting to a Reddit channel.
          type: object
          properties:
            subreddit:
              type: string
              minLength: 1
              maxLength: 100
              description: Subreddit name without r/.
            title:
              description: Post title; defaults to the first line of the text.
              type: string
              maxLength: 300
          required:
            - subreddit
        tiktok:
          description: >-
            Required for TikTok unless the channel has saved posting defaults.
            privacyLevel: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS,
            FOLLOWER_OF_CREATOR or SELF_ONLY.
          type: object
          properties:
            privacyLevel:
              type: string
            allowComment:
              type: boolean
            allowDuet:
              type: boolean
            allowStitch:
              type: boolean
            brandOrganicToggle:
              type: boolean
            brandContentToggle:
              type: boolean
            videoMadeWithAi:
              type: boolean
          required:
            - privacyLevel
        draft:
          default: false
          description: >-
            Save as a draft instead of scheduling. Nothing is published: the
            user reviews, edits and schedules it on the Posts page in Autoadify.
            publishAt, if given, is kept as the suggested time. reddit and
            tiktok fields are optional for drafts.
          type: boolean
      required:
        - content
        - channelIds
    Post:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - draft
            - scheduled
            - publishing
            - published
            - failed
        content:
          type: string
        scheduledAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        publishedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        createdAt:
          type: string
          format: date-time
        source:
          type: string
          description: '"api" for posts created here, "app" for the Autoadify app.'
        channels:
          type: array
          items:
            type: object
            properties:
              channelId:
                type: string
              platform:
                type: string
              status:
                type: string
                enum:
                  - draft
                  - scheduled
                  - publishing
                  - published
                  - failed
              content:
                description: >-
                  This channel's own text, or null when it uses the post's
                  content.
                type:
                  - string
                  - 'null'
              platformPostId:
                type:
                  - string
                  - 'null'
              url:
                description: >-
                  Live post URL, when the platform's URL can't be built from
                  platformPostId.
                type:
                  - string
                  - 'null'
              publishedAt:
                anyOf:
                  - type: string
                    format: date-time
                  - type: 'null'
              error:
                description: Why this channel failed.
                type:
                  - string
                  - 'null'
            required:
              - channelId
              - platform
              - status
              - content
              - platformPostId
              - url
              - publishedAt
              - error
            additionalProperties: false
        media:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              type:
                type: string
              url:
                type:
                  - string
                  - 'null'
            required:
              - id
              - type
              - url
            additionalProperties: false
        reddit:
          type: object
          properties:
            subreddit:
              type: string
            title:
              type:
                - string
                - 'null'
          required:
            - subreddit
            - title
          additionalProperties: false
      required:
        - id
        - status
        - content
        - scheduledAt
        - publishedAt
        - createdAt
        - source
        - channels
        - media
      additionalProperties: false
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - unauthorized
                - forbidden_scope
                - plan_required
                - reauth_required
                - not_found
                - validation_failed
                - limit_reached
                - duplicate_post
                - conflict
                - rate_limited
                - quota_exceeded
                - internal_error
            message:
              type: string
              description: Human-readable; safe to show to a user.
            details:
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        An API key from Autoadify → Settings → API & MCP, sent as
        `Authorization: Bearer aak_live_…`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.