Facebook

Set up pages_manage_posts and the other Graph API permissions, survive Meta app review - or skip app review entirely with Outstand Managed Keys.

Facebook is supported in Outstand through the Bring Your Own Key (BYOK) model via Meta's Facebook Graph API. This allows you to use your own Meta app credentials to connect Facebook Pages and publish posts through Outstand's unified API.

Managed Keys are included with your subscription. We handle the OAuth app setup for you, so you can skip the approval process entirely. Follow the steps below only if you want full white-labelling with your own Meta app credentials (BYOK). Contact support@outstand.so if you have questions about your Managed Keys setup.

Quick Information

Our application works with the following OAuth scopes:

  • pages_read_user_content - Basic Facebook Page access (allows reading profile)
  • business_management - Permission to manage business pages
  • pages_show_list - Permission to read engagement metrics
  • pages_manage_posts - Permission to publish posts
  • pages_read_engagement - Permission to read engagement metrics
  • pages_manage_engagement - Permission to interact with engagement

These are the scopes that are required for the integration to work.

Facebook Graph API

We utilize Meta's Facebook Graph API to connect to Facebook Pages and publish posts. The version of the API we use is v24.0.

Outstand OAuth Callback URL

When configuring your Meta app, you must add the following OAuth redirect URI:

https://www.outstand.so/app/api/socials/facebook/callback

This is where Facebook will redirect users after they authorize your app. Make sure to add this URL to:

  • Facebook Login → Settings → Valid OAuth Redirect URIs
  • Settings → Basic → App Domains: Add outstand.so

White-labeling authentication flow

For full white-labeling integration, you need to follow the following flow:

  1. Call the /v1/social-networks/:network/auth-url endpoint to get the authentication URL. You MUST provide a redirect_uri in the request body.
  2. The redirect URI must lead to a Facebook-specific callback URL in your application. We will redirect to it with a session query parameter.
  3. Your callback URL must call the /v1/social-accounts/pending/:sessionToken endpoint (docs link) to get the pending connection details.
  4. The response will contain a list of available pages/accounts that can be connected.
  5. You can then redirect the user to a selection page where they can select the pages/accounts they want to connect.
  6. Once the user has selected the pages/accounts, you can call the /v1/social-accounts/pending/:sessionToken/finalize endpoint (docs link) to finalize the connection.
  7. The response will contain the connected accounts.
  8. You can then use the connected accounts to post on behalf of the user.

The full flow is illustrated in the following diagram:

Media Requirements

When publishing posts with media to Facebook Pages, Outstand handles media processing automatically:

How Media Upload Works

  1. Media Download: Outstand downloads the media from your provided URL server-side
  2. Binary Upload: The media is then uploaded directly to Facebook as binary data
  3. Post Creation: Once the media is uploaded, the post is created with the media attached

This approach ensures reliable media uploads and avoids issues where Facebook cannot access your media URLs.

Image Requirements

RequirementSpecification
FormatsJPEG, PNG, GIF, BMP, TIFF, WEBP
Maximum size10 MB
Minimum dimensions100x100 pixels
Maximum dimensions4096x4096 pixels

Video Requirements

The limits below follow Meta's official video upload limits. The applicable maximum depends on the upload method Meta uses:

RequirementSpecification
FormatsMP4, MOV, AVI, WMV, FLV, WEBM (MP4 recommended)
Maximum size (standard upload)1 GB
Maximum size (resumable upload)Up to 1.75 GB
Maximum duration (standard upload)20 minutes
Maximum duration (resumable upload)Up to 45 minutes
Minimum duration1 second
Recommended aspect ratio16:9 or 9:16

See Meta's video uploads guide for the full list of supported container formats and codecs.

Text

Facebook does not publish a hard character limit for Page post messages in the Graph API; posts support very long text (many thousands of characters). Keep copy concise for best engagement.

Media URL Requirements

Your media URLs must:

  • Be publicly accessible over HTTPS
  • Return a valid Content-Type header (e.g., image/jpeg, video/mp4)
  • Be available at the time of publishing (Outstand downloads the media when publishing)
  • Not require authentication or special headers to access

Example with Media

{
  "containers": [
    {
      "content": "Check out our latest update!",
      "media": [
        {
          "url": "https://media.yoursite.com/images/update.jpg",
          "filename": "update.jpg"
        }
      ]
    }
  ],
  "accounts": ["facebook"]
}

Common Errors

ErrorCauseSolution
(#324) Requires upload fileLegacy error - should not occur with current implementationContact support if you see this error
(#100) Invalid imageImage format not supported or corruptedVerify image is a valid JPEG/PNG
(#1) An unknown error occurredTemporary Facebook API issueRetry after a few minutes

Publishing Rate Limits

Facebook Pages publishing is governed by Meta's Business Use Case (BUC) rate limits rather than a fixed number of posts per day. Meta does not publish a hard "posts per day" cap; instead the allowance scales with your Page's activity.

  • Page-level formula: the number of calls allowed within a rolling 24-hour window is 4,800 x the number of engaged users, where engaged users are the unique people who engaged with your Page in the last 24 hours.
  • Limits are enforced over a rolling 24-hour window.
  • When you exceed the limit, the Graph API returns a throttling error (code 4, 17, 32, or 613 depending on the case).

See Meta's Graph API rate limiting and page-level rate limits documentation.

Available Metrics

When using the Account Metrics API with a Facebook Page, the following engagement data is available:

MetricDescription
impressionsTotal page impressions for the period
engaged_usersNumber of unique users who engaged
post_engagementsTotal engagement actions on page posts
consumptionsTotal content consumptions (clicks, views)

Requirements:

  • pages_read_engagement permission must be approved
  • Supports date range filtering via since and until parameters (Unix timestamps)

Feel free to get in touch with our support team if you have any questions or need assistance with the integration.