YOUR SOCIAL POSTING GATE
Post Once. Publish Everywhere.
Connect each social account one time. After that, every app you build posts through one small API.
$ curl -X POST http://localhost:3000/api/v1/posts \
-H "Authorization: Bearer opk_your_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Shipped the new build tonight.",
"platforms": ["bluesky", "mastodon", "linkedin"]
}'
HTTP/1.1 201 Created
{
"post": {
"status": "published",
"targets": [
{ "platform": "bluesky", "status": "published" },
{ "platform": "mastodon", "status": "published" },
{ "platform": "linkedin", "status": "published" }
]
}
}HOW IT WORKS
Connect, Mint, Post
The setup happens once. From then on the gate is a URL your apps call.
Connect Once
Each platform’s sign-in runs one time. The tokens it produces live encrypted on your machine, not on someone else’s server.
Mint a Key
Each of your apps gets its own key. Create one in the dashboard, revoke it any time, and the rest keep posting.
Post Anywhere
One request fans out to every account you pick, the content is shaped to each platform’s rules automatically, and the response reports how each platform answered.
WHERE IT POSTS
The Platforms
9 adapters ship with this build. Each capability line below comes from the adapter registry, the same code that publishes.
X
Text · Images · Video
Facebook Pages
Text · Images · Video
Instagram
Text · Images · Video
Threads
Text · Images · Video
LinkedIn
Text · Images
YouTube
Text · Video
TikTok
Text · Video
Bluesky
Text · Images
Mastodon
Text · Images · Video
THE API
One Request Shape
Every call is a JSON POST with a Bearer key you created in the dashboard. The response lists each target with its own status, so your app knows which platforms answered and which did not.
Before anything sends, the gate checks the content against every platform's rules. What can be converted is converted, what cannot work is skipped, and the response states each automatic change and each skip reason.
- text
- The words to publish.
- platforms
- Fans out to every active account on each platform you name.
- accountIds
- Pins the post to exact accounts instead of whole platforms.
- mediaUrls
- Public links to images or video. The gate fetches each file once and hands it to every platform.
- scheduleAt
- An ISO 8601 time. The gate holds the post and publishes it when the clock arrives.
Notes on every platform's quirks live in the setup guides after you sign in.
POST /api/v1/posts
Authorization: Bearer opk_your_key
{
"text": "Launch is live. Full notes are on the site.",
"platforms": ["bluesky", "linkedin", "x", "tiktok"],
"mediaUrls": ["https://your.app/screenshot.png"],
"overrides": {
"x": { "text": "Launch is live." }
}
}HTTP/1.1 201 Created
{
"post": {
"status": "published",
"targets": [
{ "platform": "bluesky", "status": "published" },
{ "platform": "linkedin", "status": "published",
"adaptations": ["screenshot.png converted to JPEG."] },
{ "platform": "x", "status": "published" },
{ "platform": "tiktok", "status": "skipped",
"skipReason": "TikTok does not take images." }
]
}
}NO SURPRISES
Your Keys. Your Machine. Your Accounts.
The parts other tools bury in a pricing page or a footnote, up front.
Single Tenant by Design
This gate serves one owner: you. Platforms treat multi tenant posting tools as licensed products with their own review programs, so Outpost stays personal on purpose.
What X Costs
X retired its free posting tier in 2026. Posting there bills about $0.015 a post through your own prepaid credits, and Outpost never posts to X without an action you took or a schedule you set.
Locked Platforms
TikTok and YouTube keep unaudited apps private. TikTok posts stay visible to you alone and YouTube uploads arrive as private until each audit passes. The guides explain both.
Stop Re-registering Apps.
Connect the accounts once, then point every current and future app at the gate.