---
title: "Publish a post"
method: POST
path: "/api/v1/posts"
tags: ["Posts"]
---

# Publish a post

`POST /api/v1/posts`

## Request

- Base URL: `https://app.tryadeli.com`
- URL: `https://app.tryadeli.com/api/v1/posts`
- Auth: HTTP bearer

Publish to Instagram, Facebook, TikTok, YouTube, X, or Bluesky. Instagram JSON supports images, Reels, Stories, and mixed image/video carousels; Reel, Story, and carousel video can be base64 MP4 or a public HTTPS URL. Send `multipart/form-data` only for TikTok uploads on this shared endpoint.

## Request body

- union
  - object
    - `platform` 'instagram', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `caption` string
    - `collaborators` string[]
    - `isAiGenerated` boolean
    - `image` object, required
      - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
      - `altText` string
      - `userTags` object[]
        - `username` string, required
        - `x` number, required
        - `y` number, required
  - object
    - `platform` 'instagram', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `caption` string
    - `collaborators` string[]
    - `isAiGenerated` boolean
    - `images` object[], required
      - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
      - `altText` string
      - `userTags` object[]
        - `username` string, required
        - `x` number, required
        - `y` number, required
  - object
    - `platform` 'instagram', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `caption` string
    - `collaborators` string[]
    - `isAiGenerated` boolean
    - `reel` union, required
      - object
        - `contentType` 'video/mp4', required
        - `base64` string, required
        - `userTags` object[]
          - `username` string, required
        - `thumbOffsetMs` integer
      - object
        - `url` string, uri, required
        - `userTags` object[]
          - `username` string, required
        - `thumbOffsetMs` integer
    - `shareToFeed` boolean
  - object
    - `platform` 'instagram', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `story` union, required
      - object
        - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
        - `base64` string, required
        - `userTags` object[]
          - `username` string, required
          - `x` number
          - `y` number
      - object
        - `contentType` 'video/mp4', required
        - `base64` string, required
        - `userTags` object[]
          - `username` string, required
          - `x` number
          - `y` number
      - object
        - `url` string, uri, required
        - `userTags` object[]
          - `username` string, required
          - `x` number
          - `y` number
    - `isAiGenerated` boolean
  - object
    - `platform` 'instagram', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `caption` string
    - `collaborators` string[]
    - `isAiGenerated` boolean
    - `carousel` union[], required
      - union
        - object
          - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
          - `base64` string, required
          - `altText` string
          - `userTags` object[]
            - `username` string, required
            - `x` number, required
            - `y` number, required
        - object
          - `contentType` 'video/mp4', required
          - `base64` string, required
          - `userTags` object[]
            - `username` string, required
          - `thumbOffsetMs` integer
        - object
          - `url` string, uri, required
          - `userTags` object[]
            - `username` string, required
          - `thumbOffsetMs` integer
  - object
    - `platform` 'facebook', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `message` string
    - `image` object, required
      - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
  - object
    - `platform` 'facebook', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `message` string
    - `images` object[], required
      - `contentType` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
  - object
    - `platform` 'facebook', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `message` string
    - `reel` object, required
      - `contentType` 'video/mp4', required
      - `base64` string, required
  - object
    - `platform` 'facebook', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `message` string
    - `video` object, required
      - `contentType` 'video/mp4', required
      - `base64` string, required
    - `title` string
  - object
    - `platform` 'tiktok', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `post_mode` 'DIRECT_POST' | 'MEDIA_UPLOAD'
    - `tiktok_title` string
    - `tiktok_description` string
    - `privacy_level` 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY'
    - `disable_comment` boolean
    - `disable_duet` boolean
    - `disable_stitch` boolean
    - `cover_timestamp` integer
    - `photo_cover_index` integer
    - `auto_add_music` boolean
    - `is_aigc` boolean
    - `brand_content_toggle` boolean
    - `brand_organic_toggle` boolean
    - `music_usage_confirmed` true, required
    - `video` union
      - object
        - `content_type` 'video/mp4', required
        - `base64` string, required
      - object
        - `url` string, uri, required
    - `photos` object[]
      - `content_type` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
  - object
    - `platform` 'youtube', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `title` string, required
    - `description` string
    - `tags` string[]
    - `category_id` string
    - `privacy_status` 'public' | 'unlisted' | 'private', required
    - `made_for_kids` boolean, required
    - `contains_synthetic_media` boolean
    - `publish_at` string, date-time
    - `notify_subscribers` boolean
    - `video` union, required
      - object
        - `url` string, uri, required
      - object
        - `content_type` 'video/mp4' | 'video/quicktime' | 'video/webm', required
        - `base64` string, required
  - object
    - `platform` 'x', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `text` string, required
    - `media` union[]
      - union
        - object
          - `content_type` 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif' | 'video/mp4', required
          - `base64` string, required
        - object
          - `url` string, uri, required
    - `thread` object[]
      - `text` string, required
      - `media` union[]
        - union
          - object
            - `content_type` 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif' | 'video/mp4', required
            - `base64` string, required
          - object
            - `url` string, uri, required
  - object
    - `platform` 'bluesky', required
    - `accountId` string, uuid, required
    - `profileId` string, uuid
    - `text` string, required
    - `images` object[]
      - `content_type` 'image/jpeg' | 'image/png' | 'image/webp', required
      - `base64` string, required
      - `altText` string
    - `video` union
      - object
        - `content_type` 'video/mp4', required
        - `base64` string, required
        - `altText` string
      - object
        - `url` string, uri, required
        - `altText` string
    - `langs` string[]
    - `thread` object[]
      - `text` string, required
      - `images` object[]
        - `content_type` 'image/jpeg' | 'image/png' | 'image/webp', required
        - `base64` string, required
        - `altText` string
      - `video` union
        - object
          - `content_type` 'video/mp4', required
          - `base64` string, required
          - `altText` string
        - object
          - `url` string, uri, required
          - `altText` string

## Response `201`

Success

- object

## Other responses

- `202`: Accepted: the platform is still processing the media. Poll the matching status endpoint.
- `400`: Invalid request, or no profile named
- `401`: Missing or invalid API key
- `403`: The connection is healthy but lacks a permission or provider-confirmed resource this feature requires. Restart OAuth using the structured guidance.
- `404`: Profile, account, or object not found
- `422`: The connected account cannot do this because credentials expired or the platform is unsupported
- `502`: The platform's API failed

---

[API](https://skmtc.dev/tryadeli/apis/adeli-api.md) · [All operations](https://skmtc.dev/tryadeli/apis/adeli-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tryadeli/apis/adeli-api/revisions/7b8012dc8477?raw)
