At a glance
Capabilities
An unsupported call returns501 resource.not_supported.
The cross-platform matrix is on Platforms.
Connect an account
Connect withPOST /v1/accounts/connect and "platform": "facebook". The shared flow, request fields, and result are in Connect accounts, and the redirect parameters are in Redirect parameters.
status=success and the brand’s Facebook account. That account holds every Page the login granted that none of your other brands already holds. A Page that another of your brands holds stays with that brand.
- A login that grants no Page ends with
status=erroranderror=platform.facebook.no_pageson yourredirect_uri. - A login whose every Page belongs to another of your brands ends with
status=erroranderror=platform.facebook.no_assignable_pages. - A brand whose Facebook account is connected through a different login ends with
status=erroranderror=account.different_login. Disconnect the brand’s Facebook account first. - Reconnecting the same login refreshes the access for every brand that uses it, not only the brand you reconnected from.
Pages of an account
List the Pages of a connected account withGET /v1/accounts/{id}/pages. Each Page has at least an id (sapi_page_ prefix), platform_page_id, name, is_default, and is_active. A Page also carries profile_picture_url, category, followers_count, username, link, verification_status, cover_photo_url, about, and enriched_at, each omitted when it has no value. Publish to a Page with page_id on the post target: see Delivery. PATCH /v1/accounts/{id}/pages/{pageId} sets is_default or is_active.
One login, many brands
A Facebook login is a shared credential. One login can serve many brands, and each Page belongs to exactly one brand. List the Pages a login can manage, live from Facebook, with the brand that holds each:login_id is on each connected account. Move a Page to a brand with POST /v1/platforms/facebook/logins/{loginId}/pages/{pageId}/assign. A Page that another of your brands holds moves to the target brand. The call needs the accounts:manage scope.
Comments
List comments on a post withGET /v1/inbox/comments/{postId}, where postId is the post’s platform ID. Reply, hide, unhide, delete, like, and unlike work as described in Comments.
- Edited comments. Facebook sends an edited comment again, as another
comment.receivedevent. Automations ignore edits and answer new comments only. - Page admins. An Automation skips comments and messages from the Page itself. A Page admin who comments from a personal profile is a commenter like any other, so the comment triggers the Automation.
Private replies
A private reply sends a one-time DM to the person who commented. Send it withPOST /v1/inbox/comments/{postId}/{commentId}/private-reply. Facebook allows one private reply per comment, within 7 days of the comment. A second reply, or a comment older than 7 days, returns 400 platform.facebook.private_reply_ineligible.
Direct messages and the messaging window
A Page can message a person only inside the 24-hour messaging window that the person’s last message opened. Outside it, the send returns400 platform.facebook.window_closed.
- Message types. Text and attachments. A DM send ignores
quick_replies,buttons, andcards: it delivers only the text. Buttons work on a private reply. Each attachment inattachments[]has asource_type(url,media_id, orplatform_attachment_id) and atype.typeis required forplatform_attachment_id, or the request returns400 validation.attachment_type_required. Field rules are in Direct messages. - Reactions.
POST /v1/inbox/conversations/{id}/messages/{messageId}/reactionreacts to a message, andDELETEon the same path removes the reaction. - Delivery status.
dm.status.sent,dm.status.delivered, anddm.status.readevents follow each DM you send. - No message tags. A
message_tagon a Facebook DM, includingHUMAN_AGENT, is not sent: the DM goes out untagged and the 24-hour window applies.
Mentions
GET /v1/accounts/{id}/mentions returns the posts that tag the Page. A mention inside a comment is not in that list: it arrives as a mention.received event. Reply to a mention with POST /v1/accounts/{id}/mentions/reply, which posts a public comment. Details are in Mentions.
Page insights
GET /v1/platforms/facebook/accounts/{id}/summary returns the Page’s followers, views, reach, post engagements, and net follower change over the trailing 30 days.
interactions counts post engagements, and net_follows is new follows minus unfollows over the period.
GET /v1/platforms/facebook/accounts/{id}/insights/daily returns one point per day, oldest first. days sets how many trailing days, from 1 to 365 (default 365). A day with no data is left out.
followers is the count at the end of the day. views, reach, and interactions are that day’s totals.
Both routes take an optional page_id, the id from GET /v1/accounts/{id}/pages. Without it they report on the account’s default Page. Both are free, need the accounts:read scope on a scoped API key, and have no MCP tool.
Both need the read_insights scope, requested since 2026-10-17 with the analytics.read permission. Post metrics in Analytics do not need it.
Reviews
SocialAPI does not read Facebook reviews: Meta deprecated Page recommendations in Graph API v22.0.GET /v1/inbox/reviews/{account_id} for a Facebook account returns 422 account.platform_unsupported, and no other call replaces it.
Webhook events
Facebook Pages emit these events to your webhook endpoints. Payloads are in Webhook events.
Every
post.* event in Webhook events is emitted for this platform.
Limits
A Page access token does not expire on its own. Reconnect only when a call returns
401 platform.facebook.auth, for example after the person revoked access.
Scopes
SocialAPI’s Meta app requests these scopes at connect. You apply for no app review. Each scope belongs to the account permissions in the last column, and the consent screen asks for the scopes of the permissions you selected. The scopes marked Every account are always requested.
Facebook asks for messages as 1 scope, covering both reading and writing, so the consent screen shows the broader scope. The account stays limited to the permissions you selected: an account connected with
messages.read alone cannot send messages.
Related
- Facebook publishing: fields, media rules, and quirks for publishing
- Connect accounts: the shared connect flow
- Automations: comment-to-DM flows
- Platforms: the capability matrix
- Errors: every error code