Business Asset Management

A business can access multiple assets—your business owns them or your business accesses them as an agency. You can use Facebook's Business Management Asset APIs to add, remove, or query the relationship between a business and its assets, and to manage business assets and access to them.

Business Asset Management

A business can access multiple assets; your business owns the assets or your business accesses them as an agency. Use Facebook's Business Management Asset APIs to add, remove, or query the relationship between a business and its assets, to manage business assets and access to the assets.

Business Asset Groups

Business asset groups help large advertisers or agencies efficiently manage users and assets in their business. You should organize assets and users in a way that maps to real-world operations. For example, a business can structure its assets and users according to brand, region, client, or an organizing principle of their choice.

Business asset groups can contain ad accounts, Pages, Facebook pixels, offline event sets, apps, catalogs, custom conversions and Instagram accounts. The assets can be owned by a business or shared to provide access to an agency.

You can use this API add users to a business asset group. Once added, you can grant people permissions to assets in a business asset group. This helps you grant access to multiple assets all at once, without creating too many admins at the business level.

With this API, you can manage business asset groups that someone already created through Business Manager or you can administer assets within the business asset group. You can:

  • Get a list of business asset groups associated with a business
  • Delete or rename a business asset group
  • View all assets in a business asset group
  • Get, add, edit and delete user permissions for assets in a business asset group
  • Assign users to a business asset group
  • Get, add and delete assets from a business asset group

Permissions

To use Business Asset Groups API, your app needs the appropriate Marketing API Access Level:

  • For all add and remove endpoints: Access token's user needs to be an admin of the business. Otherwise, the access will be denied.
  • For all API endpoints, your app needs business_management permission.
  • You need extra permissions for:
Business Asset Group Endpoints Required permissions

Get list of Ad Accounts

ads_management

Get list of product catalogs, add product catalog or remove product catalog

ads_management

Get list of Instagram accounts, add Instagram account or remove Instagram account

ads_management. If you are using Marketing API v4.0, you also need instagram_basic.

Get list of pixels

ads_read

Get list of offline event sets

ads_management

Get list of custom conversion

ads_read

Add custom conversion

ads_management

Limitations

  • You see an error if you try to reduce or remove permissions for an asset contained in a business asset group via the following API calls: DELETE request to /{page_id}/assigned_users, POST request to /{page_id}/assigned_users, DELETE request to /act_{ad_account_id}/assigned_users, and POST request to /act_{ad_account_id}/assigned_users. To reduce or remove permissions, follow these steps:

    1. Make a call to get a list of asset groups associated with a business. Look for asset groups where contained_asset_id is equal to the {page_id} or {ad_account_id}.
    2. For each returned business asset group id, make an API call to remove a user from that group.
    3. Then, call the above DELETE or POST requests to remove the permission for that user on Page or Ad Account.
  • If you provide permissions management features in your app for other businesses, you should use this API to prevent inconsistencies and errors between the API and Business Manager.

  • You cannot set permissions on apps, catalogs, Instagram accounts and custom conversions through the business asset group. Instead you should assign permissions at the asset level.

For example, if you add Roger to a business asset group in Jasper’s business manager, he can get permissions to any Pages, ad accounts, pixels and so on, in that business asset group. However to remove or edit Roger’s permissions to any asset in the Jasper’s business asset group, you must perform this action in the business asset group itself.

You can add user permissions at the asset level using asset API, such as change someone from Page moderator to admin. See examples for Page and Ad Account.

Business asset groups replace Projects API on October 13, 2019. You should migrate all apps on Projects API to business asset groups. Currently, you are now allowed to create business asset group through API.

Managing Asset Groups

To get a list of asset groups associated with a business:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUSINESS_ID>/business_asset_groups?access_token=<ACCESS_TOKEN>"

The response looks like this:

{
  "data": [
    {
      "id": "<ID>",
      "name": "Northern Region"
    },
    {
      "id": "<ID>",
      "name": "Western Region"
    }
  ],
....
}

To read a business asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<bus_asset_group_ID>?access_token=<TOKEN>"

The result includes the ID for the asset group:

{
 "id": "<ID>", "name": "A Name"
}

To rename the group:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<bus_asset_group_ID>?name=<NAME>&access_token=<TOKEN>"

On success, we return the result true. To delete a group:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<asset_group_ID>?access_token=<TOKEN>"

We return true on success.

Managing Users

View all business asset groups that a business-scoped user can access. For example:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUSINESS_SCOPED_USER_ID>/assigned_business_asset_groups?limit=1&access_token=<TOKEN>"

The response includes roles which define the access levels a user has per asset type:

{
  "data": [
    {
      "id": "<ID>" 
      "name": "A Name",      
      "page_roles": [ "ANALYZE", "ADVERTISE" ],
        "offline_conversion_data_set_roles": ["UPLOAD"],      "adaccount_roles": ["ANALYZE", "ADVERTISE"],      
        "pixel_roles": ["ANALYZE", "EDIT"]    
    }  
    ],
        ....
}

You can get, add and delete user permissions for a business asset group. To read a list of assigned users for the asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUSINESS_ASSET_GROUP_ID>/assigned_users?limit=2&business=<BUSINESS_ID>&access_token=<TOKEN>"

The result looks like this:

