Facebook Page
Facebook integrates at the Page level. Connect the Meta OAuth flow once and pick which Pages to link; each Page becomes its own UniPost account. Publishing is currently one photo or one video per post.
At a glance
Feature matrix
| Feature | Support | Notes |
|---|---|---|
| Text posts | ✓ | Up to 63,206 characters |
| Image posts | Partial | Exactly 1 image (v1 scope — no carousel yet) |
| Video posts | Partial | Exactly 1 video (non-resumable, ≤ 1 GB in v1) |
| Reels | ✓ | Vertical video via platform_options.facebook.mediaType="reel" (requires FEATURE_FACEBOOK_REELS) |
| Link posts | ✓ | Provide the URL in caption |
| Scheduling | ✓ | Use scheduled_at |
| Inbox (comments + DMs) | ✓ | Routed into UniPost inbox |
| Carousel / album | X | v1 does not support multi-item Page posts |
| First comment | X | Not supported on Pages today |
| Threads | X | Not applicable |
Known constraints
| Limitation | Why |
|---|---|
| Daily safety cap | 100 publishes/day per connected Facebook Page (UTC reset). Protects pages from being flagged for spam — failed posts do not count. |
| No carousels in v1 | Facebook batch_publish is on the roadmap |
| No resumable uploads yet | Videos must be ≤ 1 GB until Phase 2.5 |
| Analytics ship in Phase 2 | Engagement and reach metrics are roadmapped — not yet surfaced |
| Reels are feature-flagged | Set FEATURE_FACEBOOK_REELS=true to enable the /video_reels publish path |
Publishing
Publish examples by surface
Each example calls POST/v1/posts with Bearer auth. Swap the account_ids for your own, then copy the snippet for your language.
Text-only post
Photo post
Video post (Feed)
Reel
Reels run through /{page_id}/video_reels (3 phases: start → transfer → finish). Vertical video required; link attachments are not supported. Requires FEATURE_FACEBOOK_REELS=true on the API.
Media & field requirements
| Field | Required | Limits | Notes |
|---|---|---|---|
| caption or media | At least one required | Text up to 63,206 chars | UniPost rejects posts with neither text nor media |
| media_urls or media_ids | Optional | 1 image OR 1 video | No mixed media. Use media_urls for hosted assets or media_ids for uploaded files |
| link | Optional | URL in caption | Link and media cannot be combined in the same post |
| platform_options.mediaType | Optional | feed / reel | feed (default) routes to /{page_id}/videos; reel routes to the 3-phase /{page_id}/video_reels flow |
| platform_options.title | Optional | Reels only | Video title surfaced alongside the Reel |
| platform_options.thumb_offset_ms | Optional | 0–60,000 ms | Reels only — which frame Meta picks as the thumbnail |
Hosted URLs: pass the public URL in media_urls. Local files: reserve an upload with POST/v1/media, PUT the bytes to the returned upload_url, then publish with media_ids. Full flow in the Publishing guide.
Media specifications
Per-surface limits for text, images, and video. These are the source of truth UniPost uses for preflight validation and media optimization — treat hard-limit values as enforced and "recommended" values as platform guidance.
Feed post
Default Page publish. Single photo or single video (no carousel in UniPost v1).
| Type | Requirement | Value |
|---|---|---|
| Text | Character limit | 63,206 chars (feed truncates at ≈480 with 'See more') |
| Text | Link preview | Meta pulls Open Graph tags when a URL is the only media |
| Image | Formats | JPEG, PNG, GIF |
| Image | Max per post (UniPost v1) | 1 (multi-photo album support on the roadmap) |
| Image | Max file size | 10 MB (UniPost v1 cap; Meta accepts up to 30 MB via direct Graph upload) |
| Image | Dimensions | Min 600 × 315 px; 1,200 × 630 recommended for link previews |
| Image | Aspect ratio | 1.91:1 (link), 1:1 or 4:5 (feed) |
| Image | Color space | sRGB |
| Video | Formats | MP4, MOV |
| Video | Max per post | 1 |
| Video | Max file size | 10 GB via resumable upload (UniPost v1 caps at 1 GB non-resumable) |
| Video | Duration | 1 sec – 240 min |
| Video | Aspect ratios | 16:9, 9:16, 1:1, 4:5 all supported |
| Video | Resolution | Min 1,280 × 720 recommended; up to 4K accepted |
| Video | Frame rate | 24 – 60 fps (30 fps recommended) |
| Video | Codec | H.264 high profile + AAC-LC |
| Video | Audio | Stereo AAC, 128 kbps+ |
Reels
Vertical short-form publish. UniPost targets this via the 3-phase `/{page_id}/video_reels` flow when `platform_options.facebook.mediaType = "reel"` and `FEATURE_FACEBOOK_REELS=true`.
| Type | Requirement | Value |
|---|---|---|
| Text | Caption / description | Up to 2,200 chars (Reels caption surface) |
| Text | Title | Supplied via platform_options.facebook.title |
| Text | Thumbnail offset | thumb_offset_ms 0 – 60,000 ms picks the cover frame |
| Video | Formats | MP4, MOV |
| Video | Max per post | 1 |
| Video | Max file size | 1 GB (UniPost v1, non-resumable). Meta accepts larger via resumable upload. |
| Video | Duration | 3 sec – 90 sec recommended; Meta permits up to 90 min on long Reels |
| Video | Aspect ratio | 9:16 vertical (1,080 × 1,920 recommended) |
| Video | Resolution | Min 540 × 960 px |
| Video | Frame rate | 24 – 60 fps (30 fps recommended) |
| Video | Codec | H.264 high profile + AAC-LC |
| Video | Audio | Stereo AAC, 128 kbps+, 48 kHz |
| Video | Restrictions | No link attachments, no mixed media, no carousel |
Stories
Not yet exposed by UniPost — listed so the media-optimization roadmap has the full Page surface.
| Type | Requirement | Value |
|---|---|---|
| Text | Caption | Overlay only (no feed text body) |
| Image | Formats | JPEG, PNG |
| Image | Max file size | 4 MB |
| Image | Aspect ratio | 9:16 (1,080 × 1,920) |
| Image | Safe area | Reserve top/bottom 250 px for chrome |
| Video | Formats | MP4, MOV |
| Video | Max file size | 4 GB |
| Video | Duration | 1 sec – 60 sec |
| Video | Aspect ratio | 9:16 (1,080 × 1,920) |
| Video | Frame rate | 30 fps |
| Video | Codec | H.264 + AAC-LC |
Analytics
| Metric | Support | Notes |
|---|---|---|
| Likes | ✓ | Sum of reactions on the post |
| Comments | ✓ | Top-level comment count |
| Shares | ✓ | Native Facebook share count |
| Clicks | ✓ | Sum of post_clicks_by_type (Graph v22.0) |
| Video views | ✓ | post_video_views_organic + paid — only on video posts |
| Impressions | X | Meta dropped post-level impressions in Graph v22.0 — use Page Insights tab for Page-level |
| Reach | X | Meta dropped post-level reach in Graph v22.0 — use Page Insights tab for Page-level |
| Saves | X | Not exposed by Meta for Facebook Pages |
Inbox
Once the Page is connected, comments on Page posts and Messenger DMs are routed into UniPost inbox.
| Surface | Support | Notes |
|---|---|---|
| Comments on Page posts | ✓ | Source fb_comment |
| Messenger DMs | ✓ | Source fb_dm |
| Reply from UniPost | ✓ | One reply per item supported |
Connection modes
Pick the setup that matches how the account is owned. Quickstart is fastest when you publish to your own accounts; White-label is required when your customers bring their own accounts through a branded flow. Full setup details in Quickstart and White-label.
| Mode | Best for | App / credentials | Availability |
|---|---|---|---|
| Quickstart | Fast setup — UniPost handles OAuth | UniPost-managed app | Free / paid quota |
| White-label | Your customers connect their own accounts | Your OAuth app | Paid plans only |
White-label requirement: the connected account must be a Facebook Page you manage. Your Meta app must pass app review before public use.
Validation errors
| Code | What it means |
|---|---|
| post_body_required | Post must include text, link, or media |
| mixed_media_unsupported | Facebook v1 accepts one photo or one video per post |
| link_with_media_unsupported | Link and media cannot be combined in the same post |
| invalid_facebook_media_type | mediaType must be feed or reel |
| facebook_reels_unsupported | Reels publishing requires FEATURE_FACEBOOK_REELS to be enabled |