Ads and Commerce

Content Block Lists API

Updated: Jun 30, 2026
Copy for LLM
Manage content block lists that allow advertisers to block their ads from appearing adjacent to content they consider unsuitable. You can use these APIs to create, update, and apply block lists on behalf of advertisers.

Permissions

  • The app requires the brand_safety_content_block_list capability grant.

Create a block list

Create a new content block list for a business.
Sample Request
POST /<business_id>/content_block_lists
?name=<block_list_name>

Parameters

Parameter Type Required (Y/N) Default Description
name
string
Y
The name of the block list to create.

Get all block lists for a business

Retrieve all content block lists owned by a business.
Sample Request
GET /<business_id>/content_block_lists
?fields=id,name,business
Sample Response
{
  "data": [
    {
      "id": "123456789",
      "name": "High Risk Content",
      "business": {
        "id": "987654321",
        "name": "Example Business"
      }
    }
  ]
}

Fields

Field Type Description
id
string
The block list ID.
name
string
The block list name.
business
object
The owning business.

Get block list metadata

Retrieve metadata for a specific content block list.
Sample Request
GET /<content_block_list_id>
?fields=id,name,business
Sample Response
{
  "id": "123456789",
  "name": "High Risk Content",
  "business": {
    "id": "987654321",
    "name": "Example Business"
  }
}

Fields

Field Type Description
id
string
The block list ID.
name
string
The block list name.
business
object
The owning business.

Rename a block list

Update the name of an existing content block list.
Sample Request
POST /<content_block_list_id>
?name=<new_block_list_name>

Parameters

Parameter Type Required (Y/N) Default Description
name
string
Y
The new name for the block list.

Delete a block list

Delete an existing content block list. The block list must not be applied to any ad accounts before deletion.
Sample Request
DELETE /<content_block_list_id>
Sample Response
{
  "success": true,
  "id": "123456789"
}

Get Facebook content on a block list

Retrieve all Facebook content IDs on a specific block list.
Sample Request
GET /<content_block_list_id>/facebook_content
?fields=id
Sample Response
{
  "data": [
    {
      "id": "111111111111111"
    },
    {
      "id": "222222222222222"
    }
  ]
}

Fields

Field Type Description
id
string
The Facebook content ID.

Get Instagram content on a block list

Retrieve all Instagram content IDs on a specific block list.
Sample Request
GET /<content_block_list_id>/instagram_content
?fields=id
Sample Response
{
  "data": [
    {
      "id": "333333333333333"
    },
    {
      "id": "444444444444444"
    }
  ]
}

Fields

Field Type Description
id
string
The Instagram content ID.

Get Threads content on a block list

Retrieve all Threads content IDs on a specific block list.
Sample Request
GET /<content_block_list_id>/threads_content
?fields=id
Sample Response
{
  "data": [
    {
      "id": "555555555555555"
    },
    {
      "id": "666666666666666"
    }
  ]
}

Fields

Field Type Description
id
string
The Threads content ID.

Add content to a block list

Add Facebook, Instagram, or Threads content to a specific block list. The API normalizes shares, attachments, and cross-posts to the root post ID (the ID of the original post that the share, attachment, or cross-post derives from).
Sample Request
POST /<content_block_list_id>/content
?facebook_ids=["111111111111111","222222222222222"]
&instagram_ids=["333333333333333","444444444444444"]
&threads_ids=["555555555555555","666666666666666"]

Parameters

Parameter Type Required (Y/N) Default Description
facebook_ids
List<fbid>
N
List of Facebook content IDs to add. Maximum 50K per mutation.
instagram_ids
List<fbid>
N
List of Instagram content IDs to add. Maximum 50K per mutation.
threads_ids
List<fbid>
N
List of Threads content IDs to add. Maximum 50K per mutation.

Delete content from a block list

Remove Facebook, Instagram, or Threads content from a specific block list.
Sample Request
DELETE /<content_block_list_id>/content
?facebook_ids=["111111111111111","222222222222222"]
&instagram_ids=["333333333333333","444444444444444"]
&threads_ids=["555555555555555","666666666666666"]

Parameters

Parameter Type Required (Y/N) Default Description
facebook_ids
List<fbid>
N
List of Facebook content IDs to remove.
instagram_ids
List<fbid>
N
List of Instagram content IDs to remove.
threads_ids
List<fbid>
N
List of Threads content IDs to remove.

Get applied ad accounts

Retrieve all ad accounts where a block list is currently applied.
Sample Request
GET /<content_block_list_id>/applied_ad_accounts
?fields=id,account_id
Sample Response
{
  "data": [
    {
      "id": "555555555555555",
      "account_id": "act_555555555555555"
    },
    {
      "id": "666666666666666",
      "account_id": "act_666666666666666"
    }
  ]
}

Fields

Field Type Description
id
string
The integer ad account ID.
account_id
string
The string ad account ID (prefixed with “act_”).

Apply a block list to an ad account

Apply a content block list to an ad account. You must have read permission on the ad account.
Sample Request
POST /<content_block_list_id>/applied_ad_accounts
?account_id=<ad_account_id>

Parameters

Parameter Type Required (Y/N) Default Description
account_id
string
Y
The ad account ID to apply the block list to.

Unapply a block list from an ad account

Remove a content block list from an ad account.
Sample Request
DELETE /<content_block_list_id>/applied_ad_accounts
?account_id=<ad_account_id>