{
  "data": [
    {
      "id": "<ID>",
      "name": "Dabney Donigan",
      "page_roles": [ "ANALYZE" ],  
      "offline_conversion_data_set_roles": [ "ADVERTISE", "UPLOAD", "MANAGE" ],
      "adaccount_roles": [ "ANALYZE" ],
      "pixel_roles": [ "ANALYZE", "EDIT" ]
      }
      ],
   ....
}

You can assign users to a business asset group via this POST request to /assigned_users:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUSINESS_ASSET_GROUP_ID>/assigned_users?business=<BUS_ID>&user=<USER_ID>&page_roles=<P_ROLES>&adaccount_roles=<ROLES>&pixel_roles=<PIX_ROLES>&offline_conversion_data_set_roles=<OFF_ROLES>&access_token=<TOKEN>"

On success, we return true. To remove a user from a group:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUSINESS_ASSET_GROUP_ID>/assigned_users?business=&user=<USER_ID>&access_token=<TOKEN>"

We return true on success.

Managing Assets

You can get, add and delete assets from an asset group. This includes ad accounts, pages, Facebook pixels, offline event sets, app, catalogs, Instagram accounts and custom conversions.

Pages

To get a list of all Facebook pages that are in an asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pages?access_token=<TOKEN>"

The response looks like this:

{
  "data": [
    {
      "name": "Sample Name",
      "id": "<ID>"
    },
    {
      "name": "Another Name",
      "id": "<ID>"
    },
    {
      "name": "Third Name",
      "id": "<ID>"
    }
  ],
  ....
}

You can add a page to an asset group. You can add both owned pages and shared pages:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pages?asset_id=<ID>&access_token=<TOKEN>"

On success we return true.

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pages?asset_id=<ID>&access_token=<TOKEN>"

On success we return true.

Ad Accounts

Business asset groups can contain either owned or shared ad accounts. To read the accounts in a group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_adaccounts?access_token=<TOKEN>"

The results look like this:

{
  "data": [
    {
      "account_id": "<ID>",
      "id": "act_<ID>"
    },
    {
      "account_id": "<ID>",
      "id": "act_<ID>"
    },
    {
      "account_id": "<ID>",
      "id": "act_<ID>"
    }
  ],
....
    }
  }
}

To add an ad account to an asset group:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_adaccounts?asset_id=<ID>&access_token=<TOKEN>"

To remove an ad account:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_adaccounts?asset_id=<ID>&access_token=<TOKEN>"

Product Catalogs

You can add both owned and shared product catalogs to a business asset group. To see all catalogs in a group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_product_catalogs?access_token=<TOKEN>"

The results look like this:

{
  "data": [
    {
      "id": "<ID>",
      "name": "1 product catalog"
    },
    {
      "id": "<ID>",
      "name": "First_Catalog_Products"
    }
  ],
....
}

To add a catalog to an asset group:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_product_catalogs?asset_id=<ID>&access_token=<TOKEN>"

On success we return true. To remove a catalog:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_product_catalogs?asset_id=<ID>&access_token=<TOKEN>"

Instagram Accounts

You can add shared as well as owned Instagram Accounts to a business asset group. To get a list of existing accounts:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_instagram_accounts?access_token=<TOKEN>"

The response looks like this:

{
  "data": [
    {
      "id": "<ID>"
    },
    {
      "id": "<ID>"
    }
  ],
  ....
}

To add an Instagram Account:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_instagram_accounts?asset_id=<ID>&access_token=<TOKEN>"

On success we return true. To remove an account:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_instagram_accounts?asset_id=<ID>&access_token=<TOKEN>"

Facebook Pixels

You can add or remove owned and shared pixels in asset groups. To see all existing pixels in a group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pixels?access_token=<TOKEN>"

The results look like this:

{
  "data": [
    {
      "id": "<ID>"
    },
    {
      "id": "<ID>"
    }
  ],
 ....
    }
  }
}

To add a pixel to an asset group:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pixels?asset_id=<ID>&access_token=<TOKEN>"

On success we return true. To remove a pixel:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_pixels?asset_id=<ID>&access_token=<TOKEN>"

Offline Event Datasets

Business asset groups can contains both shared and owned offline event datasets. To see all datasets in an asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_offline_conversion_data_sets?access_token=<TOKEN>"

The results look like this:

{
 "data": [
 {
 "id": "<ID>", "name": "Transfer", "business": {
 "id": "<ID>", "name": "Acme Industries Inc." }, "enable_auto_assign_to_accounts": false, 
 "is_restricted_use": false 
 },
 {
 "id": "<ID>", "name": "Default Offline Event Set For Biz1", "business": {
 "id": "<ID>", "name": "Biz1" }, "enable_auto_assign_to_accounts": true, "is_restricted_use": false } ], 
 ....
 }

To add offline event sets to an asset group:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_offline_conversion_data_sets?asset_id=<ID>&access_token=<TOKEN>"

On success we return true. To remove an event set:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_offline_conversion_data_sets?asset_id=<ID>&access_token=<TOKEN>"

Apps

To get all shared and owned apps in an asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_applications?access_token=<TOKEN>"

The results:

{
 "data": [
 {
 "category": "Games", "link": "/instantgames/<ID>/", "name": "testing again", "id": "<ID>" }, {
 "category": "Lifestyle", "link": "https://www.facebook.com/games/?app_id=<ID>", "name": "AccountKitTest", "id": "<ID>" } ], 
 ....
 }

