Posteady
Posteady Docs
User guideDeveloper guidesAPI referenceMCP

Facebook

Connection requirements, publishing examples, and limits for Facebook.

Requirements

Use a connected Facebook Page with pages_manage_posts, the Page’s CREATE_CONTENT task, and a healthy connection. Public-write availability must also be enabled. The returned capabilities are the final discovery check; new jobs can return 503 SERVICE_UNAVAILABLE while existing job replay, status, and cancellation remain available.

Supported formats

One Page per request, using a facebook object. FEED accepts nonblank text, up to 10 JPEG photos, or one video; it cannot mix images and videos. A URL in a text-only message may become a link post. REELS requires one video and allows message. STORY requires one JPEG or video and rejects message.

For formats that need media, complete the upload guide: reserve → PUT → confirm. Only confirmed mediaId values can be published.

Publish a post

Account and media UUIDs are illustrative; replace them with real IDs. Set your API key in the POSTEADY_API_KEY environment variable.

curl --request POST "https://www.posteady.com/api/v1/posts" \
  --header "Authorization: Bearer $POSTEADY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "facebook": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "FEED",
    "message": "Our latest release is live"
  }
}'

Each JSON block below is a complete, separate request body. Supply real media IDs of the stated type and use a new requestId for each different operation. Keep the previous ID only when retrying that same operation.

Photo feed

{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "facebook": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "FEED",
    "items": [
      {
        "mediaId": "22222222-2222-4222-8222-222222222222"
      }
    ]
  }
}

Video feed

{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "facebook": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "FEED",
    "items": [
      {
        "mediaId": "22222222-2222-4222-8222-222222222222"
      }
    ]
  }
}

Reel

{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "facebook": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "REELS",
    "items": [
      {
        "mediaId": "22222222-2222-4222-8222-222222222222"
      }
    ]
  }
}

Story

{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "facebook": {
    "requestId": "33333333-3333-4333-8333-333333333333",
    "contentType": "STORY",
    "items": [
      {
        "mediaId": "22222222-2222-4222-8222-222222222222"
      }
    ]
  }
}

Confirm success

HTTP 202 means the job was accepted. Store results[0].jobId, then read its status below and wait for status: published. Replace the illustrative ID with the returned value.

curl --request GET "https://www.posteady.com/api/v1/publish-jobs/44444444-4444-4444-8444-444444444444" \
  --header "Authorization: Bearer $POSTEADY_API_KEY"

To schedule, send the same platform input to /scheduled-posts with a future scheduledAt and optional timezone. For asynchronous platforms, generate a UUID requestId per operation and retain it for retries.

Schedule and cancel · Read posts and metrics · Retries · MCP tools

Limits and errors

message allows 63,206 UTF-16 code units and is trimmed. Images must be JPEG up to 8 MiB. Videos must be MP4/QuickTime up to 1 GiB and 20 minutes; REELS allows 3–90 seconds and STORY video allows 3–60 seconds. Arbitrary public media URLs are not accepted. Replays in any terminal state return HTTP 200, including failed, canceled, and unknown, where success remains false. Always read both status and success. Facebook reposts are unsupported.

Publishing reference · Troubleshooting

More related guides

On this page