PostGate blog

Field notes for building on social platform APIs

Troubleshooting guides for the errors that actually stop an integration — Meta, TikTok, Instagram, YouTube, and more — written by the team building PostGate.

Approval & comparisons

01
pg-boss vs BullMQ in 2026: Which Node.js Job Queue?

pg-boss vs BullMQ compared: scheduling, retries, rate limits, transactions and throughput, now that BullMQ 6 also runs on PostgreSQL. Plus a decision checklist.

02
How to Schedule TikTok Posts in 2026: Desktop, App, API

How to schedule TikTok posts in 2026: the desktop scheduler, the TikTok Studio app, the 10-day limit, why the option goes missing and what the API can't do.

03
BullMQ vs RabbitMQ in 2026: Which Fits Scheduled Jobs?

BullMQ vs RabbitMQ compared on delayed jobs, cron schedules, retries and rate limits, plus what BullMQ's Postgres backend and RabbitMQ 4.4 changed in 2026.

04
Hootsuite API in 2026: Access, Limits and Publishing

The Hootsuite API in 2026: how to get a client ID, whether it is free, OAuth grants, rate limits, how to schedule posts and the networks it cannot post to.

05
How to Automate Instagram Posts in 2026: Tools and API

How to automate Instagram posts in 2026: the in-app scheduler, Zapier and Make, n8n, the Graph API and AI agents, with the limits and failures of each.

06
How to Schedule LinkedIn Posts in 2026: Native, Tools, API

How to schedule LinkedIn posts in 2026: the built-in scheduler for profiles and Pages, its limits, scheduling tools, and why the API can't schedule.

07
Instagram Access Token: How to Get One in 2026

How to get an Instagram access token in 2026: Instagram vs Facebook Login, the OAuth code exchange, 60-day tokens and why there is no Instagram API key.

08
n8n Alternatives for Social Media Automation (2026)

n8n alternatives for social media automation: Zapier, Make and Activepieces compared on pricing, self-hosting and social coverage, plus when to skip them.

09
Social Media Management Software for Agencies (2026)

Social media management software for agencies compared by pricing model (per seat, workspace or profile), plus white label, client approvals and onboarding.

10
Meta App Review for Instagram Content Publishing: a step-by-step walkthrough

A practical, step-by-step walkthrough of Meta App Review for the Instagram Content Publishing permission: real timelines, what reviewers check, and the most common rejection reasons.

11
TikTok audited vs. unaudited client: what actually changes

What actually changes when a TikTok app passes audit — posting caps, visibility defaults, and the practical difference for a publishing integration.

12
Migrating from Ayrshare: a practical guide

A practical, request-by-request guide to migrating an Ayrshare integration to PostGate: what maps directly, what changes, and how to cut over without downtime.

13
Migrating off the Buffer API: what actually happened, and what to do next

What really changed with Buffer's public API for third-party developers, the current state of its new GraphQL API, and how to map a Buffer-style integration onto PostGate.

14
Migrating from the Instagram Graph API to a unified API

Why teams that integrated directly against the Instagram Graph API move to a unified API, and how media containers, publishing, and token refresh map onto PostGate.

15
Open Source Social Media Scheduler: 7 Options for 2026

7 open source social media schedulers checked on GitHub in November 2026: Postiz, Mixpost, BrightBean, Shoutrrr and more, with license, networks and stack.

16
n8n, Make, and Zapier for social media posting: a DIY guide to calling PostGate’s API

PostGate has no dedicated n8n node, Make app, or Zapier app — here's how to call its REST API from each platform's own HTTP/webhook module instead, with a real working request for every tool.

17
Postiz and TikTok: what the open GitHub issues actually say

We checked Postiz's public GitHub issues for TikTok posting problems instead of repeating the claim. Here's exactly what's open, what's closed, and why TikTok is the hardest platform for any self-hosted or open-source posting tool to keep working.

18
The best social media APIs in 2026: a buyer’s guide for posting and scheduling

A sourced, honest comparison of the top social media posting and scheduling APIs in 2026 — PostGate, Ayrshare, Postiz, Blotato, Upload-Post, Zernio, bundle.social, Outstand, SocialRails, Post for Me, Post Bridge, PostProxy, and SocialBee — organized by what each one is actually best for.

19
The best social media APIs for AI agents: MCP support and draft-first safety, compared

Which social media APIs are actually safe for an AI agent to call — real MCP servers, draft-first confirmation, and scoped keys — compared across PostGate, Ayrshare, Blotato, Upload-Post, Zernio, bundle.social, Outstand, and more.