To add an app:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_applications?asset_id=<ID>&access_token=<TOKEN>"

To remove an app:

curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_applications?asset_id=<ID>&access_token=<TOKEN>"

When you either add or remove an app successfully, we return true.

Custom Conversions

To see all owned and shared custom conversions data sets in an asset group:

curl -i -X GET \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_custom_conversions?access_token=<TOKEN>"

The results:

{
 "data": [{
  "data": [
    {
      "id": "<ID>"
    },
    {
      "id": "<ID>"
    }
  ],
  ....
}

To add custom conversions:

curl -i -X POST \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_custom_conversions?asset_id=<ID>&access_token=<TOKEN>"
curl -i -X DELETE \
 "https://graph.facebook.com/<VERSION>/<BUS_ASSET_GROUP_ID>/contained_custom_conversions?asset_id=<ID>&access_token=<TOKEN>"

When you either add or remove an custom conversions, we return true on success.

Ad Accounts

As a business admin, you can claim ad accounts that belong to a business. This enables you to easily assign people to the ad accounts they should access. You can then also assign Shared Funding Sources to your ad accounts.

Ad account groups cannot be claimed by a business. Users with access to certain ad account groups will still have access to them after those users are added to a Business Manager.

Claim Accounts

If you manage ad accounts outside of a Business Manager with the "Admin" role, you can claim them for your business. This is a one-time procedure. Once claimed, you can only manage the ad accounts in that Business Manager.

To claim an ad account for your business, provide the ad account ID in the format act_###. Send a POST:

curl \
  -F "adaccount_id=act_<AD_ACCOUNT_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
 "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/owned_ad_accounts"

If you are an Admin of the ad account, we immediately approve this claim request. Facebook returns access_status set to CONFIRMED.

If you are a user who does not have the proper permissions on the ad account, we send an ownership request ad account Admins. Once we send the request, the response contains access_status set to PENDING.

To accept an ownership request, you must be an ad account admin, and you should log in and accept the request in Ads Manager.

Request Account Access

Most marketing companies won't need to claim ad accounts from their clients. See Business-to-Business Functions to request access to assets owned by other business managers.

Create Ad Accounts

You must be an admin for a business to create new ad accounts. You can't use shared logins of business admins to create new ad accounts or perform other actions.

To use this API, you must have a valid business and page setup. If you have any incomplete ad accounts or pages unpublished by Facebook, your calls fail.

The fields available are:

Name Description Type

name

Name of the ad account

string

timezone_id

ID of the timezone

int

currency

Currency abbrevation used for this ad account

string

partner

FBMP or FBX partner (if there is one). Must be a Facebook Page Alias, Facebook Page ID or a Facebook App ID. If unavailable, use NONE or UNFOUND.

long or string

end_advertiser

Entity the ads will target. Must be a Facebook Page Alias, Facebook Page ID or a Facebook App ID. If unavailable, use NONE or UNFOUND.

long or string

media_agency

Agency; this could be your own business. Must be a Facebook Page Alias, Facebook Page ID or a Facebook App ID. If unavailable, use NONE or UNFOUND.

long or string

invoice

If a business has a Business Manager-Owned Normal Credit Line with Facebook, we attach the ad account to that credit line.

boolean

To create a new ad account for a business, you must specify name, currency, timezone_id, end_advertiser, media_agency, and partner, where end_advertiser, media_agency, and partner must be a Facebook Page Alias, Facebook Page ID or a Facebook app ID. For example, to identify your company as an advertiser for itself, specify my company or 20531316728.

If your ad account doesn't have an advertiser, Media Agency, or Partner, specify NONE. If your ad account has an advertiser, Media Agency, or Partner, but they are not on Facebook as a Page or an app, specify UNFOUND .

To create an ad account:

curl \
  -F "name=MyAdAccount" \
  -F "currency=USD" \
  -F "timezone_id=1" \
  -F "end_advertiser=<END_ADVERTISER_ID>" \
  -F "media_agency=<MEDIA_AGENCY_ID>" \
  -F "partner=NONE" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/adaccount"

If you already have an extended credit line with Facebook, you can set invoice to true. We then associate your new ad account with your extended credit line.

The response looks like this:

{
  "id": "act_<ADACCOUNT_ID>",
  "account_id": "<ADACCOUNT_ID>",
  "business_id": "<BUSINESS_ID>",
  "end_advertiser_id": "<END_ADVERTISER_ID>",
  "media_agency_id": "<MEDIA_AGENCY_ID>",
  "partner_id": "NONE"
}

Grant Agency Access

This example shows how to grant agency access to a catalog:

curl \
  -F "business=<BUSINESS_ID>" \
  -F "permitted_tasks=['ADMIN']" \
  "https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG>/agencies?access_token=<ACCESS_TOKEN>

View Owned Accounts

See all the ad accounts your business has access to with a GET call:

curl -G \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/owned_ad_accounts"

This returns all ad accounts owned by a business. Some fields are specific to the business and ad account relationship.

  • permitted_tasks is an array of the tasks you can assign for that particular ad account.

  • access_type defines if your business is acting as an OWNER or an AGENCY of the ad account.

To see ad accounts where the access is still pending, you can make this GET call:

curl -G \
  -d "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/pending_owned_ad_accounts"

Remove Accounts

You cannot remove ad accounts from your business if you're OWNER and if the accounts are CONFIRMED. If you have a PENDING access request or you have AGENCY access to the ad account, you can make this DELETE call:

curl \
  -X DELETE \
  -F "adaccount_id=act_<AD_ACCOUNT_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/ad_accounts"

View Account Access

See the ad accounts that someone has permission on with this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
"https://graph.facebook.com/VERSION/BUSINESS_SCOPED_USER_ID/assigned_ad_accounts"

To see permissions someone has for an ad account, make this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/act_AD_ACCOUNT_ID/assigned_users"

Add People to Accounts

After your Business Manager is associated with an ad account, you can assign tasks to other business users. Possible tasks include:

Name API Constant Description

Reporting only

['ANALYZE']

Can see data on ad performance

General user

['ADVERTISE', 'ANALYZE']

Can see and edit ads and create ads using the funding source associated with the ad account. Cannot set anything at ad account level such as funding source itself.

Admin

['MANAGE', 'ADVERTISE', 'ANALYZE']

Can manage all aspects of campaigns, reporting, billing and ad account permissions.

You need:

  • adaccount_id — Ad account ID, in act_123 form
  • user_id — User ID to add
  • Tasks to assign

To add a new user with the tasks ['MANAGE', 'ADVERTISE', 'ANALYZE'], make this POST call:

curl \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "tasks=['MANAGE', 'ADVERTISE', 'ANALYZE']" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/act_AD_ACCOUNT_ID/assigned_users"

Change Permissions on Accounts

Make the same POST call to change an existing user's tasks as you would to add a new user:

curl \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "tasks=['ANALYZE']" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/act_AD_ACCOUNT_ID/assigned_users"

Remove People from Ad Accounts

To remove someone from an account, you need:

  • adaccount_id — Ad account ID, in act_123 form
  • user_id — User ID to remove

The DELETE call is:

curl \
  -X DELETE \
  -F "user=<BUSINESS_SCOPED_USER_ID>" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION>/act_AD_ACCOUNT_ID/assigned_users"

Pages

Businesses can claim pages that belong to them. This enables administrators to easily assign people to pages they should have access to.

Claim Pages

To claim a page for your business as the OWNER, you need the page ID, and then send a POST request:

curl \
  -F "page_id=<PAGE_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/owned_pages"

Note: The ig_password parameter is needed when the page is connected with Instagram.

To claim a page for your business as an AGENCY, you need the page ID, and then send a POST request:

curl \
  -F "page_id=<PAGE_ID>" \
  -F "permitted_tasks=['ADVERTISE', 'ANALYZE']" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/client_pages"

If you use AGENCY, you must provide permitted_tasks.

To make this request you must use the access token of an Admin user or Admin system user of your business. If the user who makes the call is a Page Admin, or MANAGER, of the page for more than 7 days, the business immediately owns the Page. Facebook returns access_status in the response set to CONFIRMED. If someone becomes the Page Admin, or MANAGER, of the page in less than or equal to 7 days, we do not automatically approve the API request.

If the user who makes an OWNER claim call does not have the proper permissions on the Page, the call fails. Unlike claiming an ad account, no request is sent to the Page admins to be approved.

If you make an AGENCY claim, but do not have proper Page permissions, the response is PENDING. The Admin for that Page can log in and grant the access, deny it, or report the claim as a spam. If a business has too many Page access requests reported as spam, we lock the Business Manager.

To see all client pages you requested access to but are pending approval, make this GET call. You need the access token for the Admin system user:

curl -G \
-d "access_token=<ADMIN_SYSTEM_USER_ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/pending_client_pages"

View Business-Owned Pages

To see all pages that your business owns, use this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/BUSINESS_ID/owned_pages"

Note: The ig_password parameter is needed when the page is connected with Instagram.

To see all pages your business is an agency of, use this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/BUSINESS_ID/client_pages"

This returns a list of pages that belong to clients of a Business Manager.

Remove Pages

To remove a Page from the Business, make this DELETE call:

curl \
  -X DELETE \
  -F "page_id=<PAGE_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/pages"

Add People to Pages

After your business has a Page you can assign people tasks for it. Tasks include:

Name API Constant Description

Admin

['MANAGE', 'CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']

Can manage admin roles, send messages and post as the Page, create ads and view reports.

Editor

['CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']

Can edit the Page, send messages and post as the Page, create ads, and view reports.

Moderator

['MODERATE', 'ADVERTISE', 'ANALYZE']

Can respond to and delete comments on the Page, send messages as the Page, create ads, and view reports.

Advertiser

['ADVERTISE', 'ANALYZE']

Can create ads for the Page and view insights.

Analyst

['ANALYZE']

Can view reports.

You need:

  • page_id — ID of the Page
  • user_id — User ID to add
  • Tasks to assign

Make this POST call to add someone with the tasks ['MANAGE', 'CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']:

curl \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "tasks=['MANAGE', 'CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']" \
  -F "business=BUSINESS_ID" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/PAGE_ID/assigned_users"

Change Pages Access

To change an existing user's tasks, use the same POST call you do when you add a new user with tasks:

curl \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "tasks=['ADVERTISE', 'ANALYZE']" \
  -F "business=BUSINESS_ID" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/PAGE_ID/assigned_users"

View Page Permissions

To see pages with user permissions, make this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/BUSINESS_SCOPED_USER_ID/assigned_pages"

To see specific permissions on a Page, make this GET call:

curl -G 
  -d "access_token=ACCESS_TOKEN"  
  "https://graph.facebook.com/VERSION/PAGE_ID/assigned_users?business=<business_id>"

Remove Page Access

Before you can remove a page from Business Manager, you must also remove the admins of that page from your business.

To remove someone's access from an Page you own, you need

  • page_id — ID of the Page
  • user_id — ID of the user to remove

The DELETE call is:

curl \
  -X DELETE \
  -F "user=BUSINESS_SCOPED_USER_ID" \
-F "access_token=ACCESS_TOKEN" \
"https://graph.facebook.com/VERSION/PAGE_ID/assigned_users"

Apps

A Business Manager can claim apps that belong to a business. This enables you to easily manage apps associated with a business and advertising those apps.

The Business Manager-owned apps don't support role management. If you have to change app roles, you should do that from the app developer dashboard.

View Business-Owned Apps

To see all the applications your business owns:

curl -G \
  -d "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/owned_apps"

This returns a list of apps associated with a Business Manager.

To see all applications your business has access to, or you have requested access to, but are pending approval, make this call:

curl -G \
  -d "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/client_apps"
curl -G \
  -d "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/pending_client_apps"

The response contains permitted_tasks. This is an array of the roles you can assign for that particular ad account.

Remove Apps from Business Manager

To remove an app from the Business Manager, make this DELETE call:

curl \
  -X DELETE \
  -F "app_id=<APP_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/apps"

Instagram Accounts

A Business Manager can claim Instagram Accounts that belong to the business. This enables a business to easily manage Instagram accounts and ad accounts used for these Instagram accounts.

You cannot manage roles for Instagram accounts owned by a business. You can only run ads for Instagram accounts with access to the ad accounts linked to the Instagram accounts.

Claim Instagram Account

To claim an Instagram account for your business, you must use the Business Manager UI. See Instagram Ads Setup.

Manage Instagram Accounts

You can use the API to manage relationship between a business and an Instagram account. See Instagram Ads Setup; you can:

  • Assign a business as an agency of a business' Instagram account
  • Delete an agency from an Instagram account
  • See all Instagram accounts accessible by a given business, either owned or as agency
  • See all agency businesses of a given Instagram account

There are also APIs to manage the relationship between ad accounts and Instagram accounts; see Instagram Ads Setup.

Catalog

Manage catalogs for dynamic ads with Business Manager. Once you create a catalog for a business, you can set up Product Feeds and Product Sets.

See Catalog, Reference.

Viewing Business-Owned Catalogs

To see all catalogs that your business owns, use this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/BUSINESS_ID/owned_product_catalogs"

To see all catalogs your business is an agency of, use this GET call:

curl -G \
  -d "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/VERSION/BUSINESS_ID/client_product_catalogs"

This returns a list of catalogs that belong to clients of a Business Manager.

Catalog Permissions

For a list of new features, updates, and deprecations, see the Version 3.3 Changelog. For breaking changes, see Breaking Changes.

To update items in a catalog, a user (including a system user or a system admin user) needs permissions. The possible tasks on a catalog are MANAGE and ADVERTISE.

To assign both MANAGE and ADVERTISE tasks for a catalog to a user under a business:

curl \
  -X POST \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "business=BUSINESS_ID" \
  -F "tasks=['ADVERTISE', 'MANAGE']" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/assigned_users"

To assign the ADVERTISE task for a catalog to a user under a business:

curl \
  -X POST \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "business=BUSINESS_ID" \
  -F "tasks=['ADVERTISE']" \
  -F "access_token=ACCESS_TOKEN" \
"https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/assigned_users"

To get the user ID:

curl \-X GET \
  -F "access_token=<ACCESS_TOKEN>" \"https://graph.facebook.com/<API_VERSION>/me"

To remove permissions for a catalog from a user under a business:

curl \
  -X DELETE \
  -F "user=BUSINESS_SCOPED_USER_ID" \
  -F "business=BUSINESS_ID" \
  -F "access_token=ACCESS_TOKEN" \
  "https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/assigned_users"

To see catalogs that a business user, system user, or a pending user with permissions, make a GET request:

curl -G \-d "access_token=ACCESS_TOKEN" \"https://graph.facebook.com/<API_VERSION>/BUSINESS_SCOPED_USER_ID/assigned_product_catalogs"
curl -G \-d "access_token=ACCESS_TOKEN" \"https://graph.facebook.com/<API_VERSION>/SYSTEM_USER_ID/assigned_product_catalogs"
curl -G \-d "access_token=ACCESS_TOKEN" \"https://graph.facebook.com/<API_VERSION>/PENDING_USER_ID/assigned_product_catalogs"

To see permissions on a catalog under a business:

curl \
  -X GET \
  "https://graph.facebook.com/<API_VERSION>/assigned_users?business=BUSINESS_ID&access_token=ACCESS_TOKEN"

Permitted Roles

The following roles can be assigned to any user of the business, Admin or Employee, on catalogs accessible by this business:

API ConstantNameDescription

['MANAGE', 'ADVERTISE']

Catalog Admin

Can manage all aspects of the catalog with full read and write access, including create/update/delete of items, managing feeds, attaching catalog to pixels and apps, creating product sets, running dynamic ads with the catalog, changing catalog settings, and so on.

['ADVERTISE']

Catalog Advertiser

Can create product sets and run dynamic ads with the catalog. Cannot edit its products, feeds, or catalog settings.

When a user is added to a business, one of the following two roles can be assigned.

API Constant Name Description

ADMIN

Business Admin

Can manage all aspects of the business settings, including modifying or deleting the account and adding or removing people.

EMPLOYEE

Business Employee

Can see all of the information in the business settings but can't make any changes, except to add Pages or ad accounts which this user is an admin of to the business.

The following tasks can be assigned to any user of the business for ad accounts accessible by this business:

API Constant Name Description

['MANAGE', 'ADVERTISE', 'ANALYZE']

Ad Account Admin

Can manage all aspects of campaigns, reporting, billing and account permissions, and can set ad account spending limits. Ad account admins can also associate business payment methods.

['ADVERTISE', 'ANALYZE']

Advertiser on ad account

Can see and edit ads and set up ads using the payment method associated with the ad account.

['ANALYZE']

Ad Account analyst

Can see ad performance.

You can assign the following tasks to any user of a business on Pages accessible to this business:

API Constant Name Description

['MANAGE', 'CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']

Page admin

Can manage Page roles, send messages and post as the Page, create ads, and view insights.

['CREATE_CONTENT', 'MODERATE', 'ADVERTISE', 'ANALYZE']

Page editor

Can edit the Page, send messages and post as the Page, create ads, and view insights.

['MODERATE', 'ADVERTISE', 'ANALYZE']

Page moderator

Can respond to and delete comments on the Page, send messages as the Page, create ads, and view insights. Cannot post as the Page.

['ADVERTISE', 'ANALYZE']

Page Advertiser

Can create ads for the Page and view insights. Cannot post as the Page.

['ANALYZE']

Page analyst

Can view insights. Cannot post as the Page.

There is no role or task management APIs for apps in Business Manager.

The following roles can be assigned to any user of the business, Admin or Employee, on catalogs accessible by this business:

API Constant Name Description

ADMIN

Catalog Admin

Can manage all aspects of the catalog with full read and write access including create/update/delete of items, managing feeds, attaching catalog to pixels and apps, creating product sets, running dynamic ads with the catalog, changing catalog settings, etc.

ADVERTISER

Catalog Advertiser

Can create product sets and run dynamic ads with the catalog. Cannot edit its products, feeds or catalog settings.

There is no role management for Instagram accounts in Business Manager. Users with access to ad accounts that are linked to Instagram accounts can run ads for those Instagram accounts.

Business-to-Business Functions

Request Access to Assets

Business Manager may request access to an ad account or Page owned by another Business Manager. They must specify the tasks that they want to assign in the request.

Assigning a business to a Page requires a page token; for example:

curl 
  -F "business=<BUSINESS_ID>"
  -F "permitted_tasks=['MODERATE', 'ADVERTISE', 'ANALYZE']"     "https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/agencies?access_token=<ACCESS_TOKEN>"

To request AGENCY access, you must provide permitted_tasks in your request. You can only send request to assets to Business Manager that you intend to approve and that they must already know your business.

For example, a business that needs access to adaccount_id and needs to be able to assign its employees as ['ADVERTISE', 'ANALYZE'] would make this POST call:

curl \
  -F "adaccount_id=act_<AD_ACCOUNT_ID>" \
  -F "permitted_tasks=['ADVERTISE','ANALYZE']" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/client_ad_accounts?access_token=  <ACCESS_TOKEN>"

Similarly for a Page, if you want to assign ['ADVERTISE', 'ANALYZE'] tasks for a Page someone does not own:

curl \
  -F "page_id=<PAGE_ID>" \
  -F "permitted_tasks=['ADVERTISE','ANALYZE']" \
  "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/client_pages?access_token=<ACCESS_TOKEN>" 

These calls send out a notification to the respective admins of the ad account or Page, which asks to accept the access request. The respective admins will see the notification in Ads Manager or Pages Manager. They can also accept the request in the user interface. If you want to see outstanding requests via the API, make a GET request and check PENDING for the access_status field.

curl "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/clients?access_token=<ACCESS_TOKEN>"

The response:

"data": [
 {
    "name": "Random Page", 
    "page_permissions": [
    {
    "id": "1900952844321", 
    "permitted_tasks": [
        'MANAGE',
        'CREATE_CONTENT', 
        'MODERATE',  
        'ADVERTISE', 
        'ANALYZE',
    ], 
    "access_status": "CLIENT_RESPONSE_PENDING", 
    "access_requested_time": "2014-01-07T23:26:09+0000", 
    "access_updated_time": "2014-01-07T23:26:09+0000"
    }
    ], 
    "id": "190137931178903"
 },

Grant Access to Assets for Another Business Manager

This is also known as adding an Agency to your object.

To accept an access request of an object you own from another business manager, or to give access of one of the objects you own to another business manger, you must specify the business and the list of tasks they should have access to.

If the access token used to make the API call belongs to a user or system user who has access to the requested asset via a business, the access to the asset can only be granted if this business is the OWNER of the asset. You cannot grant access to assets of which you are just an AGENCY.

For example, to give someone access to an ad account using the [ADVERTISE,ANALYZE] tasks, use this POST request:

curl \
  -F "business=<BUSINESS_ID>" \
  -F "permitted_tasks=['ADVERTISE', 'ANALYZE']" \
  "https://graph.facebook.com//act_/agencies?access_token=<ACCESS_TOKEN>"

To give a business access to your page with [ADVERTISE], [MODERATE] and [ANALYZE]:

curl \
  -F "business=<BUSINESS_ID>" \
  -F "permitted_tasks=['MODERATE', 'ADVERTISE', 'ANALYZE']" \
  "https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/agencies?access_token=<ACCESS_TOKEN>"

Page admins can also accept a agency access requests in the Manage Admin Roles tabs in Page Settings on facebook.com.

Remove Access to Assets

This is also known as removing an agency from your business. To remove a business managers's access from your ad account:

curl \
  -X DELETE \
  -F "business=<BUSINESS_ID>" \
  "https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/agencies?access_token=<ACCESS_TOKEN>"

Similarly, to remove a Business's access from your Page:

curl \
  -X DELETE \
  -F "business=<BUSINESS_ID>" \
  "https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/agencies?access_token=<ACCESS_TOKEN>"

View Agency Access

To see all the businesses that have access to your ad account with a GET call:

curl "https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/agencies?access_token=<ACCESS_TOKEN>"

To see all the businesses that have access to your page:

curl "https://graph.facebook.com/<API_VERSION>/<PAGE_ID>/agencies?access_token=<ACCESS_TOKEN>"

To see all the businesses that have access to your business assets:

curl "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/agencies?access_token=<ACCESS_TOKEN>"

View Client Access

To see all the businesses that have given you access to one or more of their ad accounts or pages, use this GET call:

curl "https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/clients?access_token=<ACCESS_TOKEN>"

Sharing Custom Audiences between Business Managers

These APIs establish clear roles and responsibilities when accessing an audience belonging to another business. When a Custom Audience is shared between parties, a partnership relationship must first be established between the Business Managers. This is in the Partners section of Business Settings in Business Manager. The party sharing the audience must also affirm their compliance with our Custom Audience terms of service provided in Business Manager, see Facebook, Custom Audience Terms.

Once established, a sharing relationship enables a business to share audiences with another Business Manager. However, audiences can only be shared in one direction. This means the audience is shared from Business #1 to Business #2. Business #2 will not be able to share audiences back to Business #1 unless a separate sharing relationship from Business #2 to #1 is established.

Starting from July 2, 2018 in order to share a Custom Audience between Business Managers, such businesses should establish an audience sharing relationship as follows. You need Business Manager admin permission to request a relationship to share an audience. If two Business Managers have already established the relationship, then an advertiser can directly share the audience with the other business. See also Reference, Custom Audience and Reference, Custom Audience Shared Account Info

To create a relationship, make this call, to a specific custom_audience_id:

POST {custom_audience_id}/adaccounts?adaccounts=[<ad_account_id>]&relationship_type=[<relationship_type>] 

We handle a request based on the relationship status with the other business:

  • For ad accounts which have an existing approved relationship, we share the audience directly with them.
  • For ad accounts which have an existing in progress relationship, we add the audience ID to the request so that when the recipient business approves this request, we then share the audience.
  • For ad accounts which do not have any relationship, we create a sharing agreement with the audience ID attached to it so that when the recipient business approves this request, we can then share of the audience.

Facebook returns a sharing_data object for each ad account passed into the request. For example:

{  
    success: bool,
    sharing_data : [
     {         
       "ad_acct_id": id
       "business_id": id
       "audience_share_status" : string
       "errors" : list<string>
     },
     ...
    ]
}

Options and parameters for this request include:

Level Type Description Possible Values

adaccounts

list:numericstring

The IDs for ad accounts that you want to share the audience with.

relationship_type

list:string

Required. Denotes the relationship between the business owning the audience and the recipient business with which the audience is shared. An array of all values which apply.

Audience Info Provider, Information Manager, Ad Optimizer, Agency

Examples

If you do not have admin permissions for Business Manager and you try to share an audience, you get an error similar to this:

[   
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "NOT_SHARED"
       "errors" : [
        "You don't have permission to initiate a sharing relationship for this ad account/business"
       ]
    }
...
]

After you make a request, the business that owns the recipient ad account may receive a pending shared audience relationship request, if they do not have a relationship with you. They can see this status on their Business Manager. At the point the business can approve or decline the relationship request:

POST <SHARING_RELATIONSHIP_ID>?request_response="approve"

On success, the business gets this response:

{  
    success: bool
}

Options include:

Name Type Description Possible Values

request_response

string

Whether the business receiving a relationship requests approves or rejects the request.

approve, decline

After the business that received a relationship request approves it, you can share audience with them. When you make a request, sharing_data looks like this:

[   
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "SHARED"
       "errors" : []
    }
...
]

If you are a Business Manager admin and share an audience with a pending relationship request, Facebook appends the audience ID with the existing relationship:

[   
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "IN_PROGRESS"
       "errors" : []
    }
...
]

