Write it once. Peg it everywhere.
postpeg is one API to publish, schedule, read analytics, and answer comments and DMs on X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads, Pinterest, Bluesky and Google Business.
3 accounts free for 7 days · no card to start · docs open to everyone
Try a post on every network
- X145/280image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- Instagram145/2200image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- LinkedIn145/3000image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- TikTok145/2200image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Won’t post: accepts video only
- Bluesky145/300
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- YouTube145/5000image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Won’t post: accepts video only
- Threads145/500
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- Pinterest145/500image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- Facebook145/63206image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
- Google Business145/1500image
Scheduled posts now retry on their own when a network has a bad minute. Changelog and upgrade notes: https://example.com/changelog #buildinpublic
Ready
Each card runs the same checks as POST /v1/posts. Drag to see every network.
10 networks, one API
POST /v1/posts
One request. Every network’s rules.
Name the accounts, write the post once, and say when. postpeg checks it against each network, queues it, and reports back per account.
curl https://api.postpeg.com/v1/posts \
-H "Authorization: Bearer $POSTPEG_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: changelog-2026-10-01" \
-d '{
"account_ids": [
"acc_mfz1x0k27d4q8vbn3c5s0a1p9e",
"acc_mfz1y4r9h2c6t0wqk8e3m7ld5f",
"acc_mfz20b5n1s8f4j7xv2p9r6hu1c"
],
"content": "Scheduled posts now retry on their own when a network has a bad minute. Changelog: https://example.com/changelog #buildinpublic",
"media": [
{
"url": "https://example.com/changelog.png",
"type": "image"
}
],
"scheduled_at": "2026-10-01T09:00:00Z"
}'The post is scheduled; every target is pending.
{ "id": "post_mfz2k3v8q1w5e9r4t7y0u2i6o3", "content": "Scheduled posts now retry on their own when a network has a bad minute. Changelog: https://example.com/changelog #buildinpublic", "media": [ { "url": "https://example.com/changelog.png", "type": "image" } ], "platform_options": {}, "status": "scheduled", "scheduled_at": "2026-10-01T09:00:00.000Z", "targets": [ { "account_id": "acc_mfz1x0k27d4q8vbn3c5s0a1p9e", "platform": "x", "status": "pending", "platform_post_id": null, "url": null, "error": null, "attempts": 0, "published_at": null }, { "account_id": "acc_mfz1y4r9h2c6t0wqk8e3m7ld5f", "platform": "linkedin", "status": "pending", "platform_post_id": null, "url": null, "error": null, "attempts": 0, "published_at": null }, { "account_id": "acc_mfz20b5n1s8f4j7xv2p9r6hu1c", "platform": "instagram", "status": "pending", "platform_post_id": null, "url": null, "error": null, "attempts": 0, "published_at": null } ], "created_at": "2026-09-24T14:02:11.418Z"}What you can build
Pick a job. See where it hangs.
Publishing and scheduling work on all ten networks. Analytics, comments and direct messages go as far as each network’s official API allows, and no further.
Post text, images and video to any mix of accounts in one request, checked against each network’s rules before anything is sent. On 10 of 10 networks.
Handled for you
Everything around the post, handled
The parts of a social integration that take the longest to get right, already done and the same on every network.
- Checked before it’s sentText length, media rules and required options are validated for every network up front. Every problem comes back at once in
issues, and nothing is published. - Publish now or scheduleLeave out
scheduled_atto post now, or set it up to a year ahead. Cancel withDELETE /v1/posts/{id}until it goes out. - Retries with backoffA network having a bad minute is retried, up to 5 attempts with growing waits. A post that may already be live is marked failed, never sent twice.
- AnalyticsImpressions, reach, likes, shares and follower growth per post and per account.
nullwhere a network doesn’t report a number, never a made-up zero. - Comments and repliesList comments on what you published, reply in the thread, and hide the ones you don’t want shown.
- Instagram DMsRead conversations and answer people who wrote to the account, within Instagram’s 24-hour window.
- Hosted account connectionSend owners to a connect link and OAuth is handled for you. An expired login turns the account
reconnect_required. - Idempotency keysSend an
Idempotency-Keyheader and a retried request returns the original post instead of posting twice.
GET /v1/platforms
What works where
The whole picture in one table. The same list is served at GET /v1/platforms, no key needed.
| Network | Publish | Schedule | Analytics | Comments | Messages | Max text |
|---|---|---|---|---|---|---|
| X | Yes | Yes | Yes | Not available | Not available | 280 |
| Yes | Yes | Yes | Yes | Yes | 2,200 | |
| Yes | Yes | Yes | Yes | Not available | 63,206 | |
| Yes | Yes | Yes | Yes | Not available | 3,000 | |
| TikTok | Yes | Yes | Yes | Not available | Not available | 2,200 |
| YouTube | Yes | Yes | Yes | Not available | Not available | 5,000 |
| Threads | Yes | Yes | Not available | Yes | Not available | 500 |
| Yes | Yes | Yes | Not available | Not available | 500 | |
| Bluesky | Yes | Yes | Not available | Not available | Not available | 300 |
| Google Business | Yes | Yes | Not available | Not available | Not available | 1,500 |
Plans
Pay for accounts, not posts
Every account starts with a 7-day trial: 3 connected accounts, every feature, no card. When it ends the API answers 402 subscription_required until you pick a plan, and your connected accounts are kept for 3 days.
Starter
$29per month
- 10 connected accounts
- Unlimited posts, scheduling, analytics, comments and DMs
Pro
Recommended$79per month
- 50 connected accounts
- Unlimited posts, scheduling, analytics, comments and DMs
Scale
$199per month
- Unlimited connected accounts
- Fair use: up to 150 accounts
- Unlimited posts, scheduling, analytics, comments and DMs
Prices are in US dollars, billed monthly. Payments, invoices and sales tax are handled by Polar, our merchant of record. Plans renew each month until you cancel, and a cancellation takes effect at the end of the period you’ve paid for. Subscribing means you accept the Terms of Service and Acceptable use policy; the Privacy policy explains what data we process.
Docs
Start with the quickstart
The docs are public and written for people wiring postpeg into a product: every request, every response, every error. Works from any HTTP client or agent that can call a REST API.
- AuthenticationAPI keys, live and test prefixes, rate limits, and what happens when the trial ends.
- Profiles and accountsConnect your users’ social accounts with hosted OAuth or a Bluesky app password.
- PublishingValidation, platform options, statuses, retries, cancelling and idempotency.
- ErrorsEvery error code, what it means and how to fix it.
Looking for every endpoint and field? Open the API reference.
Integrations
Works with n8n, Make, Zapier and AI agents (MCP)
The no-code guides use each tool’s own HTTP step, which works today. See every integration
Blog
From the blog
· 5 min read
Automate social posting with n8n, Make or Zapier
Read the post: Automate social posting with n8n, Make or Zapier· 6 min read
Character limits for every social network in 2026
Read the post: Character limits for every social network in 2026· 5 min read
Instagram's 5-hashtag limit: what changed in December 2025 and how to adapt
Read the post: Instagram's 5-hashtag limit: what changed in December 2025 and how to adapt