Facebook API

Facebook posting API for Pages, built for social media agents

Blotato's Facebook posting API publishes text, photos, Reels, and Stories to a Facebook Page from one request, with the Page access tokens refreshed on our side.

Pages only. Meta's publishing API does not allow posting to a personal profile, so no tool can, and this page will not pretend otherwise.

REST
POST https://backend.blotato.com/v2/posts
Auth
blotato-api-key: YOUR_API_KEY
MCP
https://mcp.blotato.com/mcp

Updated September 2026. API access is included on every paid plan and excluded from the free trial.

What the Facebook posting API does in Blotato

Every Facebook request carries a pageId, because Blotato publishes to Pages and one Facebook login can own several. GET /users/me/accounts/:accountId/subaccounts lists them. Every video publishes as a Reel: Blotato does not support regular feed video on Facebook. Text and image posts need no mediaType at all. Poll GET /posts/:postSubmissionId for the result.

Reels, Stories, and link posts

mediaType reel is required for any video. mediaType story publishes a Story from one image or video. The link field attaches a preview to a text post.

First comment up to 8,000 characters

firstComment publishes as the first comment right after the post goes live. Posts and Reels only, not Stories.

Page comments and Messenger from one key

GET /comments and POST /comments cover comments on your Page posts. GET /conversations, GET /messages, and POST /messages cover Messenger, and every Facebook message carries the pageId it sends from.

DM automation on Page conversations

POST /dm-automations builds reply-only auto-replies triggered by a comment or an incoming message, inside the 24-hour reply window Meta enforces.

Two fields decide whether a Facebook post publishes: pageId and mediaType

pageId is required on every call. Leave it out and the request fails, because Blotato will not guess which Page you meant.

mediaType is required the moment you attach a video. Send reel for a video post or story for a Story. Blotato publishes all Facebook video as Reels and does not support regular feed video, so a video with no mediaType is the most common reason a Facebook post fails here.

POST https://backend.blotato.com/v2/posts
{
  "post": {
    "accountId": "98432",
    "content": {
      "text": "New episode is up. Link in the first comment.",
      "mediaUrls": ["https://cdn.example.com/episode-teaser.mp4"],
      "platform": "facebook"
    },
    "target": {
      "targetType": "facebook",
      "pageId": "123456789",
      "mediaType": "reel",
      "firstComment": "Watch the full episode: https://example.com/ep-12"
    }
  }
}

Response: { "postSubmissionId": "uuid" }, a receipt. Poll GET /posts/:postSubmissionId for published or failed. Every field: help.blotato.com/api/llm. Facebook's own reference: the Graph API docs.

What comes off a Facebook Page integration

  • The inbox is behind the same key as the publish call. Comments, Messenger conversations, and reply-only automations are all Instagram and Facebook surfaces, so a Facebook Page is one of the two places an agent can run the whole loop.
  • Expiring Page tokens stop being your problem. Page access tokens expire on Meta's schedule, which is a common reason a hand-built Facebook integration stops publishing. Blotato refreshes them.
  • Meta's app review happened once, on our side. Registering an app, passing App Review, and verifying the business happened once, on our side. You connect a Page.

Four steps to a live Facebook Page post

  1. Connect Facebook. Sign in to Blotato and connect the Facebook login that administers your Pages. Each Page shows up as a subaccount.
  2. Generate an API key. In Settings, open API and generate a key. That click starts the paid Starter plan, since the trial does not cover the API.
  3. Fetch the pageId. GET /users/me/accounts, then GET /users/me/accounts/:accountId/subaccounts. Each Page comes back as a subaccount, and its id is what goes in target.pageId.
  4. POST and poll. Send the request above and poll GET /posts/:postSubmissionId until it reads published, or failed with the error message attached.

If a model decides what the Page posts, skip the curl: the Facebook tools are on the MCP server at https://mcp.blotato.com/mcp. Setup per client is on the Facebook MCP server page, and the walkthrough of posting to a Facebook Page from Claude shows the prompt-to-post flow. A prompt like "Publish this video to our Facebook Page as a Reel and add the episode link as the first comment." calls the same endpoint this page documents.

See every plan and its limits

Facebook Page posting caps, media specs, and cost

Blotato allows 25 posts per 24 hours per Facebook Page. Each Page has its own count, so three Pages under one login can publish 75. Facebook recommends staying under 5 a day per Page for organic reach, and that advice is worth more than the ceiling.

Facebook limitValue through Blotato
Blotato daily cap25 posts per Page per 24 hours (Facebook recommends under 5)
Text63,206 characters
Imagesup to 30 MB, 1:1, 4:5 or 1.91:1
Video (Reels)MP4, MOV or AVI, up to 1 GB, 3 to 90 seconds, 9:16, at least 540 by 960
First commentup to 8,000 characters

The Graph API itself has no per-call price. What App Review and business verification cost you in weeks is laid out in the Facebook API pricing guide.

On Facebook, this API covers publishing, scheduling, analytics, comments, direct messages and DM automation. Caps are listed at help.blotato.com/settings/social-accounts.

MCP tools that reach Facebook

The tool names an agent calls on the MCP server for this platform, verbatim from the server's tool list. The REST endpoint behind each one is in the API reference.

  • blotato_list_accounts
  • blotato_create_post
  • blotato_get_post_status
  • blotato_list_posts
  • blotato_list_schedules
  • blotato_get_schedule
  • blotato_update_schedule
  • blotato_delete_schedule
  • blotato_create_presigned_upload_url
  • blotato_list_top_posts
  • blotato_get_post_analytics
  • blotato_list_comments
  • blotato_get_comment
  • blotato_post_comment
  • blotato_list_conversations
  • blotato_get_conversation
  • blotato_list_messages
  • blotato_get_message
  • blotato_send_message
  • blotato_create_automation
  • blotato_list_automations
  • blotato_update_automation
  • blotato_update_automation_trigger
  • blotato_delete_automation
  • blotato_list_automation_runs
  • blotato_list_automation_logs
  • blotato_get_automation_analytics
FAQ

Facebook posting API FAQs

01 Can an API post to a personal Facebook profile?
No. Meta's publishing API does not allow posting to personal profiles, so no tool can do it. Blotato publishes to Facebook Pages, and every request names the Page with target.pageId.
02 Why does my Facebook video post fail through the API?
Almost always because target.mediaType is missing. Blotato publishes every Facebook video as a Reel and does not support regular feed video, so a video has to be sent with mediaType reel, or as a Story with mediaType story. The Reel also has to be 9:16, at least 540 by 960, and between 3 and 90 seconds.
03 Can I publish the same post to several Facebook Pages?
Yes, one request per Page. Each Page has its own pageId from the subaccounts endpoint and its own 25-post daily cap, so posting to three Pages does not count against any one of them.
04 Does the Facebook posting API include Messenger and comments?
Yes. GET and POST /comments handle comments on Page posts, GET /conversations and POST /messages handle Messenger, and POST /dm-automations sets up reply-only automations. These engagement endpoints cover Facebook and Instagram only.

Same key, eight more platforms

Facebook is one targetType on the same endpoint. The social media API page has the comparison table of every platform's required fields and caps.