Since you can specify multiple ad accounts in your request to share an audience, results for each account appear in the response:

[   
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "SHARED"
       "errors" : []
    }
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "IN_PROGRESS"
       "errors" : []
    }
    {         
       "ad_acct_id": "<AD_ACCOUNT_ID>"
       "share_status" : "NOT_SHARED"
       "errors" : [
        "You don't have permission to initiate a sharing relationship for this ad account/business"
       ]
    }
...
]

To view requests to share an audience received by your business:

GET <BUSINESS_ID>/received_audience_sharing_requests

The response looks like this:

[   
    {         
       "initiator": {            
           "id": "<BUSINESS_ID>",            
           "name": "business_name1"         
        }, 
        "recipient": {            
           "id": "<BUSINESS_ID>",            
           "name": "business_name2"         
        },         
        "request_status": "IN_PROGRESS",
        "relationship_type": "[<relationship_type>]",
        "id": "<SHARING_RELATIONSHIP_ID>",
        "custom_audiences": [
            {
                "id": "<CUSTOM_AUDIENCE_ID>",
                "name": "<CUSTOM_AUDIENCE_NAME>",
                "share_account_name": "<ACCOUNT_NAME>",
                "share_account_id": "<ACCOUNT_ID>",
            }
        ]     
     }
...
]

