Upload content to social media via Upload-Post API

VerifiedSafe

Upload videos, photos, text, and documents to multiple social media platforms with scheduling, analytics, and FFmpeg processing.

Sby Skills Guide Bot
ContentIntermediate
7/22/2026
Claude CodeCursorCodex
#social-media#api#content-publishing#scheduling#automation

Recommended for

Automated summary

This skill publishes videos, photos, text and documents to roughly a dozen social networks (TikTok, Instagram, YouTube, LinkedIn, X, etc.) through a single Upload-Post API call.

Strengths

  • One API call can distribute the same content to several platforms at once
  • Supports scheduled posts, upload history and analytics through dedicated endpoints
  • Specialised endpoints per media type, including mixed Instagram/Threads carousels and native LinkedIn document posts
  • FFmpeg media processing and asynchronous upload tracking via request_id

Limitations

  • Entirely dependent on a third-party Upload-Post account and a paid API key
  • The document section is truncated in SKILL.md, leaving some parameters under-documented
  • Several capabilities are platform-restricted (documents only on LinkedIn, text limited to X, LinkedIn, Facebook, Threads, Reddit and Bluesky)
When to use it

Use it when you need to publish or schedule the same content across multiple social networks without integrating each platform's API separately.

When not to use it

Avoid it if you don't have an active Upload-Post account or need fine-grained native control specific to a single platform.

Security analysis

Safe
Quality score76/100

The skill is pure API documentation: it lists endpoints, parameters, and curl examples against a single documented host (api.upload-post.com). There is no obfuscation, no curl|sh, no destructive filesystem command, no attempt to read or exfiltrate unrelated secrets, and no safety-disabling instructions. The only sensitive element is the user's own API key, which is passed to the vendor it belongs to. Powerful network calls are used for their legitimate purpose, so this rates safe.

Findings
  • •Requires pasting a personal Upload-Post API key into requests; key handling guidance is minimal (no note on env vars / secret storage)
  • •Examples send local media files to a third-party SaaS endpoint (api.upload-post.com) — expected for the stated purpose, but implies trust in that vendor with content and credentials
How this analysis is made

Examples

Cross-platform video post
Upload video.mp4 to Instagram and TikTok with the caption 'New tutorial is live!' using my upload-post profile 'mybrand'.
Schedule a text post
Schedule a text post for tomorrow 9am Europe/Madrid on X, Threads and Bluesky saying 'Big announcement coming this week 👀'.
LinkedIn document carousel
Upload presentation.pdf as a LinkedIn document post titled 'Q3 Roadmap' with the description 'Here is our plan for the next quarter.'

name: upload-post description: "Upload content to social media platforms via Upload-Post API. Use when posting videos, photos, text, or documents to TikTok, Instagram, YouTube, LinkedIn, Facebook, X (Twitter), Threads, Pinterest, Reddit, or Bluesky. Supports scheduling, analytics, FFmpeg processing, and upload history."

Upload-Post API

Post content to multiple social media platforms with a single API call.

Documentation

  • Full API docs: https://docs.upload-post.com
  • LLM-friendly: https://docs.upload-post.com/llm.txt

Setup

  1. Create account at upload-post.com
  2. Connect your social media accounts
  3. Create a Profile (e.g., "mybrand") - this links your connected accounts
  4. Generate an API Key from dashboard
  5. Use the profile name as user parameter in API calls

Authentication

Authorization: Apikey YOUR_API_KEY

Base URL: https://api.upload-post.com/api

The user parameter in all endpoints refers to your profile name (not username), which determines which connected social accounts receive the content.

Endpoints Reference

