> ## 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 an Instagram post

> Create a new Instagram 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>

## Instagram-specific fields

| Parameter       | Description                                                       |
| --------------- | ----------------------------------------------------------------- |
| `post_type`     | **Required.** `FEED`, `STORY`, or `REEL`                          |
| `caption`       | Post caption text                                                 |
| `first_comment` | Optional first comment (not supported when `auto_publish: false`) |

## 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",
  "caption": "Launching our new product today!",
  "first_comment": "Let us know what you think 👇",
  "media_ids": [621242772],
  "post_type": "FEED",
  "timestamp": "2026-03-10T15:00:00Z"
}
```

## Notes

* `post_type` determines whether the post is a `FEED`, `STORY`, or `REEL`.
* `first_comment` is not supported when `auto_publish` is `false`.
* Auto-publish posts must include `media_ids`.
* `POST`, `REEL`, and `STORY` drafts can be created without media.
* Instagram Post supports up to **10 media items** (images and videos mixed). Reels support **1 video**. Stories support **1 item** for auto-publish.


## OpenAPI

````yaml api-reference/scheduler-openapi.json POST /instagram/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:
  /instagram/scheduled_posts:
    post:
      tags:
        - instagram
      summary: Create an Instagram post
      description: Create a new Instagram post.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstagramScheduledPost'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstagramScheduledPost'
          description: Created
        '422':
          $ref: '#/components/responses/UNPROCESSABLE_ENTITY'
        default:
          $ref: '#/components/responses/DEFAULT_ERROR'
components:
  schemas:
    InstagramScheduledPost:
      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
        post_type:
          description: Type of Instagram Post to be published.
          enum:
            - FEED
            - STORY
            - REEL
        caption:
          description: Text content of the post.
          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
        first_comment:
          description: The first comment to be auto published for the post.
          type: string
        story_link:
          description: Link to be added to the post when publishing natively.
          format: url
          nullable: true
          type: string
        share_to_feed:
          description: Whether a Reel should be published to the Instagram Feed.
          nullable: true
          type: boolean
        user_tags:
          description: >-
            Array of public usernames and x/y coordinates for any public
            Instagram users to be tagged in an image.
          items:
            $ref: '#/components/schemas/InstagramUserTag'
          type: array
        collaborators:
          description: List of collaborators to be auto published with the post.
          items:
            $ref: '#/components/schemas/InstagramUserTagCollaborator'
          type: array
        cover_image_media_id:
          description: The ID of the media which will be published as a Reel cover image.
          nullable: true
          type: integer
        location_id:
          description: Facebook ID of the location tagged in the post
          nullable: true
          type: string
        alt_text_media_map:
          description: Mapping for the alt text of 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_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:
          description: Used to update the post in the DH user interface.
          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
        cover_image_media:
          description: The media to be published as a Reel cover image.
          readOnly: true
          type: object
        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
        first_comment_status:
          enum:
            - SUCCESS
            - FAILED
          readOnly: true
          type: string
        has_invalid_product_tags:
          description: Identifies a post that was unable to be published with product tags.
          readOnly: true
          type: boolean
        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
        invalid_collaborators:
          description: Collaborators that failed to be auto published with the post.
          items:
            type: string
          readOnly: true
          type: array
        invalid_location:
          allOf:
            - $ref: '#/components/schemas/InstagramLocation'
          description: Location that failed to be auto published with the post.
          readOnly: true
        invalid_user_tags:
          description: User tags that failed to be auto published with the post.
          items:
            type: string
          readOnly: true
          type: array
        live_post_url:
          description: Link to the live published post.
          format: url
          readOnly: true
          type: string
        location:
          allOf:
            - $ref: '#/components/schemas/InstagramLocation'
          description: Location data fetched from Meta API by location_id
          readOnly: true
        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
        post_group_id:
          description: The id of the post group associated with the post.
          format: uuid
          type: string
        shopping_tags:
          description: List of shopping tags to be auto published with the post.
          items:
            $ref: '#/components/schemas/InstagramShoppingTag'
          type: array
        sort_index:
          description: The sorted index for unscheduled posts.
          type: number
        source_id:
          nullable: true
          readOnly: true
          type: string
        thumb_offset:
          description: >-
            Location in milliseconds of the video frame to be used as the
            published cover thumbnail image.
          nullable: true
          type: integer
        thumbnail_url:
          description: Image URL to be displayed as a thumbnail in the DH user interface.
          format: url
          nullable: true
          type: string
        updated_at:
          description: The time when the post was last updated.
          format: date-time
          readOnly: true
          type: string
      required:
        - post_type
      type: object
    InstagramUserTag:
      properties:
        media_id:
          default: null
          description: ID of the media item to tag the user in.
          nullable: true
          type: integer
        tag_type:
          description: Type of the InstagramUserTag.
          enum:
            - COLLABORATOR
            - MEDIA_TAG
        username:
          description: Public Instagram username.
          maxLength: 30
          type: string
        x:
          description: X coordinate of the user tag on the media. Must be between 0.0-1.0.
          maximum: 1
          minimum: 0
          type: number
        'y':
          description: Y coordinate of the user tag on the media. Must be between 0.0-1.0.
          maximum: 1
          minimum: 0
          type: number
      required:
        - username
      type: object
    InstagramUserTagCollaborator:
      properties:
        tag_type:
          description: Type of the InstagramUserTag.
          enum:
            - COLLABORATOR
            - MEDIA_TAG
        username:
          description: Public Instagram username.
          maxLength: 30
          type: string
      required:
        - username
      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
    InstagramLocation:
      properties:
        id:
          description: The ID of a Facebook location.
          type: string
        is_verified:
          description: Determines if this is a Facebook verified location.
          type: boolean
        link:
          description: Link to the Facebook location.
          type: string
        location:
          description: >-
            Data object of information related to the Facebook location. Can
            include street, province, country, etc.
          type: object
        name:
          description: Name of Facebook location.
          type: string
      type: object
    InstagramShoppingTag:
      properties:
        catalog_id:
          description: Facebook Catalog ID of the product.
          type: string
        fb_product_id:
          description: ID of the Facebook Product.
          type: string
        image_url:
          description: Link to the product image.
          type: string
        media_id:
          default: null
          description: ID of the media item to tag the product in.
          nullable: true
          type: integer
        title:
          description: Title of the product.
          type: string
        x:
          description: >-
            X coordinate of the product tag on the media. Must be between
            0.0-1.0.
          maximum: 1
          minimum: 0
          type: number
        'y':
          description: >-
            Y coordinate of the product tag on the media. Must be between
            0.0-1.0.
          maximum: 1
          minimum: 0
          type: number
      required:
        - fb_product_id
        - x
        - 'y'
      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

````