Overview
Connect Facebook Pages, capabilities, and known limits.
Schedule and automate Facebook Page posts with text, photos, multi-photo albums, videos, and Stories, plus comment moderation, Page likes, and normalized analytics.
Two things to know up front:
- Personal profiles cannot publish. You need a Facebook Page where you have a role
- One Page = one connection. Connect again to add another Page
| Page | Topics |
|---|---|
| Posts | Publish text, photo, multi-photo, carousel, video, Reels, drafts. Schedule, remote delete |
| Engagement | Like / unlike; list, create, delete, hide comments; private replies |
| Inbox | Messenger: list, read, send, webhooks |
| Analytics | Metrics for published posts |
Quick Reference
| Property | Value |
|---|---|
| Character limit | 63,206 (truncated at ~480 with "See more") |
| Images per post | 10 |
| Videos per post | 1 |
| Image max size | 4 MB in practice |
| Video formats | MP4, MOV |
| Video max size | 4 GB (feed), 100 MB (story) |
| Video max duration | 240 min (feed), 120 sec (story) |
| Post types | Text, Image, Multi-photo, Carousel, Video, Reel, Story, Draft |
| Scheduling | Yes, with IANA timezone |
| Editing published posts | No |
| Inbox (Comments) | Yes |
| Inbox (DMs) | Yes (Messenger) |
| Analytics | Yes |
Before You Start
The Facebook API only posts to Pages, not personal profiles. You must have a Facebook Page and admin access to it.
Additional requirements:
- Facebook often rejects photos larger than 4 MB even though the stated limit is higher. Keep images under 4 MB in JPEG or PNG
- Multi-photo posts accept images only. Video URLs return
INVALID_MEDIA - Stories are ephemeral. No captions, no comments, and sparse analytics that disappear when the story expires
- Facebook tokens expire frequently. Reconnect when you see
TOKEN_INVALID - A video may keep processing on Facebook after the destination flips to
published
Connect
Open Dashboard → Connections and connect Facebook.
Complete the consent screen. Onepostly requests all scopes below in a single OAuth flow.
Pick the Page on the picker, or build your own with the headless flow (see Connection → Facebook page selection).
Grab the account id from the connections list:
const { connections: list } = await connections.listConnections();
const fb = list.find((c) => c.platform === "facebook");
// fb.id is your accountIdIf you later get a permission error on an action that should work, reconnect Facebook once.
OAuth Scopes
| Scope | What it enables |
|---|---|
pages_show_list | List the Pages you manage for the picker |
pages_manage_posts | Publish and delete Page posts, Reels, and drafts |
pages_read_engagement | Read engagement data |
pages_read_user_content | Read Page content for analytics |
pages_manage_engagement | Comment, hide, and like as the Page |
read_insights | Read post-level metrics |
pages_messaging | Messenger conversations in the inbox + private replies |
pages_manage_metadata | Page webhook subscriptions and settings |
business_management | Discover Pages owned through a Business Manager |
Token Lifetime
| Token | Lifetime | Behavior |
|---|---|---|
| Page access token | ~60 days | Refreshed automatically by Onepostly |
| Refresh token | No | Not used. After expiry, revocation, or password change, reconnect the account |
Capabilities
| Action | Supported | Notes |
|---|---|---|
| Text-only post | Yes | Unlike Instagram, text alone works. Large-text backgrounds via textFormatPresetId |
| Image post | Yes | Single photo + optional caption |
| Multi-photo | Yes | 2 to 10 images only. No video mixing |
| Multi-link carousel | Yes | carouselCards (one link card per image) + optional carouselLink |
| Video post | Yes | Single video URL |
| Reel | Yes | mediaKind: "reel", single vertical video + optional reelTitle |
| Draft | Yes | draft: true creates an unpublished draft in Publishing Tools (not stories) |
| Geo-restriction | Yes | geoRestriction country allowlist on text, image, and multi-image posts |
| Per-post Page | Yes | pageId posts to another Page managed by the same organization |
| Stories | Yes | Photo or video Page story. Video max 100 MB |
| Schedule | Yes | Cancel any time before it publishes |
| Remote delete | Yes | Removes the post from the Page |
| Comments | Yes | List, create, delete, hide as the Page |
| Comment like / unlike | Yes | As the Page, idempotent |
| Private reply (comment → DM) | Yes | One per comment, 7-day window |
| Messenger DMs | Yes | List, read, send text + attachments; message tags |
| Like / unlike (posts) | Yes | As the Page, idempotent |
| Analytics | Yes | Normalized metrics |
| Thread / quote / bookmark | No | Not Facebook features |
What You Can't Do
These features are not available through Onepostly's Facebook integration:
- Post to personal profiles (Pages only)
- Go Live
- Interactive story stickers
- Community posts or Events