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

# Create a Twitter post

> Create a new Twitter post.

<Note>
  This endpoint has platform-specific fields and publishing rules. See the [full scheduling guide](/guides/scheduler/schedule-social-media-posts-with-the-dash-api) for a complete walkthrough including media upload, publishing modes, and examples.
</Note>

## X-specific fields

| Parameter      | Description |
| -------------- | ----------- |
| `tweet_status` | Post text   |

## Publishing modes

| Mode                | `status`         | `auto_publish`    | `timestamp`  |
| ------------------- | ---------------- | ----------------- | ------------ |
| Publish immediately | `AUTOPUBLISHING` | `true`            | Not required |
| Schedule for later  | `SCHEDULED`      | `true`            | Required     |
| Save as draft       | `DRAFT`          | `true` or `false` | Optional     |

## Example request

```json theme={null}
{
  "auto_publish": true,
  "brand_id": 144,
  "status": "SCHEDULED",
  "timestamp": "2026-03-10T15:00:00Z",
  "tweet_status": "Launching something new today 🚀"
}
```

## Notes

* Standard X posts support up to **280 characters**.
* Accounts with **X Premium** can publish posts up to **25,000 characters**.
* Caption-only posts (no media) are supported.
* Supports up to **4 images** or **1 video**. Images and videos cannot be mixed.


## OpenAPI

````yaml api-reference/scheduler-openapi.json POST /twitter/scheduled_posts
openapi: 3.0.2
info:
  contact:
    email: support@dashsocial.com
    name: Dash Hudson
    url: https://dashsocial.com
  description: >-
    Manage Scheduler content, links, analytics and more in the Dash Hudson
    platform.
  title: Dash Hudson Scheduler Backend Service
  version: 1.0.0
  x-logo:
    altText: Dash Hudson logo
    href: https://developer.dashsocial.com
    url: https://developer.dashsocial.com/assets/logo.svg
servers:
  - url: https://scheduler.dashsocial.com
security:
  - BearerAuth: []
tags:
  - description: ''
    name: approval_requests
  - description: ''
    name: bluesky
  - description: ''
    name: events
  - description: ''
    name: facebook
  - description: >-
      APIs for creating, scheduling, and retrieving posts to be shown on
      Instagram Posts.
    name: instagram
  - description: ''
    name: linkedin
  - description: ''
    name: pinterest
  - description: Endpoints for recommended publish times
    name: publish_times
  - description: ''
    name: rss_feeds
  - description: ''
    name: snapchat
  - description: ''
    name: threads
  - description: ''
    name: tiktok
  - description: ''
    name: twitter
  - description: ''
    name: youtube
paths:
  /twitter/scheduled_posts:
    post:
      tags:
        - twitter
      summary: Create a Twitter post
      description: Create a new Twitter post.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TwitterScheduledPost'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TwitterScheduledPost'
          description: Created
        '422':
          $ref: '#/components/responses/UNPROCESSABLE_ENTITY'
        default:
          $ref: '#/components/responses/DEFAULT_ERROR'