To view requests sent by your business to share an audience with others:

GET <BUSINESS_ID>/initiated_audience_sharing_requests

The response looks like this:

[   
    {         
       "initiator": {            
           "id": "<BUSINESS_ID>",            
           "name": "business_name1"         
        }, 
        "recipient": {            
           "id": "<BUSINESS_ID>",            
           "name": "business_name2"         
        },         
        "request_status": "IN_PROGRESS",
        "relationship_type": "[<relationship_type>]",         
        "id": "<SHARING_RELATIONSHIP_ID>",
        "custom_audiences": [
            {
                "id": "<CUSTOM_AUDIENCE_ID>",
                "name": "<CUSTOM_AUDIENCE_NAME>",
                "share_account_name": "<ACCOUNT_NAME>",
                "share_account_id": "<ACCOUNT_ID>",
            }
        ]    
     }
...
]

Managing Your Relationship as an Ad Agency Acting on Behalf of Another Business

These APIs allow you to manage the relationship between your Ad Accounts and the businesses for which you are acting on behalf of (OBO). Creating these relationships allows you to access custom audiences for the business and use of the audience overlap tool.

Request Permission to Act OBO Another Business

To request permission to act OBO another business, make this POST call:

curl \
  -F "receiving_business=<CLIENT_BUSINESS_ID>" \
  -F "business_owned_object=act_<AD_ACCOUNT_ID>" \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<BUSINESS_ID>/sent_inprogress_onbehalf_requests"

