PublishQPublishQ

Facebook API

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.
  • Facebook does not publish a fixed daily post limit. The Pages API allowance is calculated as 4800 × the number of users who engaged with the Page in the last 24 hours, so a Page with little engagement is throttled sooner than a busy one. PublishQ applies its own daily limit per connected account, shown on the pricing page.

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

PublishQ prepares photos for you

Upload any supported image and PublishQ fits it to these limits before publishing. It converts the format when needed, resizes high-resolution photos that exceed Facebook's limits, and compresses images larger than 10 MB, so you don't need to convert or shrink them yourself.

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