Skip to main content

Frequently Asked Questions

This FAQ covers the most common questions about Upload-Post. Questions are organized by category to help you find answers quickly.


Connection & Authentication

Where do I find my API Key?

  1. Log in to your Upload-Post Dashboard
  2. Navigate to the "API Keys" section
  3. Click "Generate New API Key"
  4. Copy and securely store your API key

Include your API key in the Authorization header of all API requests:

Authorization: Apikey your-api-key-here

How do I connect my TikTok/Instagram/Facebook/YouTube/LinkedIn account?

  1. Go to Manage Users in your dashboard
  2. Click "Connect" next to the platform you want to add
  3. Follow the OAuth authorization flow for that platform
  4. Grant all requested permissions when prompted
  5. Once connected, the account will appear in your profile

Why do I get error 400 when connecting Instagram?

Error 400 when connecting Instagram usually means:

  • Account not confirmed: Your Facebook/Instagram account needs email or phone verification. Go to Facebook Account Quality to check for issues.
  • Missing permissions: During connection, make sure to approve ALL requested permissions.
  • Business account required: Instagram API requires a Business or Creator account linked to a Facebook Page.
  • Page not connected: Instagram must be linked to a Facebook Page. Create one at facebook.com/pages/create if needed.

How do I get my Facebook Page ID?

Use our API endpoint to retrieve all Facebook Pages associated with your account:

curl 'https://api.upload-post.com/api/uploadposts/facebook/pages' \
-H 'Authorization: Apikey YOUR_API_KEY'

The response includes page_id, page_name, and the associated profile for each page.

info

Facebook API does not support posting to personal profiles—only Pages can be posted to. If you don't have a Page, create one at facebook.com/pages/create.

How does JWT work for white-label integrations?

JWT (JSON Web Token) enables white-label integrations where your users connect their social accounts through your platform:

  1. Create a profile for your user via POST /api/uploadposts/users
  2. Generate a secure URL via POST /api/uploadposts/users/generate-jwt
  3. Redirect your user to the returned access_url
  4. The user connects their accounts through Upload-Post's interface
  5. Use the API with the user's username to post on their behalf

The JWT URL is valid for 48 hours. See the White-label Integration Guide for full details.

How long do tokens last before I need to reconnect?

Token validity varies by platform:

PlatformTypical DurationNotes
TikTok~60 daysAuto-refreshes if used regularly
Instagram~60 daysMay expire after password changes
Facebook~60 daysMay expire after password changes
LinkedIn~60 daysAuto-refreshes if used regularly
YouTube~6 monthsMay require re-authorization
X (Twitter)Long-livedUsually stable unless revoked

When a token expires, you'll receive a "session expired" error. Simply reconnect the account at Manage Users.


Limits & Quotas

How many posts can I make per day on each platform?

Upload-Post enforces platform hard caps using a rolling 24-hour window to protect your accounts:

PlatformDaily Limit (per account)
Instagram50 posts
TikTok15 posts
LinkedIn150 posts
YouTube10 videos
Facebook25 posts
X (Twitter)50 posts
Threads50 posts
Pinterest20 pins
Reddit40 posts
Bluesky50 posts

What does error 429 (Too Many Requests) mean?

Error 429 indicates you've hit a rate limit. This can happen when:

  1. Monthly upload limit reached: Your plan's monthly quota is exhausted
  2. Daily platform cap reached: You've hit the 24-hour limit for a specific platform/account

Example response:

{
"success": false,
"message": "Daily cap reached for instagram: 50/50 in last 24h",
"violations": [{
"platform": "instagram",
"type": "hard_cap",
"used_last_24h": 50,
"cap": 50
}]
}

Solution: Wait for the 24-hour window to roll over, or spread posts across multiple connected accounts.

Are limits per account or per profile?

Limits are per connected social account, not per Upload-Post user or profile.

Example: If you manage 5 Profiles, and each has its own TikTok account connected, you get the full limit for each TikTok account (5 TikTok accounts × 15 posts = 75 TikTok posts per day total).