Call parameters:

  • receiving_business - The business ID of the client you are acting OBO
  • business_owned_object - Ad account ID, in act_123 form

The response contains the OBO request ID and looks like this:

{
  "id": "1234567890" 
}

The new request has an IN_PROGRESS state.

View OBO Request Details

To view the details of an OBO request, make this GET request:

curl -G \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<OBO_REQUEST_ID>?fields=id,receiving_business,requesting_business,status,business_owned_object"

The response contains the details of the OBO request and looks like this:

{
  "id": "1111111111",
  "receiving_business": {
    "id": "2222222222",
    "name": "Example Business Name"
  },
  "requesting_business": {
    "id": "3333333333",
    "name": "Example Business Name"
  },
  "status": "IN_PROGRESS",
  "business_owned_object": "1111111111"
}

Delete OBO Request

To cancel a pending request to act OBO another business, make this DELETE request:

curl \
  -X DELETE \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<OBO_REQUEST_ID>"

The response, indicating success or failure, looks like this:

{
  "success": "true" 
}

View the Status of OBO Requests for an Ad Account

To view the status of requests to act OBO another business for an Ad account, make this GET request:

curl -G \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/act_<AD_ACCOUNT_ID>/onbehalf_requests?
    fields=id,status,receiving_business,requesting_business&status=<STATUS>"

