Meta Business Suite data API: Page, inbox, leads
Meta Business Suite (package com.facebook.pages.app) is Meta's first-party client for running a Facebook Page together with its linked Instagram professional account and WhatsApp business identity. The app is a graph client at heart: versioned reads load the scoped business asset, and named GraphQL documents power the content calendar, unified inbox, leads and customer contacts. A page-scoped auth_token from the business-asset model is sent as the access_token parameter alongside sdk and format flags.
The illustrative surface below generalizes that private API: GET /v1/business/assets/{asset_id} for the business presence, POST /v1/content/posts/list for Page posts, inbox readiness and thread validation under /v1/inbox/, plus lead and customer-contact reads keyed by lead_id and contact_id. Response models keep the wire names (page_id, ig_business_id, wa_id, auth_token).
Meta Business Suite (formerly Pages Manager) is Meta's first-party Android client for Facebook Pages, Instagram professional accounts, ads, a unified inbox, leads and customer contacts. The client is built around Meta's business graph: versioned reads load the currently scoped business asset, while named GraphQL documents drive Page posts, inbox readiness and thread validation, lead cards and customer contact cards. A page-scoped auth_token from the business-asset model rides as the access_token parameter with sdk and format flags, and response models keep wire names such as page_id, ig_business_id, wa_id and profile_pic_url.
Screenshots
API surface
Fetch business Page asset
GET
/v1/business/assets/{asset_id}opendataLoads the currently scoped business presence (Facebook Page and linked Instagram / WhatsApp identities) that every other Suite screen hangs off, including the page-scoped access token that authenticates the session.
Auth: Page-scoped access token for the selected business asset, sent as the access_token query parameter alongside sdk and format flags.
- page_id
- asset_id
- asset_name
- asset_type
- auth_token
- bpn_id
- ig_business_id
- wa_id
- profile_pic_url
- ig_profile_pic_url
- has_linked_ig_account
- has_linked_whats_app
- has_presence_node
- is_ig_only_presence
- is_facebook_profile
- is_tool_ready
- scope_id
Illustrative example reconstructed from the app's interface — not a live capture.
GET /v1/business/assets/17841400000000000?fields=page_id,asset_id,asset_name,asset_type,auth_token,ig_business_id,wa_id,profile_pic_url,ig_profile_pic_url,has_linked_ig_account,has_linked_whats_app,is_ig_only_presence,is_facebook_profile,is_tool_ready,has_presence_node,scope_id,bpn_id&format=json&sdk=android&access_token=<page-access-token> HTTP/1.1{ "page_id": 17841400000000000, "asset_id": 17841400000000000, "asset_name": "Example Bakery", "asset_type": "PAGE", "auth_token": "<page-access-token>", "bpn_id": 1234567890, "ig_business_id": 17841405309200000, "wa_id": 15551234567, "profile_pic_url": "https://cdn.example.net/p200x200/page.jpg", "ig_profile_pic_url": "https://cdn.example.net/t51.2885-19/ig.jpg", "has_linked_ig_account": true, "has_linked_whats_app": true, "has_presence_node": true, "is_ig_only_presence": false, "is_facebook_profile": false, "is_tool_ready": true, "scope_id": 17841400000000000 }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the business-asset scoping flow that runs when a Page is selectedfield names mirror the business-presence model every Suite screen hangs off
List Page posts
POST
/v1/content/posts/listopendataReturns the Page's published-content list (feed posts, boost eligibility, media and per-post insight actors) that powers the Suite content calendar and post-detail screens.
Auth: Page-scoped access token from the current business session; the posts read is submitted as a named document over the app's GraphQL transport.
- id
- boostPostStatus
- bizPostContentType
- productType
- postMedias
- insightUserData
- profilePicUri
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/content/posts/list HTTP/1.1 Content-Type: application/json {"page_id": "17841400000000000", "access_token": "<page-access-token>"}{ "data": { "page": { "id": "17841400000000000", "posts": { "nodes": [ { "id": "17841400000000000_122118000000000000", "boostPostStatus": "ELIGIBLE", "bizPostContentType": "PHOTO", "productType": "FEED", "postMedias": [{"uri": "https://cdn.example.net/post.jpg"}], "insightUserData": [{"profilePicUri": "https://cdn.example.net/p50x50/user.jpg"}] } ] } } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the Suite content calendar and post-detail screens
Validate unified-inbox channel readiness
POST
/v1/inbox/channels/validateopendataTells the comms hub whether Messenger, Instagram Direct and WhatsApp threads are ready to sync for this Page, gating the unified inbox.
Auth: Page-scoped access token from the signed-in admin session; the readiness check identifies the Android client surface.
- page_id
- instagram_connected
- messenger_connected
- whatsapp_connected
- client_surface
- client_time_unix_seconds
- validation_tracking_id
- client_channels
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/inbox/channels/validate HTTP/1.1 Content-Type: application/json {"page_id": "17841400000000000", "query_params": {"client_channels": {"instagram_connected": true, "messenger_connected": true, "whatsapp_connected": true}, "client_surface": "android_app", "client_time_unix_seconds": 1758500000, "validation_tracking_id": "trk-01"}, "access_token": "<page-access-token>"}{ "data": { "inbox_channel_readiness": { "messenger": {"is_ready": true}, "instagram": {"is_ready": true}, "whatsapp": {"is_ready": false} } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the unified-inbox channel onboarding and readiness check
Validate inbox thread list (Messenger / IG / WhatsApp)
POST
/v1/inbox/threads/validateosintUploads the local Messenger / Instagram Direct / WhatsApp thread snapshot (ids, last-message cursors, sync epoch) so the server can confirm the unified inbox, and hydrates each thread with customer tags, folder and snippet.
Auth: Page-scoped access token from the signed-in admin session; the consistency check carries the local per-channel sync snapshot.
- thread_id
- last_message_id
- last_message_timestamp_ms
- thread_type
- thread_subtype
- authority_level
- parent_thread_key
- msys_sync_cursor
- sync_status
- sync_epoch_id
- sync_network_channel
- sync_failure_count
- db_treads
- ui_treads
- id
- pageCommItemId
- customerTags
- folder
- snippetWithEntities
- blockedByViewerStatus
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/inbox/threads/validate HTTP/1.1 Content-Type: application/json {"query_params": {"validation_tracking_id": "trk-01", "client_time_unix_seconds": 1758500000, "messenger": {"sync_status": "COMPLETE", "msys_sync_cursor": "cursor-abc", "sync_failure_count": 0, "sync_epoch_id": "99", "sync_network_channel": 1, "db_treads": [{"thread_id": "1234567890", "last_message_id": "mid.$cAAAA", "last_message_timestamp_ms": "1758499900000", "thread_type": 1, "authority_level": 0}], "ui_treads": [{"thread_id": "1234567890", "last_message_id": "mid.$cAAAA"}], "thread_ids": []}, "instagram": {}, "whatsapp": {}}, "access_token": "<page-access-token>"}{ "data": { "inbox_thread_validation": { "is_consistent": true } }, "thread": { "id": "t_1234567890", "pageCommItemId": "17841400000000000", "customerTags": [{"name": "VIP"}], "folder": "INBOX", "snippetWithEntities": {"text": "Hi, is the order ready?"}, "blockedByViewerStatus": "NOT_BLOCKED" } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the unified inbox sync-consistency checkthread rows hydrate with customer tags, folder and snippet
Fetch lead card
POST
/v1/leads/cards/getosintLoads a single Instant Form / Lead Center record for the Page (optional thread id linking the lead to the unified inbox) used by the lead-card and leads-list surfaces.
Auth: Page-scoped access token; the lead read is scoped to the Page id of the current business session.
- lead_id
- page_id
- include_details
- include_thread_id
- thread_id
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/leads/cards/get HTTP/1.1 Content-Type: application/json {"page_id": "17841400000000000", "lead_id": "l:123456789012345", "include_details": true, "include_thread_id": true, "access_token": "<page-access-token>"}{ "data": { "lead": { "lead_id": "l:123456789012345", "page_id": "17841400000000000", "include_details": true, "include_thread_id": true, "thread_id": "t_1234567890" } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the lead-card and leads-list surfaces
Fetch customer contact card
POST
/v1/contacts/cards/getosintHydrates the CRM contact card (identity, labels, notes, profile, about, CTA, lead-opportunity stage) shown when a Page admin opens a customer from inbox search or the contacts tab.
Auth: Page-scoped access token; the contact read takes an identity input scoped to the business asset.
- contact_id
- business_id
- type
- surface
- include_about
- include_config
- include_cta
- include_identity
- include_labels
- include_notes
- include_profile
- include_tos
- include_lead_opportunity
- business_asset_id
- business_assets
Illustrative example reconstructed from the app's interface — not a live capture.
POST /v1/contacts/cards/get HTTP/1.1 Content-Type: application/json {"identity": {"contact_id": "c:9876543210", "business_id": "17841400000000000", "type": "FACEBOOK"}, "surface": "INBOX", "include_about": true, "include_config": true, "include_cta": true, "include_identity": true, "include_labels": true, "include_notes": true, "include_profile": true, "include_tos": true, "include_lead_opportunity": true, "business_assets": [{"business_asset_id": "17841400000000000"}], "access_token": "<page-access-token>"}{ "data": { "contact": { "contact_id": "c:9876543210", "business_id": "17841400000000000", "type": "FACEBOOK", "surface": "INBOX", "include_about": true, "include_labels": true, "include_notes": true, "include_profile": true, "include_lead_opportunity": true, "business_asset_id": "17841400000000000" } } }Derived from the app's interface; endpoint details are illustrative, not a live capture.
reconstructed from the customer contact card opened from inbox search and the contacts tab
Data categories
- business-assets
- posts
- inbox
- leads
- contacts
- page-insights
Where teams use this data
Unified-inbox helpdesks
Support platforms mirror Messenger, Instagram and WhatsApp thread state — thread type, unread counts, sync cursors — into one agent queue, so no customer message sits unread in a channel nobody watches.
Lead-capture pipelines
CRMs fetch lead cards and customer contact cards the moment they arrive, opening opportunities with labels, notes and lead context attached instead of someone re-typing from the inbox.
Page content monitoring
Marketing dashboards list a Page's posts with boost status and content type, tracking what is live, what is promoted and how the posting cadence looks across weeks.
Frequently asked questions
What data API does the Meta Business Suite app use?
The Android client is a first-party graph client. Versioned reads load the scoped business asset (illustrated here as GET /v1/business/assets/{asset_id}), and named GraphQL documents cover Page posts, unified-inbox readiness and thread validation, leads and customer contacts. Response models keep wire field names such as page_id, ig_business_id, wa_id and auth_token.
How is the Meta Business Suite API authenticated?
Requests carry a page-scoped access token issued after a Page admin signs in. The token of the currently selected business asset is sent as the access_token parameter, together with sdk and format flags. There is no public developer key — these are first-party calls scoped to the managed Page.
Which customer data does the unified inbox expose?
A thread-validation call uploads per-channel snapshots (thread_id, last_message_id, last_message_timestamp_ms) for Messenger, Instagram Direct and WhatsApp so the server can confirm sync state, and each thread row is hydrated with id, pageCommItemId, customerTags, folder, snippetWithEntities and blockedByViewerStatus. The contact card additionally reads contact_id, labels, notes and lead-opportunity flags.
Does the app expose Page insights and ads?
Insights, yes — page-insights is one of the app's data categories, and each post row from the content list already carries boostPostStatus (boost eligibility) plus insightUserData actors with profilePicUri. The surface documented here spans business assets, posts, inbox, leads and contacts; it does not include a separate ads-management endpoint.
Topics
- Meta Business Suite API
- Pages Manager data API
- Facebook Page posts endpoint
- unified inbox threads API
- Facebook leads contact card
- page access token auth
- page_id ig_business_id
- Meta business asset API
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.