The Brand Safety and Suitability Passback API is a system that allows Meta Business Partners (MBPs) to share content risk labels and campaign performance data with Meta.
The goal of this system is to provide advertisers and third parties with a mechanism to give feedback on content, for Meta to be able to take action on that feedback, and allow for Meta and partners to compare content labels.
This API requires the capability grant brand_safety_feed_verification to the app.
Submit content risk labels for review and action.
| Parameter | Type | Required? | Description |
|---|---|---|---|
| list < Content > | Yes | List of one or more Content objects. The max size per request is 10,000. |
| Field | Type | Required? | Description |
|---|---|---|---|
| string | Yes | ID of the content (video post, etc.). |
| enum | No | Language of the content (ISO 639-1 format). |
| string | Yes | ID of the content owner (user, page, etc.). |
| list < Label > | Yes | List of one or more Label objects. The max size per request is 50. |
| enum (facebook, instagram, threads) | Yes | The platform that the content is delivered to. |
| enum (feed, reels, instream, reels_overlay) | Yes | The position that the content is delivered to. |
| Field | Type | Required? | Description |
|---|---|---|---|
| enum {none, adult_content, crime, death_injury, drugs, hate_speech, misinformation, online_piracy, profanity, social_issue, spam, terrorism, weapons} | Yes | The GARM category for the label. If the label doesn’t have a category, use “none”. |
| timestamp | No | The timestamp when the content was labeled in epoch seconds in UTC. |
| enum {human, machine} | No | Type of label based on review tier. |
| enum {floor, high, low, medium, no} | Yes | The GARM risk level for the label for the given category. |
| Field | Type | Required? | Description |
|---|---|---|---|
| boolean | Yes | A boolean to indicate success or failure. |
| list < string > | No | A list of content ids that we could not accept. |
POST /content_risk_labels
{
"content": [
{
"content_id": "<CONTENT_ID>",
"content_owner_id": "<CONTENT_OWNER_ID>",
"content_language": "en",
"platform": "facebook",
"position": "feed",
"labels": [
{
"category": "crime",
"risk_level": "floor",
"label_time": 1698879497,
"label_type": "human"
},
{
"category": "drugs",
"risk_level": "high",
"label_time": 1698879788,
"label_type": "machine"
},
...
]
},
...
]
}{
"success": true
}Submit content risk labels for an ad set for auditing and analysis.
Refer to the parameters for submitting content risk labels.
Refer to the response fields for submitting content risk labels.
POST /{ad_set_id}/content_risk_labels
{
"content": [
{
"content_id": "<CONTENT_ID>",
"content_owner_id": "<CONTENT_OWNER_ID>",
"content_language": "en",
"platform": "facebook",
"position": "feed",
"labels": [
{
"category": "crime",
"risk_level": "floor",
"label_time": 1698879497,
"label_type": "human"
},
{
"category": "drugs",
"risk_level": "high",
"label_time": 1698879788,
"label_type": "machine"
},
...
]
},
...
]
}{
"success": true
}Submit global brand safety/suitability scores for auditing and analysis.
| Parameter | Type | Required? | Description |
|---|---|---|---|
| enum {none, adult_content, crime, death_injury, drugs, hate_speech, misinformation, online_piracy, profanity, social_issue, spam, terrorism, weapons} | No | The GARM category for the score. Only applicable if the score applies to a single category. |
| float | No | The number of ad impressions adjacent to brand suitable content (based on the advertiser's customized suitability profile) divided by the total ad impressions, as measured in accordance with the GARM Brand Suitability Framework (industry standard criteria). |
| float | Yes | The number of ad impressions adjacent to brand suitable content (risk: no) divided by the total ad impressions, as measured in accordance with the GARM Brand Suitability Framework (industry standard criteria). |
| enum {facebook, instagram, threads, overall} | Yes | The platform that the content is delivered to. |
| enum {feed, reels, overall, instream, reels_overlay} | Yes | The position that the content is delivered to. |
| map < enum {adult_content, crime, death_injury, drugs, hate_speech, misinformation, online_piracy, profanity, social_issue, spam, terrorism, weapons}, enum {floor, high, low, medium, no} > | No | The advertiser's brand suitability profile specifying their highest acceptable risk level by category. |
| float | Yes | The number of ad impressions adjacent to brand safe content (risk: no, low, medium, high) divided by the total ad impressions, as measured in accordance with the GARM Brand Safety Floor Framework (industry standard criteria). |
| float | No | The percentage of ad impressions that cannot be accurately measured or categorized, out of the total number of impressions, as measured by the third-party measurement partner. |
| timestamp | Yes | The timestamp when the score was updated in epoch seconds in UTC. |
| Field | Type | Required? | Description |
|---|---|---|---|
| boolean | Yes | A boolean to indicate success or failure. |
POST /suitability_scores
{
"platform": "overall",
"position": "overall",
"updated_time": 1698880848,
"safety_score": 100.00,
"client_suitability_score": 98.34,
"no_risk_suitability_score": 95.62,
"unmeasurable_rate": 5.04,
"profile_settings":
{
"crime": "low",
"spam": "no",
...
}
}{
"success": true
}Submit brand safety/suitability scores for an ad account for auditing and analysis.
Refer to the parameters for submitting scores.
Refer to the response fields for submitting scores.
POST /act_{ad_account_id}/suitability_scores
{
"platform": "facebook",
"position": "feed",
"updated_time": 1698880848,
"safety_score": 100.00,
"client_suitability_score": 98.34,
"no_risk_suitability_score": 95.62,
"unmeasurable_rate": 5.04,
"profile_settings":
{
"crime": "low",
"spam": "no",
...
}
}{
"success": true
}Submit brand safety/suitability scores for an ad set for auditing and analysis.
Refer to the parameters for submitting scores.
Refer to the response fields for submitting scores.
POST /{ad_set_id}/suitability_scores
{
"platform": "facebook",
"position": "feed",
"updated_time": 1698880848,
"safety_score": 100.00,
"client_suitability_score": 98.34,
"no_risk_suitability_score": 95.62,
"unmeasurable_rate": 5.04,
"profile_settings":
{
"crime": "low",
"spam": "no",
...
}
}{
"success": true
}