| Endpoint | Method | Description | |----------|--------|-------------| | /upload | POST | Upload videos | | /upload_photos | POST | Upload photos/carousels | | /upload_text | POST | Text-only posts | | /upload_document | POST | Upload documents (LinkedIn only) | | /uploadposts/status?request_id=X | GET | Check async upload status | | /uploadposts/history | GET | Upload history | | /uploadposts/schedule | GET | List scheduled posts | | /uploadposts/schedule/<job_id> | DELETE | Cancel scheduled post | | /uploadposts/schedule/<job_id> | PATCH | Edit scheduled post | | /uploadposts/me | GET | Validate API key | | /analytics/<profile> | GET | Get analytics | | /uploadposts/facebook/pages | GET | List Facebook pages | | /uploadposts/linkedin/pages | GET | List LinkedIn pages | | /uploadposts/pinterest/boards | GET | List Pinterest boards | | /uploadposts/reddit/detailed-posts | GET | Get Reddit posts with media | | /ffmpeg | POST | Process media with FFmpeg |

Upload Videos

curl -X POST "https://api.upload-post.com/api/upload" \
  -H "Authorization: Apikey YOUR_KEY" \
  -F "user=profile_name" \
  -F "platform[]=instagram" \
  -F "platform[]=tiktok" \
  -F "video=@video.mp4" \
  -F "title=My caption"

Key parameters:

  • user: Profile username (required)
  • platform[]: Target platforms (required)
  • video: Video file or URL (required)
  • title: Caption/title (required)
  • description: Extended description
  • scheduled_date: ISO-8601 date for scheduling
  • timezone: IANA timezone (e.g., "Europe/Madrid")
  • async_upload: Set true for background processing
  • first_comment: Auto-post first comment

Upload Photos

curl -X POST "https://api.upload-post.com/api/upload_photos" \
  -H "Authorization: Apikey YOUR_KEY" \
  -F "user=profile_name" \
  -F "platform[]=instagram" \
  -F "photos[]=@photo1.jpg" \
  -F "photos[]=@photo2.jpg" \
  -F "title=My caption"

Instagram & Threads support mixed carousels (photos + videos in same post).

Upload Text

curl -X POST "https://api.upload-post.com/api/upload_text" \
  -H "Authorization: Apikey YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "user": "profile_name",
    "platform": ["x", "threads", "bluesky"],
    "title": "My text post"
  }'

Supported: X, LinkedIn, Facebook, Threads, Reddit, Bluesky.

Upload Document (LinkedIn only)

Upload PDFs, PPTs, DOCs as native LinkedIn document posts (carousel viewer).

curl -X POST "https://api.upload-post.com/api/upload_document" \
  -H "Authorization: Apikey YOUR_KEY" \
  -F "user=profile_name" \
  -F 'platform[]=linkedin' \
  -F "document=@presentation.pdf" \
  -F "title=Document Title" \
  -F "description=Post text above document"

Parameters:

  • document: PDF, PPT, PPTX, DOC, DOCX (max 100MB, 300 pages)
  • title: Document title (required)
  • description: Post commentary
  • visibility: PUBLIC, CONNECTIONS, LOGGED_IN, CONTAINER
  • target_linkedin_page_id: Post to company page

Supported Platforms

| Platform | Videos | Photos | Text | Documents | |----------|--------|--------|------|-----------| | TikTok | ✓ | ✓ | - | - | | Instagram | ✓ | ✓ | - | - | | YouTube | ✓ | - | - | - | | LinkedIn | ✓ | ✓ | ✓ | ✓ | | Facebook | ✓ | ✓ | ✓ | - | | X (Twitter) | ✓ | ✓ | ✓ | - | | Threads | ✓ | ✓ | ✓ | - | | Pinterest | ✓ | ✓ | - | - | | Reddit | - | ✓ | ✓ | - | | Bluesky | ✓ | ✓ | ✓ | - |

Upload History

curl "https://api.upload-post.com/api/uploadposts/history?page=1&limit=20" \
  -H "Authorization: Apikey YOUR_KEY"

Parameters:

  • page: Page number (default: 1)
  • limit: 10, 20, 50, or 100 (default: 10)

Returns: upload timestamp, platform, success status, post URLs, errors.

Scheduling

Add scheduled_date parameter (ISO-8601):

