Meta Business Suite icon

Meta Business Suite data API: Page, inbox, leads

Meta Platforms, Inc. · E-commerce

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

  • Meta Business Suite screenshot 1
  • Meta Business Suite screenshot 2
  • Meta Business Suite screenshot 3
  • Meta Business Suite screenshot 4
  • Meta Business Suite screenshot 5

API surface

  • Fetch business Page asset

    GET /v1/business/assets/{asset_id} opendata

    Loads 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 selected
    • field names mirror the business-presence model every Suite screen hangs off
  • List Page posts

    POST /v1/content/posts/list opendata

    Returns 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/validate opendata

    Tells 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/validate osint

    Uploads 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 check
    • thread rows hydrate with customer tags, folder and snippet
  • Fetch lead card

    POST /v1/leads/cards/get osint

    Loads 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/get osint

    Hydrates 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.

Get a quote