20
Social Media API Pricing 2026: 11 Posting APIs Compared

Social media API pricing for 11 posting APIs: entry and mid-tier plans, free tiers, what each vendor meters and the costs that are easy to miss.

21
The real cost of building social media integrations in-house

A grounded, ranges-not-false-precision estimate of the engineering time and cost to build direct integrations with 5-6 major social platforms in-house — App Review timelines, per-platform build effort, and the ongoing maintenance nobody budgets for.

22
Build vs. buy: a social media API decision framework

A genuinely balanced framework for deciding whether to build direct platform integrations in-house or buy a unified API — real scenarios where each choice wins, not just a case for PostGate.

23
How long does it take to integrate the Instagram API?

A realistic, ranged timeline for a single Instagram Graph API publishing integration: app setup, App Review, the container-publish flow, token refresh, and testing.

24
Platform posting requirements: which social APIs require approval before you can go public

App review, business verification, account-type requirements, and audit gates — which social platforms let you post publicly the moment you connect, and which ones require approval first.

25
Meta Advanced Access: Requirements and How to Get It

Meta Advanced Access lets your app act for accounts you don't own. The checklist: Business Verification, a 30-day API call, screen recordings and App Review.

Head terms

01
AI Agent for Social Media: What It Does and How to Build One

An AI agent for social media drafts, schedules and checks posts through APIs. What it can safely automate, the five parts it needs and a step-by-step build.

02
Instagram API in 2026: Access, Limits, Cost and Posting

The Instagram API in 2026: Instagram Login vs Facebook Login, whether it is free, how to get Advanced Access, rate limits and what you can publish.

03
TikTok API in 2026: Access, Keys, Limits and Posting

The TikTok API in 2026: which API you need, how to get a client key, whether it is free, token lifetimes, audit rules and the posting limits that matter.

04
Bluesky API for Posting in 2026: Auth, Limits and Code

Bluesky API guide for posting: app passwords vs OAuth, the createRecord call, facets, image and video limits, rate limits and how to schedule posts.

05
LinkedIn API Pricing in 2026: Access, Tiers and Limits

LinkedIn API pricing for posting: what is free, what needs Community Management approval, the published rate limits per tier and the token rules that cost time.

06
MCP social media posting: giving AI agents a safe way to publish

What the Model Context Protocol changes about letting an AI agent post to social media, and why draft-first, scope-limited tool design matters more than the protocol itself.

07
Posting to social media from ChatGPT: Custom GPT Actions with PostGate

How to wire a Custom GPT Action to PostGate's OpenAPI contract, why ChatGPT's native MCP connectors need OAuth PostGate doesn't speak yet, and the safety gap you have to close yourself since POST /api/posts publishes immediately unless you say otherwise.

08
Connecting Claude to PostGate's MCP server for social media

How to reach PostGate from Claude Desktop, claude.ai custom connectors, and the Claude API MCP connector — and why draft-first create_post plus tool-approval prompts add up to two independent safety checkpoints.

09
Posting to social media from Claude Code with PostGate's MCP server

How to register PostGate as an MCP server in Claude Code with claude mcp add, and ask it to draft and schedule social posts as part of a release workflow — safely, with draft-first defaults and scoped keys.

10
What a social media API aggregator actually does

The difference between a raw platform API, a social media management tool, and an aggregator API — and which one fits when you're building a product, not just posting for yourself.

11
Programmatic social media posting: what changes vs. posting by hand

What "programmatic" actually buys you over manual or per-platform posting — scheduling at scale, structured delivery status, and the failure modes that only show up once you're not clicking "post" yourself.

12
Social media API gateway: what the term means

A short, plain-language definition of "social media API gateway" — what it is, how it differs from a single-platform SDK, and where PostGate fits.

13
How to Build a Social Media Scheduler

What actually goes into building your own social media scheduler — OAuth token storage, a durable job queue, per-platform API quirks, idempotent retries, and per-target delivery status — plus where a managed API fits if you want to skip the hard 80%.

14
Adding Social Publishing to Your SaaS

A practical build guide for shipping a "connect your social accounts and post" feature inside your own product: OAuth connection UI options, the actual API calls involved, and multi-tenant profile-group isolation between customers.

15
How many separate integrations does it take to post everywhere?

The honest answer: one per platform, each with its own auth model, rate limits, and media rules. A look at what "post everywhere" actually requires, platform by platform.