What does "unlimited uploads" mean in the Basic plan?

"Unlimited uploads" refers to the number of API calls you can make per month through Upload-Post. However, you're still subject to:

  • Platform daily caps (enforced per social account to protect against bans)
  • Profile limits (based on your plan tier)
  • Platform-specific restrictions (each social network's own rules)

How many profiles can I connect on each plan?

Check upload-post.com/pricing for the current limits per plan. You can see your current limit and usage via the GET /api/uploadposts/users endpoint, which returns a limit field showing your maximum allowed profiles.


Video Uploads

How do I upload YouTube Shorts vs regular videos?

YouTube automatically determines if a video is a Short based on:

  • Duration: 60 seconds or less
  • Aspect ratio: Vertical (9:16) or square (1:1)

Simply upload your video normally to the /api/upload endpoint. YouTube will classify it as a Short if it meets these criteria.

curl -X POST https://api.upload-post.com/api/upload \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F 'video=@short_video.mp4' \
-F 'title="My YouTube Short"' \
-F 'user="myprofile"' \
-F 'platform[]=youtube'
warning

Custom thumbnails are not supported for YouTube Shorts—they only apply to standard YouTube videos.

What is the maximum video file size?

Maximum file sizes vary by platform:

PlatformMax File SizeMax Duration
TikTok4 GB10 minutes
Instagram300 MB15 minutes
YouTube256 GB12 hours
LinkedIn5 GB10 minutes
Facebook~1 GB240 minutes
X (Twitter)1 GB+ (Premium)4 hours (Premium)
Threads1 GB5 minutes
Pinterest1 GB15 minutes
Reddit1 GB15 minutes
Bluesky100 MB60 seconds

See Video Requirements for detailed format specifications.

Can I use a video URL instead of uploading the file?

Yes! Instead of uploading a file, you can pass a direct URL to your video:

curl -X POST https://api.upload-post.com/api/upload \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F 'video="https://example.com/videos/myvideo.mp4"' \
-F 'title="My Video"' \
-F 'user="myprofile"' \
-F 'platform[]=tiktok'

Requirements for video URLs:

  • URL must be publicly accessible (test in an incognito browser)
  • Should be a direct link to the file (ending in .mp4, .mov, etc.)
  • Google Drive links must be set to "Anyone with the link"
  • File must not be too small (< 1KB often indicates a broken link)

Why is my video stuck in "processing"?

Videos may remain in processing status for several reasons:

  1. Long upload: If sync upload takes > 59 seconds, it automatically switches to async processing
  2. Platform processing: The social network is processing your video (especially for large files)
  3. Encoding issues: The video format may need transcoding

To check status, use the Upload Status endpoint:

curl 'https://api.upload-post.com/api/uploadposts/status?request_id=YOUR_REQUEST_ID' \
-H 'Authorization: Apikey YOUR_API_KEY'

Status values: pendingin_progresscompleted

How do I upload videos to TikTok drafts (MEDIA_UPLOAD mode)?

Use the post_mode parameter set to MEDIA_UPLOAD:

curl -X POST https://api.upload-post.com/api/upload \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F '[email protected]' \
-F 'title="Draft Video"' \
-F 'user="myprofile"' \
-F 'platform[]=tiktok' \
-F 'post_mode="MEDIA_UPLOAD"'
info

In MEDIA_UPLOAD (Draft) mode, TikTok does not allow setting title, caption, privacy, or other metadata via API. The video uploads to your TikTok inbox/drafts, and you must add all details manually in the TikTok app before publishing.


How do I upload carousels to Instagram/TikTok/Facebook?

Upload multiple photos using the /api/upload_photos endpoint with the photos[] array:

curl -X POST https://api.upload-post.com/api/upload_photos \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F 'photos[][email protected]' \
-F 'photos[][email protected]' \
-F 'photos[][email protected]' \
-F 'title="My Carousel"' \
-F 'user="myprofile"' \
-F 'platform[]=instagram'

Mixed carousels (photos + videos) are supported on Instagram and Threads only:

-F 'photos[][email protected]' \
-F 'photos[][email protected]'
PlatformMax Photos per Post
Instagram10 items (photos/videos mixed)
Threads10 items (photos/videos mixed)
TikTokMultiple (photo slideshow)
FacebookMultiple
Pinterest5 carousel images
Bluesky4 images
X (Twitter)4 images
Reddit1 image per post

For X (Twitter), use x_thread_image_layout to control how images are distributed across tweets when posting more than 4 images. For Threads, use threads_thread_media_layout to control how media items are distributed across posts when posting more than 10 items.

What image resolution/size should I use?

Recommended specifications by platform:

PlatformRecommended SizeMax File SizeFormats
Instagram1080x1350 (4:5)8 MBJPG, PNG
TikTok1080x1920 (9:16)JPG, JPEG, WEBP
Facebook1200x63010 MBJPG, PNG, GIF, WebP
LinkedIn1200x6278 MBJPG, PNG, GIF
Pinterest1000x1500 (2:3)20 MBJPG, PNG, GIF, WEBP
Threads1440px max width8 MBJPG, PNG
Bluesky1 MB per imageJPG, PNG, GIF, WEBP
Reddit10 MBJPG, PNG, GIF, WEBP

See Photo Requirements for detailed specifications.

How do I add automatic music to TikTok photos?

Use the auto_add_music parameter:

curl -X POST https://api.upload-post.com/api/upload_photos \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F 'photos[][email protected]' \
-F 'photos[][email protected]' \
-F 'title="Photo slideshow with music"' \
-F 'user="myprofile"' \
-F 'platform[]=tiktok' \
-F 'auto_add_music=true'

TikTok will automatically add background music to your photo slideshow.


Scheduling

How do I schedule a post for later?

Add the scheduled_date parameter (ISO-8601 format) to any upload request:

curl -X POST https://api.upload-post.com/api/upload \
-H 'Authorization: Apikey YOUR_API_KEY' \
-F '[email protected]' \
-F 'title="Scheduled Post"' \
-F 'user="myprofile"' \
-F 'platform[]=instagram' \
-F 'scheduled_date="2024-12-31T23:45:00Z"'

The API returns a job_id that you can use to check status, edit, or cancel the scheduled post.

Constraints:

  • Must be in the future
  • Maximum 365 days ahead

What timezone does the API use?

By default, the API uses UTC. To use a different timezone, add the timezone parameter:

-F 'scheduled_date="2024-12-31T20:00:00"' \
-F 'timezone="America/New_York"'

Use any valid IANA timezone identifier (e.g., Europe/Madrid, America/Los_Angeles, Asia/Tokyo).

How do I check the status of a scheduled post?

Use the Upload Status endpoint with the job_id:

curl 'https://api.upload-post.com/api/uploadposts/status?job_id=YOUR_JOB_ID' \
-H 'Authorization: Apikey YOUR_API_KEY'

To list all scheduled posts:

curl 'https://api.upload-post.com/api/uploadposts/schedule' \
-H 'Authorization: Apikey YOUR_API_KEY'

To cancel a scheduled post:

curl -X DELETE 'https://api.upload-post.com/api/uploadposts/schedule/JOB_ID' \
-H 'Authorization: Apikey YOUR_API_KEY'

See Manage Scheduled Posts for full details.


n8n Integration

How do I configure credentials in n8n?

  1. Add an HTTP Request Node to your workflow
  2. Set Method to POST
  3. Set URL to https://api.upload-post.com/api/upload
  4. Under Headers, add:
    • Name: Authorization
    • Value: Apikey YOUR_API_KEY
  5. Set Body to multipart/form-data
  6. Add required parameters: user, title, platform[]

Security tip: Use n8n's Credentials store instead of hardcoding your API key.

How do I pass binary files in n8n?

In the HTTP Request node, use the formBinaryData option:

{
"formBinaryData": {
"video": "={{$binary.data}}"
}
}

This passes the binary data from a previous node (like a Google Drive trigger) as the video file.

Alternative: You can pass a video URL instead of binary data:

{
"bodyParameters": {
"parameters": [
{ "name": "video", "value": "https://example.com/video.mp4" }
]
}
}

Where do I find the Upload-Post n8n community node?

Currently, Upload-Post integration is done via the standard HTTP Request node. We provide:

See our n8n Integration Guide for step-by-step setup instructions.


Common Errors

Error: "Username required in form data"

The user parameter is missing from your request. This field identifies which Upload-Post profile to use.

# Correct
-F 'user="your_profile_username"'

Error: "Video URL is not accessible"

The provided video URL cannot be fetched. Check that:

  1. The URL is publicly accessible (test in incognito browser)
  2. The URL points directly to a video file (not a webpage)
  3. For Google Drive: sharing is set to "Anyone with the link"
  4. The file exists and isn't too small (< 1KB indicates broken link)

Error: "TikTok photo upload timed out"

TikTok photo uploads can be slow. Try:

  1. Use async_upload=true to avoid timeout
  2. Reduce image file sizes
  3. Upload fewer photos at once
  4. Check TikTok service status

Error: "File name too long"

Some platforms reject files with very long names. Rename your file to something shorter (under 100 characters) before uploading.

Error 502/504 Gateway Timeout

These indicate server-side timeouts, usually for large files or slow platform responses.

Solutions:

  1. Use async_upload=true for large uploads
  2. Reduce file size if possible
  3. Retry the request
  4. If persistent, contact support

Error: "Your [Platform] session has expired"

Your social account connection has expired. Go to Manage Users, disconnect the account, and reconnect it.

See Common Errors for a complete error reference.


Platform-Specific Features

Can I add a first comment automatically?

Yes! Use the first_comment parameter:

-F 'first_comment="Check out the link in bio!"'

Supported on: Instagram, Facebook, Threads, Bluesky, Reddit, X, and YouTube.

For platform-specific first comments, use [platform]_first_comment:

-F 'instagram_first_comment="Follow for more! #photography"'
-F 'youtube_first_comment="Subscribe for more videos!"'

How do I upload Stories to Instagram/Facebook?

Use the media_type or facebook_media_type parameter set to "STORIES":

Instagram Stories (video):

-F 'platform[]=instagram' \
-F 'media_type="STORIES"'

Instagram Stories (photo):

-F 'platform[]=instagram' \
-F 'media_type="STORIES"'

Facebook Stories:

-F 'platform[]=facebook' \
-F 'facebook_media_type="STORIES"'

Can I add custom thumbnails?

Yes, for YouTube (standard videos only, not Shorts):

# Via URL
-F 'thumbnail_url="https://example.com/thumbnail.jpg"'

# Via file upload
-F '[email protected];type=image/jpeg'

Requirements: JPG/PNG/GIF/BMP, max 2 MB.

How do I mark content as AI-generated?

For TikTok, use the is_aigc parameter:

-F 'is_aigc=true'

For YouTube, use containsSyntheticMedia:

-F 'containsSyntheticMedia=true'

Is there an API to read/respond to comments?

Currently, Upload-Post focuses on content publishing. Reading and responding to comments is not supported in the API. For comment management, use each platform's native interface or their direct APIs.


White-Label Integration

How does white-label integration work?

White-label allows you to integrate Upload-Post into your own platform, so your users can connect their social accounts through your interface:

  1. Create profiles for your users via API
  2. Generate secure URLs (JWT) for account linking
  3. Users connect their accounts through the Upload-Post interface (customizable branding)
  4. You manage their content via API using their profile username

See the White-label Integration Guide for implementation details.

How do I generate connection URLs for my users?

curl -X POST https://api.upload-post.com/api/uploadposts/users/generate-jwt \
-H "Authorization: Apikey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "your_user_id_123",
"redirect_url": "https://yourapp.com/connected",
"logo_image": "https://yourapp.com/logo.png",
"connect_title": "Connect Your Social Accounts",
"platforms": ["instagram", "tiktok", "facebook"]
}'

