Introduction
The Faceless Post Automation API is a simple REST API for scheduling and publishing social content at scale. Send one JSON request and we handle uploads, per-platform formatting, scheduling, and delivery through each network’s official API.
- 6 platforms from one call
- Publish now or schedule for later
- Per-platform captions & formats
- Webhooks on publish / failure
Authentication
Authenticate every request with a Bearer API key in the Authorization header. Create and manage keys from your dashboard under Automation API. Keep keys secret — treat them like passwords and never expose them in client-side code.
Authorization: Bearer YOUR_API_KEYBase URL & Endpoints
All endpoints are relative to the base URL:
https://facelesspost.com/api/automation/v1/postsPublish immediately or schedule a post across one or more connected channels.
/channelsList your connected channels with their numeric account IDs.
Quickstart — publish a post
Send a POST to /posts with your caption, media, and target channels:
curl -X POST "https://facelesspost.com/api/automation/v1/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_ids": [
10482913
],
"caption": "How we automated our entire creator workflow 🚀 #creator #automation",
"title": "Automate Faceless Channels in 2026",
"media_urls": [
"https://cdn.example.com/videos/reel-1080p.mp4"
],
"thumbnail": "https://cdn.example.com/thumbnails/cover.jpg",
"mode": "scheduled",
"schedule_at": "2026-10-15T14:30:00Z",
"timezone": "America/New_York",
"platform_formats": {
"youtube": "short",
"instagram": "reel",
"tiktok": "video"
},
"publish_options": {
"youtube": {
"category_id": "27",
"privacy": "public",
"made_for_kids": false
},
"instagram": {
"share_to_feed": true
},
"tiktok": {
"privacy": "PUBLIC_TO_EVERYONE"
}
}
}'Request Parameters
All parameters for the POST /posts body, grouped by purpose.
Publishing & Timing
modeoptional"now" | "scheduled"default: "scheduled"Publishing trigger mode. Set to "now" to publish immediately or "scheduled" to queue for a future date/time.
When set to "now", the post is immediately handed off to the social networks and synchronous status is returned in the API response as well as dispatched to your webhooks.
Platforms: All Platforms
schedule_atoptionalstring (ISO 8601 UTC)default: Immediate if omittedTarget timestamp for publishing when mode="scheduled". Must be a valid ISO 8601 string.
Our worker processes scheduled posts automatically at the exact minute specified, e.g. "2026-10-15T14:30:00Z" or "2026-10-15T10:00:00-04:00".
Platforms: All Platforms
timezoneoptionalstring (IANA)default: "UTC"IANA timezone string representing user schedule context and calendar alignment.
Supports all standard IANA identifiers like America/New_York, Europe/London, Asia/Kolkata, Australia/Sydney, UTC.
Platforms: All Platforms
Media & Visuals
thumbnailoptionalstring (HTTPS URL)Direct public HTTPS image URL (.jpg, .png) used as the custom video cover / thumbnail.
Crucial for YouTube Shorts and Videos to display high-converting custom cover artwork instead of an auto-selected random frame.
Platforms: YouTube, Facebook, LinkedIn
media_urlsrequiredstring[] (URLs)Array of direct public URLs to video files (.mp4, .mov) or images (.jpg, .png, .webp).
Provide 1 video URL for Reels, Shorts, and TikTok. Provide multiple image URLs for carousels (Instagram, LinkedIn, TikTok).
Platforms: All Platforms
formatoptional"reel" | "short" | "video" | "post" | "carousel" | "story"default: Auto-inferred from media and platformVisual post container format (e.g. "reel", "short", "video", "post", "carousel", "story").
Platforms: All Platforms
media_typeoptional"video" | "image" | "text"default: Auto-inferred from media_urlsExplicit post type declaration. Automatically inferred from media URLs if omitted.
Platforms: All Platforms
platform_formatsoptionalRecord<string, format>Per-platform format mapping, e.g. {"youtube":"short", "instagram":"reel"}.
Platforms: Cross-Platform
Content & Copy
captionrequiredstringPrimary text commentary, caption, or video description. On Instagram, place your text and up to 5 hashtags directly inside this caption.
Used as the caption on Instagram, TikTok, Facebook, and X, and as the video description on YouTube.
Platforms: All Platforms
titleoptionalstringVideo title or post headline (up to 100 characters on YouTube).
Required for YouTube long-form videos and recommended for YouTube Shorts and LinkedIn articles.
Platforms: YouTube, LinkedIn
tagsoptionalstring[] | stringYouTube video keyword tags for SEO discovery and search indexing.
Provide an array of strings or comma-separated terms. Combined tags length is automatically capped to 500 characters.
Platforms: YouTube
hashtagsoptionalstring[] | stringList of hashtags for platforms supporting separate tag arrays. (For Instagram, place up to 5 hashtags directly inside the caption.)
Platforms: TikTok, X, Facebook, LinkedIn
platform_contentoptionalRecord<string, { title?, caption?, hashtags? }>Override title, caption, and hashtags for specific platforms in a single request.
Enables tailored messaging per platform while sending only one API call.
Platforms: Cross-Platform
Channel Routing
account_idsoptional(number | string)[]Array of connected channel numeric IDs (find them on your Automation API dashboard).
Guarantees delivery to exact connected channels when multiple accounts exist for a platform.
Platforms: All Platforms
platformsoptionalstring[]Platform slugs to target: ["youtube", "instagram", "tiktok", "facebook", "linkedin", "x"].
Platforms: All Platforms
Platform Settings
publish_optionsoptionalobjectContainer object for platform-specific distribution, privacy, and categorization parameters.
Platforms: All Platforms
publish_options.youtube.category_idoptionalstringdefault: "22"Standard YouTube category ID (22: People & Blogs, 27: Education, 28: Science & Tech, etc.).
Platforms: YouTube
publish_options.youtube.privacyoptional"public" | "unlisted" | "private"default: "public"Visibility status of the video or Short on YouTube.
Platforms: YouTube
publish_options.youtube.made_for_kidsoptionalbooleandefault: falseSelf-declaration for COPPA compliance (Children's Online Privacy Protection Act).
Platforms: YouTube
publish_options.instagram.share_to_feedoptionalbooleandefault: trueFor Instagram Reels: whether to also feature the Reel on the main profile grid.
Platforms: Instagram
publish_options.tiktok.privacyoptional"PUBLIC_TO_EVERYONE" | "MUTUAL_FOLLOW_FRIENDS" | "FOLLOWER_OF_CREATOR" | "SELF_ONLY"default: "PUBLIC_TO_EVERYONE"Audience privacy level for TikTok video uploads.
Platforms: TikTok
publish_options.tiktok.disable_commentoptionalbooleandefault: falsePrevent viewers from commenting on the TikTok video.
Platforms: TikTok
publish_options.linkedin.visibilityoptional"PUBLIC" | "CONNECTIONS"default: "PUBLIC"Audience visibility on LinkedIn (Public to all vs 1st-degree connections only).
Platforms: LinkedIn
publish_options.x.reply_settingsoptional"everyone" | "mentionedUsers" | "following"default: "everyone"Controls who is allowed to reply to the published tweet on X.
Platforms: X (Twitter)
Post Formats
Supported format values per platform. Use platform_formats to set a different format per platform in one request.
YouTube
shortShort-form vertical video distributed on the YouTube Shorts shelf.
videoStandard landscape video with custom thumbnail and category.
reelReels video with optional profile grid sharing.
postClassic photo post published to the profile grid.
carouselSwipeable album post of up to 10 photos or videos.
storyTemporary story visible at the top of followers’ feeds.
TikTok
videoStandard vertical video with privacy, duet, and stitch controls.
carouselSwipeable photo mode gallery with background music.
reelShort-form video published to Facebook Page Reels.
postStandard wall post on your connected Facebook Page.
postProfessional post with commentary and visibility controls.
videoNative video player post uploaded directly to LinkedIn.
X (Twitter)
postTweet with media attachments and reply settings.
Webhooks
Register a webhook URL in your dashboard to receive real-time delivery events. Each event is a JSON POST to your endpoint.
post.publishedFired when a post is successfully published to a platform.
post.failedFired when a post fails to publish (includes the error reason).
{
"event": "post.published",
"post_id": "p_9f2c1a",
"platform": "youtube",
"account_id": 10482913,
"status": "published",
"url": "https://youtube.com/shorts/abc123",
"published_at": "2026-10-15T14:30:05Z"
}Errors
The API uses standard HTTP status codes. Error responses include a JSON body with an error message.
bad_requestMissing or invalid parameters (e.g. no caption or media_urls).
unauthorizedMissing or invalid API key in the Authorization header.
forbiddenThe API key does not have access to the requested channel.
not_foundA referenced channel or resource does not exist.
unprocessableThe payload was understood but a platform rejected it (e.g. invalid format for media).
rate_limitedToo many requests — slow down and retry after the cooldown.
server_errorSomething went wrong on our side. Safe to retry.
Rate Limits
API requests are rate-limited per key to keep the platform healthy. If you exceed the limit you’ll get a429 response — back off and retry after a short cooldown. Need higher throughput for an agency workload? Contact us.