components:
  schemas:
    TwitterScheduledPost:
      properties:
        brand_id:
          description: The id of the brand to which the post belongs.
          minimum: 0
          type: integer
        auto_publish:
          description: Whether the post should be auto published.
          type: boolean
        status:
          description: The current status of the post.
          enum:
            - AUTOPUBLISHING
            - DRAFT
            - EXPIRED
            - FAILED
            - IMPORTED
            - MISSING_APPROVALS
            - PARTIALLY_FAILED
            - POSTED
            - SCHEDULED
            - SKIPPED
            - USERS_NOTIFIED
          type: string
        tweet_status:
          type: string
        media_ids:
          description: The list of the media ids attached to the post.
          items:
            minimum: 0
            type: integer
          type: array
        timestamp:
          description: The scheduled date & time for publishing the post.
          format: date-time
          nullable: true
          type: string
        replies:
          items:
            $ref: '#/components/schemas/TwitterScheduledReply'
          maxItems: 24
          type: array
        alt_text_media_map:
          description: Mapping for the alt text of each media in the post
          nullable: true
          type: object
        approval_policy:
          description: The approval policy of the approval request
          enum:
            - APPROVAL_REQUIRED
            - APPROVAL_NOT_REQUIRED
          type: string
        approval_requests:
          description: The list of approval requests associated with the post.
          items:
            $ref: '#/components/schemas/ApprovalRequest'
          type: array
        approval_status:
          description: The approval status of the post.
          readOnly: true
          type: string
        auto_numbering_enabled:
          type: boolean
        auto_publish_error:
          enum:
            - ACCOUNT_RESTRICTED
            - AGAINST_COMMUNITY_STANDARDS
            - APPROVED_PUBLISHING_DATES_HAVE_NO_OVERLAP
            - AUTO_PUBLISH_LIMIT_EXCEEDED
            - DUPLICATE_POST
            - FLAGGED_AS_SPAM
            - INTERNAL
            - INVALID_ACCOUNT_TYPE
            - INVALID_AUTH
            - INVALID_DESCRIPTION
            - INVALID_IMAGE
            - INVALID_PIN_BOARD
            - INVALID_PRODUCT_TAGS
            - INVALID_TARGETING
            - INVALID_TITLE
            - INVALID_VIDEO_THUMBNAIL
            - MEDIA_CONTAINER_EXPIRED
            - MISSING_AUTH
            - OUTSIDE_OF_APPROVED_PUBLISHING_DATES
            - PAGE_PUBLISHING_AUTH_REQUIRED
            - PLATFORM_ERROR
            - REJECTED
            - TEXT_LENGTH_EXCEEDED
          readOnly: true
          type: string
        board_ids:
          description: The list of the board ids associated with the post.
          items:
            minimum: 0
            type: integer
          type: array
        callback_socket_id:
          type: string
        campaign_ids:
          description: The list of the campaign ids associated with the post.
          items:
            minimum: 0
            type: integer
          type: array
        content_tag_ids:
          description: The list of the content tag ids associated with the post.
          items:
            minimum: 0
            type: integer
          type: array
        created_at:
          description: The time when the post was created.
          format: date-time
          readOnly: true
          type: string
        creation_source:
          description: To identify the user or the application that created the post.
          enum:
            - RSS_FEED
          type: string
        duplicate_to_brand_ids:
          description: The list of duplicate to brand ids.
          items:
            minimum: 0
            type: integer
          maxItems: 55
          type: array
          writeOnly: true
        has_scheduled_time:
          description: Indicates if the post has a scheduled timestamp
          readOnly: true
          type: boolean
        id:
          description: A unique id for the post.
          minimum: 0
          readOnly: true
          type: integer
        live_post_url:
          description: Link to the live published post.
          format: url
          readOnly: true
          type: string
        media:
          description: The list of media attached to the post.
          items:
            type: object
          readOnly: true
          type: array
        num_of_approvals_required:
          description: The number of approvals required to approve the request.
          readOnly: true
          type: integer
        permalink:
          description: Link to the live published post
          nullable: true
          readOnly: true
          type: string
        post_group_id:
          description: The id of the post group associated with the post.
          format: uuid
          type: string
        rss_feed_id:
          description: Foreign key reference to the RSS feed table.
          nullable: true
          type: integer
        rss_guid:
          description: The unique identifier coming from RSS Feed.
          nullable: true
          type: string
        rss_publish_date:
          description: The timestamp of when an RSS feed item was published
          format: date-time
          nullable: true
          type: string
        sort_index:
          description: The sorted index for unscheduled posts.
          type: number
        source_id:
          nullable: true
          readOnly: true
          type: string
        subtitle_content:
          description: Raw SRT subtitle file content as text
          nullable: true
          type: string
        subtitle_error_message:
          description: Error message if subtitle upload failed
          nullable: true
          readOnly: true
          type: string
        subtitle_metadata:
          allOf:
            - $ref: '#/components/schemas/SubtitleMetadata'
          description: Subtitle metadata including language code and filename
          nullable: true
          type: object
        subtitle_upload_status:
          description: 'Computed status: SUCCESS if no error, FAILED if error exists'
          nullable: true
          readOnly: true
          type: string
        updated_at:
          description: The time when the post was last updated.
          format: date-time
          readOnly: true
          type: string
      type: object
    TwitterScheduledReply:
      properties:
        alt_text_media_map:
          description: Mapping for the alt text of each media in the post
          nullable: true
          type: object
        approval_policy:
          description: The approval policy of the approval request
          enum:
            - APPROVAL_REQUIRED
            - APPROVAL_NOT_REQUIRED
          type: string
        approval_requests:
          description: The list of approval requests associated with the post.
          items:
            $ref: '#/components/schemas/ApprovalRequest'
          type: array
        approval_status:
          description: The approval status of the post.
          readOnly: true
          type: string
        auto_publish:
          description: Whether the post should be auto published.
          type: boolean
        auto_publish_error:
          enum:
            - ACCOUNT_RESTRICTED
            - AGAINST_COMMUNITY_STANDARDS
            - APPROVED_PUBLISHING_DATES_HAVE_NO_OVERLAP
            - AUTO_PUBLISH_LIMIT_EXCEEDED
            - DUPLICATE_POST
            - FLAGGED_AS_SPAM
            - INTERNAL
            - INVALID_ACCOUNT_TYPE
            - INVALID_AUTH
            - INVALID_DESCRIPTION
            - INVALID_IMAGE
            - INVALID_PIN_BOARD
            - INVALID_PRODUCT_TAGS
            - INVALID_TARGETING
            - INVALID_TITLE
            - INVALID_VIDEO_THUMBNAIL
            - MEDIA_CONTAINER_EXPIRED
            - MISSING_AUTH
            - OUTSIDE_OF_APPROVED_PUBLISHING_DATES
            - PAGE_PUBLISHING_AUTH_REQUIRED
            - PLATFORM_ERROR
            - REJECTED
            - TEXT_LENGTH_EXCEEDED
          readOnly: true
          type: string
        content_tag_ids:
          description: The list of the content tag ids associated with the post.
          items:
            minimum: 0
            type: integer
          type: array
        created_at:
          description: The time when the post was created.
          format: date-time
          readOnly: true
          type: string
        creation_source:
          description: To identify the user or the application that created the post.
          enum:
            - RSS_FEED
          type: string
        duplicate_to_brand_ids:
          description: The list of duplicate to brand ids.
          items:
            minimum: 0
            type: integer
          maxItems: 55
          type: array
          writeOnly: true
        has_scheduled_time:
          description: Indicates if the post has a scheduled timestamp
          readOnly: true
          type: boolean
        id:
          description: ID of the reply
          minimum: 0
          type: integer
        live_post_url:
          description: Link to the live published post.
          format: url
          readOnly: true
          type: string
        media:
          description: The list of media attached to the post.
          items:
            type: object
          readOnly: true
          type: array
        media_ids:
          description: The list of the media ids attached to the post.
          items:
            minimum: 0
            type: integer
          type: array
        num_of_approvals_required:
          description: The number of approvals required to approve the request.
          readOnly: true
          type: integer
        permalink:
          description: Link to the live published post
          nullable: true
          readOnly: true
          type: string
        post_group_id:
          description: The id of the post group associated with the post.
          format: uuid
          type: string
        sort_index:
          description: The sorted index for unscheduled posts.
          type: number
        source_id:
          nullable: true
          readOnly: true
          type: string
        status:
          description: The current status of the reply.
          enum:
            - DRAFT
            - SCHEDULED
            - AUTOPUBLISHING
            - USERS_NOTIFIED
            - POSTED
            - IMPORTED
            - EXPIRED
            - FAILED
            - SKIPPED
            - PARTIALLY_FAILED
            - MISSING_APPROVALS
          readOnly: true
        subtitle_content:
          description: Raw SRT subtitle file content as text
          nullable: true
          type: string
        subtitle_error_message:
          description: Error message if subtitle upload failed
          nullable: true
          readOnly: true
          type: string
        subtitle_metadata:
          allOf:
            - $ref: '#/components/schemas/SubtitleMetadata'
          description: Subtitle metadata including language code and filename
          nullable: true
          type: object
        subtitle_upload_status:
          description: 'Computed status: SUCCESS if no error, FAILED if error exists'
          nullable: true
          readOnly: true
          type: string
        thread_order:
          description: >-
            A number used to indicate the order of a parent tweet's replies,
            where the lowest value is the first reply in the thread.
          type: number
        tweet_status:
          type: string
        updated_at:
          description: The time when the post was last updated.
          format: date-time
          readOnly: true
          type: string
      type: object
    ApprovalRequest:
      properties:
        approval_status:
          description: The status of the approval request.
          enum:
            - PENDING
            - APPROVED
            - UNASSIGNED
          readOnly: true
          type: string
        brand_id:
          description: ID of the brand to which the approval request belongs to
          readOnly: true
          type: integer
        created_at:
          description: The time when the approval request was created.
          format: date-time
          readOnly: true
          type: string
        deleted_at:
          description: The time when the approval request was deleted.
          format: date-time
          readOnly: true
          type: string
        id:
          description: The unique ID of the approval request record.
          readOnly: true
          type: integer
        post_id:
          description: The ID of the post to which the approval request belongs to.
          readOnly: true
          type: integer
        post_platform:
          description: The platform for which the approval belongs to.
          enum:
            - instagram
            - facebook
            - tiktok
            - pinterest
            - twitter
            - linkedin
            - bluesky
            - threads
            - youtube
            - snapchat
          readOnly: true
          type: string
        requested_by_user_id:
          description: The user who requested the approval.
          type: integer
        review_user_id:
          description: The user who is being asked to approve the request.
          type: integer
        updated_at:
          description: The time when the approval request was last updated.
          format: date-time
          readOnly: true
          type: string
      type: object
    SubtitleMetadata:
      properties:
        filename:
          description: Original filename of the subtitle file
          type: string
        language_code:
          description: 'Language code for subtitle (BCP-47 format: en, fr-CA, en-GB)'
          enum:
            - af
            - ar
            - ay
            - az
            - be
            - bg
            - bn
            - bs
            - ca
            - ceb
            - chr
            - cs
            - cy
            - da
            - de
            - el
            - en
            - en-GB
            - en-IN
            - eo
            - es
            - es-419
            - et
            - eu
            - fa
            - fi
            - fil
            - fo
            - fr
            - fr-CA
            - fy
            - ga
            - gl
            - gn
            - grc
            - gu
            - hi
            - hr
            - hu
            - hy
            - id
            - is
            - it
            - iw
            - ja
            - jv
            - ka
            - kk
            - km
            - kn
            - ko
            - ku
            - la
            - li
            - lt
            - lv
            - mg
            - mk
            - ml
            - mn
            - mr
            - ms
            - mt
            - ne
            - nl
            - 'no'
            - pa
            - pl
            - ps
            - pt
            - pt-PT
            - qu
            - rm
            - ro
            - ru
            - sa
            - se
            - sk
            - sl
            - so
            - sq
            - sr
            - sv
            - sw
            - syr
            - ta
            - te
            - tg
            - th
            - tr
            - tt
            - uk
            - ur
            - uz
            - vi
            - xh
            - yi
            - zh-CN
            - zh-HK
            - zh-TW
            - zu
          type: string
      required:
        - language_code
      type: object
    Error:
      properties:
        code:
          description: Error code
          type: integer
        errors:
          description: Errors
          type: object
        message:
          description: Error message
          type: string
        status:
          description: Error name
          type: string
      type: object
  responses:
    UNPROCESSABLE_ENTITY:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Unprocessable Entity
    DEFAULT_ERROR:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Default error response
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key from Dash Social developer settings

````