The response includes an access_url valid for 48 hours. Redirect your user to this URL.

Can I use my own domain for the connection page?

Currently, the connection page is hosted at app.upload-post.com. You can customize:

  • Logo: via logo_image parameter
  • Title: via connect_title parameter
  • Description: via connect_description parameter
  • Button text: via redirect_button_text parameter
  • Redirect URL: via redirect_url parameter
  • Visible platforms: via platforms array
  • Calendar visibility: via show_calendar parameter

Custom domain support is not currently available.


Billing, Invoices & Payments

How do I access my invoices?

You can access all your invoices through the Stripe Billing Portal:

  1. Log in to your Upload-Post Dashboard
  2. Go to My Profile
  3. Click the "Open Billing Portal" button in the Invoices & Billing card at the top
  4. In the Stripe Portal, click "Invoice History" to view and download all invoices

You can also access the Billing Portal from the profile dropdown menu in the navigation bar on any page.

How do I update my payment method?

  1. Go to My Profile in the dashboard
  2. Click "Open Billing Portal"
  3. In the Stripe Portal, click "Payment methods"
  4. Add a new card or update your existing payment method

What are the plan prices?

Visit our Pricing page for current prices. We offer:

  • Basic - For individuals getting started
  • Professional - For power users and small teams
  • Advanced - For agencies and larger teams
  • Business - For enterprise with usage-based billing

