APIREST, webhooks & an MCP server

Publish everywhere.
Straight from your code.

The Postfeeds API lets your apps — and AI agents — compose, schedule and publish to TikTok, Instagram, YouTube and more. Typed SDKs, webhooks and an MCP server included.

POSThttps://api.postfeeds.com/v1/posts
200 OK142 ms
RequestNode
import { Postfeeds } from "@postfeeds/sdk";

const pf = new Postfeeds(process.env.PF_API_KEY);

const post = await pf.posts.create({
  caption: "Launch day 🚀",
  media: ["https://cdn.app/clip.mp4"],
  platforms: ["tiktok", "instagram", "youtube"],
  scheduleAt: "2026-06-12T09:00:00Z",
});
Response200
{
  "id": "post_3xKj9",
  "status": "scheduled",
  "schedule_at": "2026-06-12T09:00:00Z",
  "targets": [
    { "platform": "tiktok",    "state": "queued" },
    { "platform": "instagram", "state": "queued" },
    { "platform": "youtube",   "state": "queued" }
  ]
}
Postfeeds APIv1 · REST · Webhooks · MCP

One API for social publishing,built for developers & AI agents

Compose, schedule and publish to TikTok, Instagram, YouTube and more — programmatically. A clean REST API, typed SDKs, webhooks and an MCP server so your apps and agents can post anywhere with one call.

APIs to ship fast

Publish to every platform with one REST call

Authenticate with an API key, POST your content, and let Postfeeds handle per-platform formatting, scheduling and delivery.

POST /v1/posts
curl https://api.postfeeds.com/v1/posts \  -H "Authorization: Bearer $PF_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "caption": "Launch day 🚀",    "media": ["https://cdn.app/clip.mp4"],    "platforms": ["tiktok", "instagram", "youtube"],    "schedule_at": "2026-06-12T09:00:00Z"  }'
SDKs & agents

Ready-to-use SDKs, tools & an MCP server

Typed SDKs for TypeScript and Python, a CLI, and a Model Context Protocol server that lets AI agents schedule and publish on their own.

Compose
Schedule
Webhooks
Publish
Built to scale

Reliable delivery, rate limits & webhooks

Idempotent requests, automatic retries and real-time webhooks keep every post in sync — from one account to thousands.

Publish to every platform your audience lives on

TikTok
Instagram
YouTube
X
LinkedIn
Facebook
Threads
Quickstart

Post your first video in three steps

From an empty terminal to a scheduled, multi-platform post in a couple of minutes.

  1. 1

    Grab your API key

    Create a scoped key per workspace in the dashboard, then drop it into your environment.

  2. 2

    Install the SDK

    Use our typed SDKs for TypeScript or Python — or call the REST API directly from anything.

  3. 3

    Publish your first post

    One request composes, schedules and fans out to every connected platform at once.

terminal
npm i @postfeeds/sdk
export PF_API_KEY="pf_live_..."
curl -X POST https://api.postfeeds.com/v1/posts \
  -H "Authorization: Bearer $PF_API_KEY" \
  -d caption="Launch day 🚀" \
  -d media="https://cdn.app/clip.mp4" \
  -d platforms="tiktok,instagram,youtube" \
  -d schedule_at="2026-06-12T09:00:00Z"
Recipes

Built for every publishing workflow

Whether you're shipping a product, wiring up automations or handing the keys to an agent — the API stays simple.

Multi-platform

One call, every platform — with per-platform overrides

Send a single request and Postfeeds reformats it for each network. Override the title, visibility or caption per platform when you need to.

  • Automatic aspect-ratio & caption handling
  • Per-platform overrides
  • Schedule now or in the future
schedule.ts
await pf.posts.create({
  caption: "New drop 🔥",
  media: ["https://cdn.app/reel.mp4"],
  platforms: ["tiktok", "instagram", "youtube"],
  overrides: {
    youtube: { title: "New Drop", visibility: "public" },
    tiktok: { allowDuet: false },
  },
  scheduleAt: "2026-06-12T18:00:00Z",
});
Webhooks

Know the moment a post goes live

Subscribe to delivery events and react in real time. Every webhook is signed, retried on failure, and delivered with an idempotency key.

  • Signed & verified payloads
  • post.published, post.failed & more
  • Automatic retries with backoff
webhook.ts
app.post("/webhooks/postfeeds", (req, res) => {
  const event = pf.webhooks.verify(
    req,
    process.env.PF_WEBHOOK_SECRET,
  );

  if (event.type === "post.published") {
    console.log("Live on", event.data.platform, event.data.url);
  }

  res.sendStatus(200);
});
AI agents

Let your agents post on their own

Drop the Postfeeds MCP server into Claude, Cursor or any agent runtime. Your agent gets native tools to compose, schedule and publish — no glue code.

  • Model Context Protocol server
  • Scoped, revocable agent keys
  • Works with any MCP-compatible client
mcp.json
{
  "mcpServers": {
    "postfeeds": {
      "command": "npx",
      "args": ["-y", "@postfeeds/mcp"],
      "env": { "PF_API_KEY": "pf_live_..." }
    }
  }
}
Reference

A clean, predictable REST API

Resource-oriented endpoints, JSON everywhere, and the same response shapes whether you call them by hand or from an agent.

Base URLhttps://api.postfeeds.com
  • POST/v1/posts
  • GET/v1/posts
  • GET/v1/posts/{id}
  • DELETE/v1/posts/{id}
  • GET/v1/connections
  • POST/v1/webhooks
  • GET/v1/usage
The platform

Everything you need to build on Postfeeds

A predictable, well-documented API designed for both human developers and autonomous agents.

API keys & scopes

Mint scoped keys per workspace, rotate them anytime, and grant agents only the access they need.

Real-time webhooks

Subscribe to post.published, post.failed and connection events with signed, retried deliveries.

Idempotent requests

Safe retries with idempotency keys — agents can recover from timeouts without double-posting.

Generous rate limits

Clear per-key limits with headers on every response, plus burst handling for batch publishing.

Sandbox mode

Test the full publish flow against a sandbox before a single post ever reaches a real account.

OpenAPI & typed SDKs

A complete OpenAPI spec drives our TypeScript and Python SDKs, types and reference docs.

Get your API key in minutes

Spin up a key, hit the sandbox, and publish your first post programmatically today — free to start.