# Facebook API: Posting Reference

Facebook is supported via the Facebook Graph API. OmniSocials posts to Facebook Pages (not personal profiles). The Facebook Page must be administered by the user who connects the account.

**Channel ID:** `facebook`

## Supported content types

| Type | Supported | Notes |
|------|-----------|-------|
| Feed post | ✅ | Text, image, video, carousel, or link preview |
| Story | ✅ | Image or video. Up to 10 slides per post, each published as its own story in order |
| Reel | ✅ | Vertical video |

## Minimal example

```bash
curl -X POST https://api.omnisocials.com/v1/posts/create \
  -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": { "default": "Weekly update from the team" },
    "accounts": ["your-facebook-page-id"]
  }'
```

Unlike Instagram, Facebook accepts text-only posts with no media.

## Platform-specific options

Set these under the `facebook` key on the post body:

| Field | Type | Description |
|-------|------|-------------|
| `facebook.first_comment` | string | Text auto-posted as the first comment right after the post publishes (max 8000 characters). Page posts only; the API cannot comment on personal profiles. Not posted for stories. |
| `facebook.thumbnail_type` | string | Video thumbnail for feed videos and reels: `from-video` or `from-library`. The top-level [`video_cover`](/creating-posts#video-covers) does the same for every platform at once. |
| `facebook.thumb_offset` | number | Timestamp in milliseconds, used when `thumbnail_type` is `from-video`. |
| `facebook.cover_url` | string | URL of a custom cover image (JPEG or PNG, max 10 MB), used when `thumbnail_type` is `from-library`. |

Facebook has no *required* option fields. Aside from the optional first comment and thumbnail, the default create-post body is sufficient for most use cases.

The thumbnail is set right after the video is live (`POST /{video_id}/thumbnails`). If Facebook refuses it, the post still publishes with the default frame and the refusal is logged.

## Media requirements

| Media | Requirement |
|-------|-------------|
| Image | JPEG, PNG, GIF, or WebP (WebP is transcoded to JPEG at post time). Max 10 MB. |
| Video | MP4 or MOV, up to 240 minutes, max 1 GB |
| Story image | JPEG or PNG, 9:16 recommended |
| Story video | MP4, up to 60 seconds per slide |
| Reel video | MP4, vertical 9:16, 3 to 90 seconds |
| Carousel | 2 to 10 images |

Facebook does not support mixing images and video in the same post: attach images only, or a single video. Mixed media returns a `400 validation_error` at create/schedule time.

**Alt text.** Per-media `alt` entries are accepted but not delivered; the platform's API does not support alt text on third-party posts. It is safe to send the same media objects you use for other platforms.

## Character limit

63,206 characters per post. In practice you will never hit it; write for readers, not the cap.

## Limitations

- Personal Facebook profiles (not Pages) are not supported
- Posts to Groups are not currently supported
- Link previews are generated automatically from the first URL in the post content when no media is attached
- Facebook's API does not guarantee delivery timing for scheduled posts. Expect publish times within a few minutes of the scheduled time.