{
  "scheduled_date": "2026-02-01T10:00:00Z",
  "timezone": "Europe/Madrid"
}

Response includes job_id. Manage with:

  • GET /uploadposts/schedule - List all scheduled
  • DELETE /uploadposts/schedule/<job_id> - Cancel
  • PATCH /uploadposts/schedule/<job_id> - Edit (date, title, caption)

Check Upload Status

For async uploads or scheduled posts:

curl "https://api.upload-post.com/api/uploadposts/status?request_id=XXX" \
  -H "Authorization: Apikey YOUR_KEY"

Or use job_id for scheduled posts.

Analytics

curl "https://api.upload-post.com/api/analytics/profile_name?platforms=instagram,tiktok" \
  -H "Authorization: Apikey YOUR_KEY"

Supported: Instagram, TikTok, LinkedIn, Facebook, X, YouTube, Threads, Pinterest, Reddit, Bluesky.

Returns: followers, impressions, reach, profile views, time-series data.

Get Pages/Boards

# Facebook Pages
curl "https://api.upload-post.com/api/uploadposts/facebook/pages" \
  -H "Authorization: Apikey YOUR_KEY"

# LinkedIn Pages  
curl "https://api.upload-post.com/api/uploadposts/linkedin/pages" \
  -H "Authorization: Apikey YOUR_KEY"

# Pinterest Boards
curl "https://api.upload-post.com/api/uploadposts/pinterest/boards" \
  -H "Authorization: Apikey YOUR_KEY"

Reddit Detailed Posts

Get posts with full media info (images, galleries, videos):

curl "https://api.upload-post.com/api/uploadposts/reddit/detailed-posts?profile_username=myprofile" \
  -H "Authorization: Apikey YOUR_KEY"

Returns up to 2000 posts with media URLs, dimensions, thumbnails.

FFmpeg Editor

Process media with custom FFmpeg commands:

curl -X POST "https://api.upload-post.com/api/ffmpeg" \
  -H "Authorization: Apikey YOUR_KEY" \
  -F "file=@input.mp4" \
  -F "full_command=ffmpeg -y -i {input} -c:v libx264 -crf 23 {output}" \
  -F "output_extension=mp4"
  • Use {input} and {output} placeholders
  • Poll job status until FINISHED
  • Download result from /ffmpeg/job/<job_id>/download
  • Supports multiple inputs: {input0}, {input1}, etc.

Quotas: Free 30min/mo, Basic 300min, Pro 1000min, Advanced 3000min, Business 10000min.

Platform-Specific Parameters

See references/platforms.md for detailed platform parameters.

Media Requirements

See references/requirements.md for format specs per platform.

Error Codes

| Code | Meaning | |------|---------| | 400 | Bad request / missing params | | 401 | Invalid API key | | 404 | Resource not found | | 429 | Rate limit / quota exceeded | | 500 | Server error |

Notes

  • Videos auto-switch to async if >59s processing time
  • X long text creates threads unless x_long_text_as_post=true
  • Facebook requires Page ID (personal profiles not supported by Meta)
  • Instagram/Threads support mixed carousels (photos + videos)

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/upload-content-to-social-media-via-upload-post-api-mrwakgks/download' --output '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md.part' && mv '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md.part' '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: Setup
  1. Create account at upload-post.com
  2. Connect your social media accounts
  3. Create a Profile (e.g., "mybrand") - this links your connected accounts
  4. Generate an API Key from dashboard
  5. Use the profile name as user parameter in API calls

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && test -s '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/upload-post' && cp -R '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks' '.claude/skills/upload-post'

Cursor
test -f '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && test -s '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/upload-post' && cp -R '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks' '.cursor/skills/upload-post'

Codex
test -f '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && test -s '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/upload-post' && cp -R '.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks' '.agents/skills/upload-post'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks'

openskills read 'upload-content-to-social-media-via-upload-post-api-mrwakgks'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/upload-content-to-social-media-via-upload-post-api-mrwakgks/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills