One Post, Three Platforms: Expanding Social Publishing to Meta's Ecosystem
May 20, 2026 • ArchyPress

Why Three Networks Feel Like Thirty
Adding a new social network to a publishing platform looks simple from the outside: one more API, one more button on the wizard. In practice, every new network brings its own authentication model, its own media constraints, its own rate limits, its own idea of what a "post" is, and its own particular failure modes. Instagram doesn't support link posts in the feed. Facebook has Pages and Groups with separate permission hierarchies. Threads launched without a read API and has been catching up ever since.
Multi-platform publishing is an integration challenge dressed up as a product feature. The product part takes a day. The integration part takes considerably longer.
This is what we worked through when we shipped Meta network support in ArchySocial — and what we'd do differently if we were starting from scratch.
The Meta API Ecosystem: What You're Actually Working With
Meta's developer platform consolidates Facebook, Instagram, and Threads under a shared authentication umbrella via Meta Business Suite and the Graph API. The good news is that one OAuth flow can in principle grant access to all three. The bad news is that "in principle" is doing considerable work in that sentence.
Facebook Pages API: well-documented, mature, supports text/image/video/link posts, but requires a Page access token (not a User token)
Instagram Graph API: business and creator accounts only, no personal profiles, strict media requirements (images must be hosted URLs, not direct uploads at creation time)
Threads API: newest, cleanest interface design, but still catching up on features like media carousels and polls
All three share the same VITE_ENABLE_META_NETWORKS feature flag in ArchySocial — one toggle, three networks
Building a Network-Agnostic Publishing Interface
The key architectural decision was keeping network-specific logic out of the campaign wizard and pushing it into the publisher layer. From the user's perspective, creating a post for Threads looks identical to creating one for LinkedIn: write a caption, pick media, set a schedule. The network differences — character limits, media validation, API payload shape — are resolved at publish time, not authoring time.
In ArchySocial's codebase, src/components/social/data.ts is the single source of truth for network definitions. Adding Meta networks meant adding three entries with supported: true and their respective constraints — no changes to the wizard components, no new conditional branches in the UI.
Permissions and the Principle of Least Surprise
Meta's permission model is granular in ways that can surprise developers coming from simpler APIs. Publishing to a Facebook Page requires pages_manage_posts. Reading page analytics requires pages_read_engagement. Managing Instagram comments requires instagram_manage_comments. None of these are implied by each other.
For ArchySocial, we scope the OAuth request to the minimum permissions needed for the features the user has enabled. If a user hasn't connected their Instagram business account, we don't request instagram_basic. This keeps the consent screen honest — users see exactly what they're approving and no more.
Handling the Edge Cases That Bite You in Production
Instagram image hosting: images must be a hosted URL at the time the container is created — we upload to Supabase Storage first, then pass the URL to the API
Facebook link previews: the API ignores og:tags from local/staging URLs; test link preview display against public URLs only
Threads rate limits: 250 posts per 24 hours per account — surfaced clearly in the scheduler to prevent silent failures
Token refresh: Meta long-lived tokens expire in 60 days; ArchySocial stores the refresh token and handles rotation automatically, with a warning dashboard if a connection is approaching expiry
ArchySocial as the Outcome: One Workflow, Five Networks
With Meta networks enabled alongside LinkedIn and X, ArchySocial now covers the five networks where B2B and consumer brands do the bulk of their social publishing. Create a campaign once, generate network-appropriate captions, preview each post in context, and schedule to all five networks from a single interface.

Publish to Facebook, Instagram, Threads, LinkedIn & X
One campaign, five networks. AI-generated captions tuned to each platform's voice and format.