All plans are available with monthly or yearly billing. Yearly plans include a significant discount.

Do you charge VAT/IVA/taxes?

Upload-Post uses Stripe for payment processing. Depending on your country and tax regulations:

  • EU customers: VAT may be applied automatically based on your billing address. Stripe handles EU VAT compliance.
  • Non-EU customers: Taxes depend on your local regulations. Stripe may collect applicable taxes based on your billing address.

Your invoices in the Stripe Billing Portal will show any applied taxes. If you need a tax ID (VAT number) added to your invoices, you can add it directly in the Stripe Portal under your billing details.

How do I cancel my subscription?

To cancel your subscription:

  1. Log in to your Upload-Post Dashboard
  2. Go to My Profile
  3. Click "Cancel Subscription" and follow the steps

Your access continues until the end of the current billing period. You can also cancel directly from the Stripe Billing Portal.

How do I request a refund?

Contact our support team at [email protected] with:

  • Your account email
  • Reason for the refund request
  • Any relevant details

Refund eligibility depends on your subscription terms and usage.

Can I pause my subscription instead of canceling?

Yes! When you click "Cancel Subscription", you'll be offered the option to pause your subscription for 1 or 3 months instead. During the pause:

  • Your data and connected accounts are preserved
  • No charges during the pause period
  • You can resume at any time from your profile