Parameters

Parameter Type Required (Y/N) Default Description
account_id
string
Y
The ad account ID to unapply the block list from.

Get block lists applied to an account

Retrieve all content block lists applied to a specific ad account.
Note: This endpoint is planned but not yet available.
Sample Request
GET /<account_id>/content_block_lists

Check if content is in a block list

Check whether a specific content ID exists in a block list.
Note: This endpoint is planned but not yet available.
Sample Request
GET /<content_block_list_id>
?fields=contains.content_id(<content_id>)

Upload a content block list file

Upload a file of content IDs (up to 2 million) to a block list. The result will contain information about the job that will asynchronously process the file along with some information about the file itself.
Sample Request
POST https://api.facebook.com/content_block_lists/{content_block_list_id}/file_upload \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "X-API-Version: 1.0.0" \
  -F "file=@/path/to/file" \
  -F "operation=replace"
Sample Response
{
  "job_id": "cbl_batch_12345",
  "status": "queued",
  "operation": "replace",
  "file_metadata": {
    "filename": "content_ids.csv",
    "size_bytes": 52428800,
    "estimated_content_count": 1000000
  },
  "created_at": "2024-01-15T10:30:00Z"
}
CSV Format
content_id,platform
123456789,facebook
987654321,instagram

Parameters

Parameter Type Required (Y/N) Default Description
file
string
Y
Path of file containing the content IDs to process. Max size is 100 MB.
operation
enum
Y
Operation to be performed. Accepted values: “replace” - replaces all content IDs in the specified content block list with the content IDs included in the file.

Response fields

Field Type Required (Y/N) Description
job_id
string
Y
Unique ID of the job that will process the file asynchronously. Use this ID with the GET endpoint to fetch status updates.
status
enum
Y
Current status of the job. Supported statuses: queued, processing, failed, completed.
operation
enum
Y
Operation to be performed. Accepted values: “replace”.
file_metadata
object
Y
An object containing information about the file that was uploaded.
created_at
datetime
Y
Datetime of when the job was created.

file_metadata Object

Field Type Required (Y/N) Description
filename
string
Y
Name of the file that was uploaded.
size_bytes
integer
Y
Size of the file that was uploaded, in bytes.
estimated_content_count
integer
Y
Estimated number of content to process.

Get job status

Retrieve information about an ongoing job. The response will contain details such as job ID, status, percentage completion, and any error details, if applicable.
Sample Request
GET https://api.facebook.com/content_block_lists/{content_block_list_id}/batch_jobs/{job_id} \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "X-API-Version: 1.0.0"
Sample Response
{
  "job_id": "cbl_batch_12345",
  "content_block_list_id": "cbl_67890",
  "status": "processing",
  "operation": "replace",
  "percent_completion": 90,
  "timestamps": {
    "started_at": "2025-12-10T11:45:21-08:00",
    "updated_at": "2025-12-10T11:47:53-08:00",
    "completed_at": null
  },
  "error_details": null
}

Response fields

Field Type Required (Y/N) Description
job_id
string
Y
Unique ID of the job that will process the file asynchronously.
content_block_list_id
fbid
Y
FBID of the Content Block List.
status
enum
Y
Current status of the job. Supported statuses: queued, processing, failed, completed.
operation
enum
Y
Operation to be performed. Accepted values: “replace”.
percent_completion
integer
Y
Percentage of job completion (0-100).
timestamps
object
Y
An object containing timestamp information about the job.
error_details
string
N
Error details of a job that failed.

timestamps Object

Field Type Required (Y/N) Description
started_at
datetime
Y
Timestamp of when the job started.
updated_at
datetime
Y
Timestamp of when the job was last updated.
completed_at
datetime
N
Timestamp of when the job completed.

Download a content block list file

Download a CSV file of all content IDs for a given content block list.
Note: This endpoint is a PUT and not a GET, as every time this endpoint is called, a new file will be created and stored for retrieval.
Sample Request
PUT https://api.facebook.com/content_block_lists/{content_block_list_id}/file_download \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "X-API-Version: 1.0.0"
Sample Response
{
  "content_block_list_id": "cbl_67890",
  "download_url": "https://example.com/download/content_ids.csv",
  "file_metadata": {
    "name": "content_ids.csv",
    "size_bytes": 52428800,
    "facebook_content_count": 1000000,
    "instagram_content_count": 1000000
  }
}

Response fields

Field Type Required (Y/N) Description
content_block_list_id
fbid
Y
FBID of the Content Block List.
download_url
string
Y
URL to download the CSV file.
file_metadata
object
Y
An object containing information about the file to be downloaded.

file_metadata Object

Field Type Required (Y/N) Description
name
string
Y
Name of the file to download.
size_bytes
integer
Y
Size of the file to download, in bytes.
facebook_content_count
integer
Y
Number of Facebook content IDs in the file.
instagram_content_count
integer
Y
Number of Instagram content IDs in the file.

Limits and guardrails

The following limits are enforced to ensure system stability:
  • Block lists per business/3P: Maximum 200 block lists per 3P
  • Content per block list: Maximum 2M posts per block list
  • Content per mutation: Maximum 50K add/remove posts per API call
  • Block lists per ad account: Maximum 75 block lists applied per account
  • API rate limit: 480K API calls per hour

Learn more