16
What is a social media API?

A plain-language definition of a social media API — what it lets you do, and how it differs from posting through each platform's own app or website.

17
How social media schedulers actually work

The real mechanics behind a "schedule now, post later" button: OAuth connections, stored scheduled content, a job queue that fires on time, per-platform publish calls, and delivery status tracking.

18
Which social media platforms have a public posting API?

The major platforms that offer a real, documented API for publishing content — Instagram, Facebook, TikTok, LinkedIn, YouTube, Pinterest, X, Threads, Bluesky, Mastodon, Google Business Profile, and Telegram — and what access each one actually requires.

19
Which social platforms have no public posting API? (Snapchat, Reddit, and why)

Snapchat has no public API for organic Stories, Snaps, or Spotlight content, and Reddit's submission API is real but commercially and access-gated in ways that rule out self-serve multi-tenant use. Verified against each platform's current developer terms.

20
What is an idempotency key?

What an idempotency key is, why retried API requests need one, and how PostGate's Idempotency-Key header keeps a retried publish request from posting the same content twice.

21
How to charge clients for social media scheduling

How agencies typically price social scheduling — per-client flat fee, per-platform, or tiered by volume — and how per-client profile groups plus per-target delivery evidence make the pricing model operationally real and defensible.

22
Can You Schedule Instagram Stories via the API? The Real Answer

Meta's Instagram content-publishing API has no scheduling parameter for any content type, Stories included — here's what that means in practice, and how a scheduling layer like PostGate's still lets you set a future time for one.

23
OAuth, Explained: How Authorizing a Social Account Actually Works

What OAuth is as a standard, how the authorize-redirect-token-exchange flow applies to connecting a social account, and how PostGate's hosted OAuth removes the callback handling and token storage from your side of it.

24
Meta Graph API Deprecations: A Dated Timeline for Instagram, Facebook, and Threads

A verified, dated timeline of what Meta has actually deprecated or changed across the Instagram, Facebook, and Threads publishing APIs, sourced from Meta's own changelogs.

25
Social Posting Compliance: Why Platform Terms of Service Still Govern Your Automated Posts

Automating posts through an API doesn't exempt you from each platform's own Terms of Service — rate limits, content policy, and anti-spam rules still apply. What that means in practice, and where PostGate's own Terms of Service already say so.

Errors & blockers

01
unaudited_client_can_only_post_to_private_accounts: what it means and how to publish publicly today

What TikTok's unaudited_client_can_only_post_to_private_accounts error means, why your customer's posts are landing as private, and how to fix it before your app passes audit.

02
TikTok reached_active_user_cap: why disconnecting and reconnecting won’t fix it

TikTok's reached_active_user_cap is an app-level quota on unaudited clients, not a per-account problem. Here's what actually raises the cap.

03
Invalid Scopes: is instagram_basic actually deprecated? (No — here’s what really changed)

instagram_basic is not deprecated, despite what most troubleshooting guides claim. What Meta actually retired, what to check instead, and the real old-to-new scope map for the permissions that did change.

04
OAuthException 2500 “An ID has already been specified”: what’s confirmed and what isn’t

Meta's OAuthException 2500 almost never means what the message implies. What Meta actually documents about this code, the widely-reported (but unconfirmed) pattern behind it during media container creation, and the fix worth trying first.

05
Instagram media container stuck in QUEUE: diagnosis and the delivery-evidence argument

Why an Instagram media container can sit in QUEUE far longer than expected, how to tell a slow container from a stuck one, and what evidence to keep before you escalate.

06
YouTube API 403 quota exceeded: real operation costs and how to request more

What each YouTube Data API operation actually costs, why uploads and searches run out on their own separate 100-calls/day allowance instead of the shared pool, and how to request a quota increase that gets approved.

07
Instagram Graph API error codes: the complete index

Every Instagram Graph API error code and subcode you will hit building a publishing integration, what each one actually means, and where to go for the fix.

08
Scheduled post failed to publish: a troubleshooting guide for marketers, not just developers

A plain-English walkthrough of every reason a scheduled social post fails to publish, written for the marketer who has to explain it, not just the engineer who has to fix it.

09
TikTok "daily active user quota reached": what it means

What TikTok's daily active user quota error means for an unaudited client, and how it differs from the 24-hour active-user cap.

10
TikTok API audit rejected: reason 40

What TikTok's audit rejection reason 40 actually means, and what to fix before resubmitting.

