Skip to main content

Facebook Page publishing API

Facebook Page Publishing API for Content Teams

Facebook publishing in Wahdx Connection targets connected Pages. The workflow handles text posts, single photos, multi-photo posts, and video through the same content endpoint as the other platforms, and reads Page analytics back per account. This page covers what the API can do, the Page connection and permissions, the post types, the limits, and the publish and reporting sequence.

What the Facebook API can do

The API publishes text-only posts up to 4000 characters, single photos, multi-photo posts, and video to a connected Facebook Page. It schedules posts up to 30 days ahead and reports queued, processing, published, or failed status per post. Page analytics then return unique impressions, post engagements, page views, and follows for the account that published, without mixing Facebook numbers with the other platforms.

  • Text-only posts up to 4000 characters.
  • Single photo, multi-photo post, and video.
  • Schedule up to 30 days ahead.
  • Per-post status tracking.
  • Page analytics after publishing.

Page connection and permissions

Facebook publishing goes to a connected Page through Facebook Login with the pages_manage_posts permission. Personal profiles are not a publishing target. The connection is consent-based, and the account appears in the account listing endpoint with an accountId used for publishing. Expired accounts are returned by the listing so the interface can prompt for reconnection, but publishing requires an active account. Facebook, Instagram, and Threads each connect through their own official OAuth flow, so an account is added per platform.

Post types and media requirements

The backend detects the post type from the payload. Omitting mediaItems produces a text post, while sending image URLs produces a photo or multi-photo post and one video URL produces a video post. Mixing photos and video in one payload is rejected, so each post stays on one media type. Text-only posting is covered in more detail in the text posts guide.

Facebook post types and limits
Post typeRequirement
Text-onlyUp to 4000 characters, no mediaItems
Photo or multi-photoOne image URL per photo, multiple URLs for a multi-photo post
VideoSingle video URL, platform format rules apply
Mixed payloadRejected; one media type per post
SchedulingUp to 30 days ahead
Required permissionpages_manage_posts
const API_BASE_URL = 'https://api.wahdx.com';
const API_KEY = process.env.WAHDX_API_KEY;

const headers = {
  'X-API-Key': API_KEY,
  'Content-Type': 'application/json'
};

// Threads text-only post
await fetch(API_BASE_URL + '/api/content/post', {
  method: 'POST',
  headers,
  body: JSON.stringify(
    {
      "platform": "threads",
      "accountId": "THREADS_ACCOUNT_ID",
      "content": "Threads text-only post with no media attached",
      "threadsSettings": {
        "who_can_reply": "everyone"
      }
    }
  )
});

// Facebook Page text-only post
await fetch(API_BASE_URL + '/api/content/post', {
  method: 'POST',
  headers,
  body: JSON.stringify(
    {
      "platform": "facebook",
      "accountId": "FACEBOOK_ACCOUNT_ID",
      "content": "Facebook Page text-only post with no media attached"
    }
  )
});

Publishing limits and scheduling

Posts can be published immediately or scheduled up to 30 days ahead, and the queue is processed server-side. Every scheduled post is validated against the selected account before it is queued, so a text post aimed at a media-only platform fails early instead of at publish time. Only successful publishes count toward the monthly upload quota, and failed posts stay visible in status tracking for a retry.

Publish sequence: endpoint to endpoint

A Facebook post is three calls. List connected accounts to find the Page accountId. Send the post to POST /api/content/post with either text content alone or media in mediaItems. Then poll GET /api/content/status/:accountId/:publishId until the post is published or failed. The platform field must match the connected account platform, or the request is rejected.

POST /api/content/post
X-API-Key: <server-side key>
Content-Type: application/json

{
  "platform": "facebook",
  "accountId": "CONNECTED_ACCOUNT_ID",
  "content": "Post text up to 4000 characters"
}

Reading metrics back

Facebook analytics cover unique impressions, post engagements, page views, and follows. The values come from the Page for the connected account, so they stay separate from the other platforms. Reading them alongside the publishing analytics endpoint shows both the volume of posts sent to Facebook and the response those posts received.

FAQ

Common questions about the Facebook API

Can Facebook publishing be coordinated with Instagram?

Yes. Both connect through Meta, and the workflow is designed for campaigns where Facebook and Instagram sit alongside the other social channels.

Does Facebook support text-only posts through the API?

Yes. Facebook Pages accept text-only posts up to 4000 characters. TikTok and Instagram do not accept media-less posts.

Can one Facebook post mix photos and video?

No. Keep each post to one media type, either photo-based or video-based, to avoid a rejected payload.

What Facebook metrics are available?

Unique impressions, post engagements, page views, and follows for the connected Page.