PublishQPublishQ

Facebook

Post text, photos, reels, stories, and multi-photo albums to Facebook Pages through the PublishQ API.

What you can post

TypeSupportedMax mediaNotes
Text only063,206 character limit. Links in text auto-preview
Single photo1JPEG, PNG. Max 10 MB
Reel1Any single video is a Reel. MP4, MOV. Max 4 GB, no duration limit
Multi-photo album20Images only — videos cannot be mixed in
Story1Image or video. Disappears after 24h

Limitations

  • Facebook API only posts to Pages, not personal profiles. You must have a Facebook Page and admin access to it.
  • Multiple Pages can be managed from one connected account.
  • Multi-photo albums are images only. You cannot mix videos with images in a multi-photo post.
  • GIF files are not supported. The Facebook API does not accept animated photos.
  • 100 API-published posts per 24-hour moving period.

Videos are Reels

Facebook no longer has a separate video format — all videos are now Reels, regardless of length, aspect ratio, or orientation. You don't need to set any special contentType for videos. Just post a video and it becomes a Reel. The only contentType you need to set is "story" for ephemeral Stories.

Quick start

Post text

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Exciting news from our team! 🎉",
    "accounts": [
      { "accountId": "your-facebook-page-id" }
    ],
    "publishNow": true
  }'

Post a photo

A single photo post on your Facebook Page.

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"
curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of the media you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Check out this view 📸",
    "mediaIds": ["media-id-from-step-1"],
    "accounts": [
      { "accountId": "your-facebook-page-id" }
    ],
    "publishNow": true
  }'

Post a reel

Any single video becomes a Reel on Facebook. No special settings needed.

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"
curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of the video you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Behind the scenes 🎬",
    "mediaIds": ["media-id-from-step-1"],
    "accounts": [
      { "accountId": "your-facebook-page-id" }
    ],
    "publishNow": true
  }'

Post a multi-photo album

A post with 2–20 photos. Only images are supported — videos cannot be mixed in.

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"

Repeat for each file. You need at least 2 media IDs.

curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of each media item you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Photo dump from the weekend 📷",
    "mediaIds": ["media-id-1", "media-id-2", "media-id-3"],
    "accounts": [
      { "accountId": "your-facebook-page-id" }
    ],
    "publishNow": true
  }'

Post a story

Set contentType: "story" to publish to Stories. Stories disappear after 24 hours. Text captions are not displayed on stories, and interactive stickers are not supported via the API. Supports a single image or video (max 60 seconds).

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"
curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of the media you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "mediaIds": ["media-id-from-step-1"],
    "accounts": [
      {
        "accountId": "your-facebook-page-id",
        "platformSpecificSettings": {
          "contentType": "story"
        }
      }
    ],
    "publishNow": true
  }'

Platform-specific settings

Pass these inside platformSpecificSettings on the Facebook account entry. Only needed for Stories — omit for all other post types.

FieldTypeDescription
contentTypeenum (optional)Set to "story" for ephemeral content that disappears after 24 hours. Omit for a regular post — single videos are automatically published as Reels (Facebook no longer has a separate video format).
Full schema: FacebookPlatformSpecificSettings

Media specs

Photos

SpecValue
FormatsJPEG, PNG
Max file size10 MB

Videos (Reels)

SpecValue
FormatsMP4, MOV
Max file size4 GB
DurationNo limit (9:16 vertical recommended for best reach)
Video codecH.264, H.265, VP9, AV1
Audio codecAAC, 48kHz, stereo
Frame rate24–60 FPS

Story videos

SpecValue
FormatsMP4
Max duration60 seconds
Aspect ratio9:16 recommended
Min resolution540 x 960

Not yet supported

  • GIF attachments — Facebook does not accept animated photos via the API.
  • Audience targeting — Limiting post visibility by geography, age, or gender.
  • First comment (coming soon)

On this page