The status parameter in the request must be APPROVE, DECLINE, or IN_PROGRESS.

The response contains an array with the OBO request objects for an Ad account matching the requested status.

Example response:

{
  "data": [
    {
      "id": "1111111111",
      "status": "IN_PROGRESS",
      "receiving_business": {
        "id": "2222222222",
        "name": "Example Business Name"
      },
      "requesting_business": {
        "id": "3333333333",
        "name": "Example Business Name"
      }
    }
  ]
}

View OBO Requests Received From Other Businesses

To view requests of IN_PROGRESS OBO requests sent to your business, make this GET request:

curl -G \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<BUSINESS_ID>/received_inprogress_onbehalf_requests"

The response contains the IN_PROGRESS OBO request IDs and looks like this:

{
  "data": [
    {
      "id": "1111111111"
    },
    {
      "id": "2222222222"
    },
    {
      "id": "3333333333"
    }
  ]
}

View Pending OBO Requests Sent by Your Business

To view OBO requests that were sent by your business that are still in the IN_PROGRESS state, make this GET request:

curl -G \
  -F "access_token=<ACCESS_TOKEN>" \
  "https://graph.facebook.com/<BUSINESS_ID>/sent_inprogress_onbehalf_requests"

The response contains the IN_PROGRESS OBO request IDs and looks like this:

{
  "data": [
    {
      "id": "1111111111"
    },
    {
      "id": "2222222222"
    },
    {
      "id": "3333333333"
    }
  ]
}