How do I change my account email?

You can change your email directly from the dashboard:

  1. Go to My Profile
  2. Click "Change email" next to your current email
  3. Enter your new email address
  4. Click "Send Verification"
  5. Check your current email inbox and click the confirmation link
  6. Then check your new email inbox and click the second confirmation link
  7. Your email will be updated and you'll need to log in again

This double-confirmation process protects your account from unauthorized changes.

How do I contact human support?

When contacting support, please include:

  • Your API key (masked)
  • Exact error messages
  • Steps to reproduce the issue
  • Platform(s) affected

Can I buy additional profiles?

Yes! You can add extra profiles as add-ons to your existing subscription:

  1. Go to My Profile in the dashboard
  2. Under Subscription, click "Manage Extra Profiles"
  3. Choose the add-on size that fits your needs

Alternatively, you can upgrade to a higher tier plan at upload-post.com/pricing for more base profiles.

What happens to my data if I cancel?

When you cancel your subscription:

  • Your data and connected accounts remain until the end of the billing period
  • After the billing period ends, your account reverts to the free plan (limited uploads)
  • Your connected social accounts and profile data are preserved
  • You can resubscribe at any time to restore full access

Still Have Questions?

If your question isn't answered here:

  1. Check our detailed API Reference
  2. Review the Common Errors guide
  3. Contact support at [email protected]