11
TikTok upload error: file_format_check_failed

Why TikTok rejects a video upload with file_format_check_failed, and how to confirm your file actually meets the codec/container requirements before you retry.

12
instagram_basic vs. instagram_business_basic

The real difference between these two similarly-named Instagram permissions, and which one your integration actually needs.

13
Instagram Graph API code 100, subcode 33: bad request body

What Instagram Graph API error code 100 with subcode 33 means, and the most common malformed-request causes.

14
Instagram API error 190: invalid or expired token

What error code 190 means on the Instagram Graph API, its common subcodes, and why retrying never fixes it.

15
Instagram API error code 9007

What error code 9007 means for an Instagram media container, and how to tell a genuinely failed container from one that is simply not ready yet.

16
Facebook Graph API Error Codes and Subcodes: Full List

Facebook Graph API error codes and subcodes in tables: what 190/463, 200/2069032, 100/33 and the rate-limit codes mean, and the fix for each.

17
LinkedIn OAuth "prompt=none": not enough scopes

Why a silent (prompt=none) LinkedIn OAuth request fails when the previously granted scopes don't cover what you're now requesting.

18
LinkedIn API 403 error: what it means

The most common causes of a 403 from the LinkedIn API, and how to tell a permissions problem from a rate-limit problem.

19
LinkedIn API 422 Unprocessable Entity

What a 422 response from the LinkedIn API usually indicates about your request body, and how to debug it.

20
"w_member_social scope not granted": what to check

Why a LinkedIn connection can succeed but still be missing the w_member_social scope needed to post, and how to fix the request that asks for it.

21
Threads OAuthException, subcode 2207052

What Threads API subcode 2207052 means and the most common trigger for it.

22
YouTube Data API: invalid_grant, refresh token expired

