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

# Create a post

> Schedule or publish a post for selected team accounts. Confirm content, accounts and time with the user. Reuse the same idempotencyKey for retries.

Write access: a member/administrator with a write-enabled credential, or an authorized signed-in user.

Schedule or publish a post for selected team accounts. Confirm content, accounts and time with the user. Reuse the same idempotencyKey for retries.

A future scheduledAt schedules delivery. For immediate publication, use the current timestamp after the user's confirmation. Creation acknowledges a queued request, not confirmed provider publication. Use draftSource with its current version when converting a saved draft.

MCP clients can use [`create_post`](/mcp-reference/create_post) for this operation.

[Request conventions](/api-reference/overview) · [API keys](/api-keys) · [MCP connections](/mcp-connections)


## OpenAPI

````yaml api-reference/openapi.json POST /api/posts
openapi: 3.1.0
info:
  title: Posted HTTP API
  version: 0.2.0
  description: >-
    All registered application, account, OAuth, MCP transport and health
    endpoints. Publishing and draft request schemas come from the shared runtime
    validators. Replace the example server with your installation. Documentation
    uses simple request examples and does not execute live publishing requests.
servers:
  - url: https://posted-api.example.com
security: []
paths:
  /api/posts:
    post:
      tags:
        - Posts
      summary: Create a post
      description: >-
        Schedule or publish a post for selected team accounts. Confirm content,
        accounts and time with the user. Reuse the same idempotencyKey for
        retries.


        A future scheduledAt schedules delivery. For immediate publication, use
        the current timestamp after the user's confirmation. Creation
        acknowledges a queued request, not confirmed provider publication. Use
        draftSource with its current version when converting a saved draft.


        Write access: a member/administrator with a write-enabled credential, or
        an authorized signed-in user.
      operationId: post_api_posts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  maxLength: 3000
                textOverrides:
                  default: {}
                  type: object
                  propertyNames:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  additionalProperties:
                    type: string
                    maxLength: 3000
                connectionIds:
                  minItems: 1
                  maxItems: 50
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                mediaIds:
                  maxItems: 20
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                mediaOverrides:
                  default: {}
                  type: object
                  propertyNames:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  additionalProperties:
                    maxItems: 20
                    type: array
                    items:
                      type: string
                      format: uuid
                      pattern: >-
                        ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                additionalPosts:
                  default: []
                  type: array
                  items:
                    type: object
                    properties:
                      text:
                        type: string
                        maxLength: 3000
                      textOverrides:
                        default: {}
                        type: object
                        propertyNames:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        additionalProperties:
                          type: string
                          maxLength: 3000
                      mediaIds:
                        maxItems: 20
                        type: array
                        items:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                      mediaOverrides:
                        default: {}
                        type: object
                        propertyNames:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                        additionalProperties:
                          maxItems: 20
                          type: array
                          items:
                            type: string
                            format: uuid
                            pattern: >-
                              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                    required:
                      - text
                      - mediaIds
                    additionalProperties: false
                scheduledAt:
                  type: string
                  format: date-time
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                idempotencyKey:
                  type: string
                  pattern: ^[A-Za-z0-9._:-]{8,128}$
                draftSource:
                  type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                      pattern: >-
                        ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                    version:
                      type: integer
                      exclusiveMinimum: 0
                      maximum: 9007199254740991
                  required:
                    - id
                    - version
                  additionalProperties: false
              required:
                - text
                - connectionIds
                - mediaIds
                - scheduledAt
                - idempotencyKey
              additionalProperties: false
            example:
              text: A small update from the studio.
              connectionIds:
                - 11111111-1111-4111-8111-111111111111
              mediaIds:
                - 44444444-4444-4444-8444-444444444444
              scheduledAt: '2027-01-18T09:30:00.000Z'
              idempotencyKey: studio-update-2027-01-18
      responses:
        '200':
          description: Existing operation replay or saved-draft update.
          content:
            application/json:
              schema:
                type: object
                properties:
                  post:
                    type: object
                    properties:
                      id:
                        type: string
                      text:
                        type: string
                      additionalPosts:
                        type: array
                        items: {}
                      mediaOverrides:
                        type: object
                        properties: {}
                        additionalProperties: true
                      scheduledAt:
                        type: string
                      idempotencyKey:
                        type: string
                      state:
                        type: string
                      version:
                        type: integer
                      createdAt:
                        type: string
                      media:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            fileName:
                              type: string
                            contentType:
                              type: string
                            sizeBytes:
                              type: integer
                            width:
                              type: integer
                            height:
                              type: integer
                            alt:
                              type: string
                            durationSeconds:
                              type:
                                - string
                                - 'null'
                          additionalProperties: true
                      managedBy:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          avatarUrl:
                            type:
                              - string
                              - 'null'
                        additionalProperties: true
                      deliveries:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            postIndex:
                              type: integer
                            connectionId:
                              type: string
                            provider:
                              type: string
                            accountName:
                              type: string
                            textOverride:
                              type:
                                - string
                                - 'null'
                            state:
                              type: string
                            providerPostId:
                              type:
                                - string
                                - 'null'
                            publishedUrl:
                              type:
                                - string
                                - 'null'
                            error:
                              type:
                                - string
                                - 'null'
                            publishedAt:
                              type:
                                - string
                                - 'null'
                          additionalProperties: true
                    additionalProperties: true
                additionalProperties: true
              example:
                post:
                  id: 22222222-2222-4222-8222-222222222222
                  text: A small update from the studio.
                  additionalPosts: []
                  mediaOverrides: {}
                  scheduledAt: '2027-01-18T09:30:00.000Z'
                  idempotencyKey: studio-update-2027-01-18
                  state: scheduled
                  version: 1
                  createdAt: '2027-01-18T09:30:00.000Z'
                  media:
                    - id: 44444444-4444-4444-8444-444444444444
                      fileName: studio.jpg
                      contentType: image/jpeg
                      sizeBytes: 245760
                      width: 1600
                      height: 900
                      alt: A bright studio desk beside a window
                      durationSeconds: null
                  managedBy:
                    id: 66666666-6666-4666-8666-666666666666
                    name: Alex Morgan
                    avatarUrl: null
                  deliveries:
                    - id: 77777777-7777-4777-8777-777777777777
                      postIndex: 0
                      connectionId: 11111111-1111-4111-8111-111111111111
                      provider: bluesky
                      accountName: Alex Morgan
                      textOverride: null
                      state: scheduled
                      providerPostId: null
                      publishedUrl: null
                      error: null
                      publishedAt: null
        '201':
          description: >-
            Successful response. Examples are illustrative; field values vary by
            record.
          content:
            application/json:
              schema:
                type: object
                properties:
                  post:
                    type: object
                    properties:
                      id:
                        type: string
                      text:
                        type: string
                      additionalPosts:
                        type: array
                        items: {}
                      mediaOverrides:
                        type: object
                        properties: {}
                        additionalProperties: true
                      scheduledAt:
                        type: string
                      idempotencyKey:
                        type: string
                      state:
                        type: string
                      version:
                        type: integer
                      createdAt:
                        type: string
                      media:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            fileName:
                              type: string
                            contentType:
                              type: string
                            sizeBytes:
                              type: integer
                            width:
                              type: integer
                            height:
                              type: integer
                            alt:
                              type: string
                            durationSeconds:
                              type:
                                - string
                                - 'null'
                          additionalProperties: true
                      managedBy:
                        type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          avatarUrl:
                            type:
                              - string
                              - 'null'
                        additionalProperties: true
                      deliveries:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            postIndex:
                              type: integer
                            connectionId:
                              type: string
                            provider:
                              type: string
                            accountName:
                              type: string
                            textOverride:
                              type:
                                - string
                                - 'null'
                            state:
                              type: string
                            providerPostId:
                              type:
                                - string
                                - 'null'
                            publishedUrl:
                              type:
                                - string
                                - 'null'
                            error:
                              type:
                                - string
                                - 'null'
                            publishedAt:
                              type:
                                - string
                                - 'null'
                          additionalProperties: true
                    additionalProperties: true
                additionalProperties: true
              example:
                post:
                  id: 22222222-2222-4222-8222-222222222222
                  text: A small update from the studio.
                  additionalPosts: []
                  mediaOverrides: {}
                  scheduledAt: '2027-01-18T09:30:00.000Z'
                  idempotencyKey: studio-update-2027-01-18
                  state: scheduled
                  version: 1
                  createdAt: '2027-01-18T09:30:00.000Z'
                  media:
                    - id: 44444444-4444-4444-8444-444444444444
                      fileName: studio.jpg
                      contentType: image/jpeg
                      sizeBytes: 245760
                      width: 1600
                      height: 900
                      alt: A bright studio desk beside a window
                      durationSeconds: null
                  managedBy:
                    id: 66666666-6666-4666-8666-666666666666
                    name: Alex Morgan
                    avatarUrl: null
                  deliveries:
                    - id: 77777777-7777-4777-8777-777777777777
                      postIndex: 0
                      connectionId: 11111111-1111-4111-8111-111111111111
                      provider: bluesky
                      accountName: Alex Morgan
                      textOverride: null
                      state: scheduled
                      providerPostId: null
                      publishedUrl: null
                      error: null
                      publishedAt: null
        default:
          description: >-
            Request failure. Inspect code, message and requestId; respect
            Retry-After on HTTP 429.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
        - sessionCookie: []
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - requestId
          properties:
            code:
              type: string
            message:
              type: string
            requestId:
              type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Personal or team Posted REST API key
    sessionCookie:
      type: apiKey
      in: cookie
      name: posted_session
      description: >-
        Signed-in human browser session; mutation requests also need the exact
        UI Origin

````

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