---
canonical_url: "https://docs.composio.dev/toolkits/upload_post"
markdown_url: "https://docs.composio.dev/toolkits/upload_post.md"
product: "platform"
version: null
last_updated: null
---

# Upload-Post

Upload-Post publishes, schedules, and manages content across social networks through one API.

- **Category:** social media marketing
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 12
- **Triggers:** 0
- **Slug:** `UPLOAD_POST`
- **Version:** 00000000_00

## Tools

### Cancel Scheduled Post

**Slug:** `UPLOAD_POST_CANCEL_SCHEDULED_POST`

Permanently cancel a scheduled post before publication and delete its staged assets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | Yes | Job ID returned by SCHEDULE_POST, ENQUEUE_POST, or LIST_SCHEDULED_POSTS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Profile

**Slug:** `UPLOAD_POST_CREATE_PROFILE`

Create an Upload-Post profile for a unique caller-owned username; this does not connect any social platform.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `username` | string | Yes | Unique stable profile identifier from the caller's system; reuse it as profile_username when publishing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Enqueue Post

**Slug:** `UPLOAD_POST_ENQUEUE_POST`

Insert one video, photo carousel, or text post into a profile's external publication queue.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Post title or primary text. Required for text posts and for media platforms that require a title. |
| `video` | string | No | Video file reference or public URL. Required only for a video post. |
| `photos` | array | No | Media files in carousel order. Instagram and Threads support mixed image/video carousels. Required only for a photo post. |
| `platforms` | array | Yes | Connected platform slugs compatible with content_type. Video supports tiktok, instagram, linkedin, youtube, facebook, x, threads, pinterest, bluesky, reddit, google_business, discord, and telegram. Photos support the same set except youtube. Text supports linkedin, x, facebook, threads, reddit, bluesky, google_business, discord, and telegram. TikTok publishing requires a paid plan. |
| `subreddit` | string | No | Target subreddit name without the r/ prefix. |
| `description` | string | No | Optional post caption or extended body text. |
| `content_type` | string ("video" | "photos" | "text") | Yes | Post format; selects the video, photo carousel, or text publishing endpoint. |
| `first_comment` | string | No | First comment for platforms that support one. |
| `idempotency_key` | string | No | Caller-generated unique key that makes retries return the existing upload instead of creating a duplicate. |
| `facebook_page_id` | string | No | Facebook Page destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `linkedin_page_id` | string | No | LinkedIn organization destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `profile_username` | string | Yes | Existing Upload-Post profile username whose connected accounts publish the post. |
| `max_posts_per_slot` | integer | No | Optional queue slot capacity override (1-100). |
| `pinterest_board_id` | string | No | Pinterest board ID returned by LIST_PLATFORM_DESTINATIONS. |
| `google_business_location_id` | string | No | Google Business location name or ID returned by LIST_PLATFORM_DESTINATIONS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Upload Status

**Slug:** `UPLOAD_POST_GET_UPLOAD_STATUS`

Get the processing status and per-platform results for an asynchronous or scheduled upload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | string | No | Job ID returned by SCHEDULE_POST, ENQUEUE_POST, or LIST_SCHEDULED_POSTS; provide at least one identifier. |
| `request_id` | string | No | Asynchronous request ID returned by PUBLISH_POST; provide at least one identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Cached Post Analytics

**Slug:** `UPLOAD_POST_LIST_CACHED_POST_ANALYTICS`

Return one page of cached per-post analytics for a profile without consuming the live platform-analytics request limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum analytics snapshots in this page (1-200). |
| `since` | string | No | Inclusive snapshot start date; defaults upstream to the trailing 30-day range. |
| `until` | string | No | Inclusive snapshot end date. |
| `platform` | string ("instagram" | "tiktok" | "youtube" | "facebook" | "linkedin" | "threads" | "pinterest" | "reddit" | "x" | "bluesky") | No | Optional connected platform slug to filter analytics snapshots. |
| `next_cursor` | string | No | Opaque continuation cursor returned by a previous call; omit for the first page. |
| `profile_username` | string | Yes | Upload-Post profile username. An empty result does not prove the profile exists; verify it with LIST_PROFILES when needed. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Platform Destinations

**Slug:** `UPLOAD_POST_LIST_PLATFORM_DESTINATIONS`

List selectable Facebook Pages, LinkedIn organizations, Pinterest boards, or Google Business locations for an already connected profile.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `platform` | string ("facebook" | "linkedin" | "pinterest" | "google_business") | Yes | Connected platform whose publish destinations to list. |
| `profile_username` | string | No | Profile to inspect when the account has multiple profiles; omit only when Upload-Post can resolve the account unambiguously. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Profiles

**Slug:** `UPLOAD_POST_LIST_PROFILES`

List Upload-Post profiles and their connected social accounts. Use this before publishing to verify the profile exists and inspect platform connection or reauthentication prerequisites.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Scheduled Posts

**Slug:** `UPLOAD_POST_LIST_SCHEDULED_POSTS`