Why a Google OAuth refresh token stops working and returns invalid_grant, and what actually needs to happen to restore the connection (hint: it isn't just retrying).

23
X API 429: Too Many Requests

How to read a 429 response from the X API, including the rate-limit headers that tell you when it's safe to retry.

24
Pinterest API refresh token error

The common causes of a failed Pinterest token refresh, and how to distinguish an expired refresh token from a revoked connection.

25
Social media API error handling: a practical taxonomy

A practical way to classify social platform API errors — retryable vs. not, auth vs. content vs. rate-limit — instead of pattern-matching on message strings.

26
Typed error codes for a social media API

Why a structured, typed error envelope beats parsing free-text error messages, and what PostGate's error contract actually looks like.

27
OAuth token refresh for a social media API

How automatic OAuth token refresh should work across social platforms, and what happens when a refresh itself fails.

28
Instagram long-lived access token: the 60-day cycle

How Instagram's 60-day long-lived access token works, when it can be refreshed, and what happens if it expires before you do.

29
How to store social media OAuth tokens securely

What actually matters when storing OAuth tokens for connected social accounts — encryption at rest, access scoping, and what PostGate does by default.

30
Refresh token rotation: best practices

Why refresh token rotation matters for long-lived social platform connections, and the failure modes it prevents.

31
Handling a 429 rate limit from a social API

How to read a 429 response correctly and back off without making the underlying rate limit worse.

32
Exponential backoff for social API retries

How to implement exponential backoff correctly for retrying social platform API calls, and why naive fixed-interval retries make outages worse.

33
Handling social API rate limits at scale

What changes about rate-limit handling once you're publishing across hundreds of connected accounts instead of one.

34
Webhook retry best practices

How a well-built webhook consumer should handle retries, duplicate deliveries, and out-of-order events.

35
Webhook signature verification, explained

How signed webhook verification works and why you should never trust an unsigned payload — with a real HMAC verification example.

36
Dead letter queues for webhook delivery

What a dead letter queue is for webhook delivery, and when a failed webhook should stop retrying and land there instead.

37
Handling out-of-order webhook events

Why webhook events can arrive out of order even when nothing is broken, and how to build a consumer that keys on occurred_at instead of trusting arrival order.

38
Job queue architecture for scheduled social posts

A practical architecture for a job queue that reliably fires scheduled social posts at the right time, even under load.

39
Chunked media upload for a social API

When and why a social publishing API needs chunked media upload instead of a single request, and how it works.

40
Resumable upload protocol for video APIs

How resumable upload protocols work for large video files, and why they matter for reliability on flaky connections.

41
Video transcoding for social media publishing

Why video often needs transcoding before it can be published across platforms, and what that pipeline actually involves.

42
Using ffmpeg to convert video for Instagram Reels

A practical ffmpeg command reference for converting video into a format Instagram Reels will actually accept.

43
Aspect ratio requirements per social platform

A living reference table of accepted image and video aspect ratios across Instagram, TikTok, LinkedIn, Facebook, YouTube, and more.

44
Social media video specs by platform

Video codec, resolution, and duration requirements across every major social platform, in one reference.

45
Character limits per social platform

The current post character limit for every major social platform, verified against each platform's own documentation.

46
Max video length per social platform

The maximum video duration accepted by each major social platform's publishing API.

47
Social media API media requirements

A consolidated reference for file size, format, and dimension requirements across social platform publishing APIs.

48
Repurposing one video into YouTube Shorts, TikTok, and Instagram Reels

The real duration, aspect-ratio, and file-size limits for YouTube Shorts, TikTok, and Instagram Reels, the one export that clears all three, and how to publish it everywhere with a single PostGate API call.

49
How Many Posts Can I Schedule at Once?

PostGate has no dedicated bulk endpoint, so here's what scheduling in bulk actually means: looping POST /api/posts with per-row idempotency keys, realistic client-side concurrency limits, and why async per-target delivery keeps a large batch fast.

50
Social media API changes in 2026: a living reference

Real, source-verified social platform API changes in 2026 — Buffer, Meta, X, and LinkedIn — dated and tracked as a living reference, not a one-time roundup.

51
Social media API limits: the four different things that word means

Character limits, media requirements, rate limits, and posting-frequency caps are four separate systems that all get called "limits." A short reference table for each, with links to the full breakdown.

52
Social media API rate limits: a reference table for every platform

The actual rate-limit numbers — request-count throttles, daily quotas, and points budgets — for Facebook, Instagram, Threads, LinkedIn, TikTok, YouTube, Pinterest, X, Bluesky, Mastodon, Telegram, and Google Business Profile, sourced and confidence-flagged.

53
Preventing duplicate posts: a practical guide to idempotency keys

How accidental double-posts actually happen — retry storms, double-clicks, timeouts — and how a stable Idempotency-Key and its 72-hour window stop them at the API.

54
Designing a publishing integration that’s safe to retry

The three retry layers in a publishing pipeline — your client, PostGate’s internal delivery, and your webhook consumer — and what each one needs to be safe to retry at any layer.

55
At-least-once vs. exactly-once delivery, explained for API integrators

The real distributed-systems delivery guarantees, and how an idempotency key lets an at-least-once system like PostGate behave like exactly-once from your integration’s point of view.

56
Webhooks vs. polling for social post delivery status

When to subscribe to terminal webhooks and when polling GET /api/posts/{id} is the practical choice instead, per PostGate’s own delivery-lifecycle guidance.

Differentiators nobody owns

01
Scheduler says published, but the post never appeared

The worst failure mode in social publishing: your tool reports success, but nothing is on the platform. Why it happens and how per-target delivery evidence catches it.

02
Why do my social accounts keep disconnecting?

The single most common complaint about every social publishing tool, explained: what actually expires a connection, and how to tell a real disconnect from a false alarm.

03
Timezone handling for scheduled social posts, done right

The classic scheduler bug: a post scheduled in the customer’s timezone fires at the wrong hour. How it happens and how to handle timezones correctly end to end.

04
Adding an approval step to automated social posting (PostGate has no built-in reviewer role — here’s the pattern that works instead)

PostGate does not ship a multi-user approval workflow. Here is the real, honest DIY pattern teams use instead: draft: true, a review list from GET /api/posts?status=draft, and a human-triggered publish.

05
Proof of post: what actually counts as evidence a post went live

An HTTP 200 is not proof a post exists. What counts as real proof — a platform-issued post ID and permalink, per destination — and where PostGate attaches it to every post.

06
Delivery receipts for social posts: what you actually get back

What a "receipt" for a social post attempt should contain — status, platform post ID and permalink, timestamp, and a structured error if it failed — and why the create-call response is not one.

07
How to verify a post actually published (not just that your API call succeeded)

A practical, step-by-step guide to programmatically confirming a post really landed on a platform: reading target status, checking for a permalink, and subscribing to terminal webhooks instead of trusting a 200.

08
Handling partial-success posts: what "partial" status actually means

PostGate’s real partial aggregate status — some targets published, some failed — and how to handle it correctly instead of rounding the whole post up to success or down to failure.

Web Stories