Return one page of pending scheduled posts and the job IDs needed to edit or cancel them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of scheduled posts to return in this page. |
| `next_cursor` | string | No | Opaque continuation cursor returned by a previous call; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Upload History

**Slug:** `UPLOAD_POST_LIST_UPLOAD_HISTORY`

Return one page of past and in-progress Upload-Post uploads, including platform post IDs, URLs, request IDs, and failures.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer ("10" | "20" | "50" | "100") | No | Maximum history records in this page. Upload-Post accepts only 10, 20, 50, or 100. |
| `next_cursor` | string | No | Opaque continuation cursor from a previous call; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Publish Post

**Slug:** `UPLOAD_POST_PUBLISH_POST`

Immediately publish one video, photo carousel, or text post to external connected platforms.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Post title or primary text. Required for text posts and for media platforms that require a title. |
| `video` | string | No | Video file reference or public URL. Required only for a video post. |
| `photos` | array | No | Media files in carousel order. Instagram and Threads support mixed image/video carousels. Required only for a photo post. |
| `platforms` | array | Yes | Connected platform slugs compatible with content_type. Video supports tiktok, instagram, linkedin, youtube, facebook, x, threads, pinterest, bluesky, reddit, google_business, discord, and telegram. Photos support the same set except youtube. Text supports linkedin, x, facebook, threads, reddit, bluesky, google_business, discord, and telegram. TikTok publishing requires a paid plan. |
| `subreddit` | string | No | Target subreddit name without the r/ prefix. |
| `description` | string | No | Optional post caption or extended body text. |
| `async_upload` | boolean | No | Return a request ID immediately and publish in the background. A long synchronous upload may also fall back to async. |
| `content_type` | string ("video" | "photos" | "text") | Yes | Post format; selects the video, photo carousel, or text publishing endpoint. |
| `first_comment` | string | No | First comment for platforms that support one. |
| `idempotency_key` | string | No | Caller-generated unique key that makes retries return the existing upload instead of creating a duplicate. |
| `facebook_page_id` | string | No | Facebook Page destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `linkedin_page_id` | string | No | LinkedIn organization destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `profile_username` | string | Yes | Existing Upload-Post profile username whose connected accounts publish the post. |
| `pinterest_board_id` | string | No | Pinterest board ID returned by LIST_PLATFORM_DESTINATIONS. |
| `google_business_location_id` | string | No | Google Business location name or ID returned by LIST_PLATFORM_DESTINATIONS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Schedule Post

**Slug:** `UPLOAD_POST_SCHEDULE_POST`

Schedule one video, photo carousel, or text post for future external publication to connected platforms.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Post title or primary text. Required for text posts and for media platforms that require a title. |
| `video` | string | No | Video file reference or public URL. Required only for a video post. |
| `photos` | array | No | Media files in carousel order. Instagram and Threads support mixed image/video carousels. Required only for a photo post. |
| `timezone` | string | No | IANA timezone used to interpret a timezone-naive scheduled_date, for example America/New_York. |
| `platforms` | array | Yes | Connected platform slugs compatible with content_type. Video supports tiktok, instagram, linkedin, youtube, facebook, x, threads, pinterest, bluesky, reddit, google_business, discord, and telegram. Photos support the same set except youtube. Text supports linkedin, x, facebook, threads, reddit, bluesky, google_business, discord, and telegram. TikTok publishing requires a paid plan. |
| `subreddit` | string | No | Target subreddit name without the r/ prefix. |
| `description` | string | No | Optional post caption or extended body text. |
| `content_type` | string ("video" | "photos" | "text") | Yes | Post format; selects the video, photo carousel, or text publishing endpoint. |
| `first_comment` | string | No | First comment for platforms that support one. |
| `scheduled_date` | string | Yes | Future publication time no more than 365 days ahead. |
| `idempotency_key` | string | No | Caller-generated unique key that makes retries return the existing upload instead of creating a duplicate. |
| `facebook_page_id` | string | No | Facebook Page destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `linkedin_page_id` | string | No | LinkedIn organization destination ID returned by LIST_PLATFORM_DESTINATIONS. |
| `profile_username` | string | Yes | Existing Upload-Post profile username whose connected accounts publish the post. |
| `pinterest_board_id` | string | No | Pinterest board ID returned by LIST_PLATFORM_DESTINATIONS. |
| `google_business_location_id` | string | No | Google Business location name or ID returned by LIST_PLATFORM_DESTINATIONS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Scheduled Post

**Slug:** `UPLOAD_POST_UPDATE_SCHEDULED_POST`

Change the future publication time, title, or caption of an existing scheduled post.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Replacement post title. |
| `job_id` | string | Yes | Job ID returned by SCHEDULE_POST, ENQUEUE_POST, or LIST_SCHEDULED_POSTS. |
| `caption` | string | No | Replacement post caption. |
| `timezone` | string | No | IANA timezone used to interpret a timezone-naive scheduled_date; absent defaults to UTC. |
| `scheduled_date` | string | No | Replacement publication time. Must be in the future and no more than 365 days ahead. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
