Feed Verification API
Updated: Jul 9, 2026
Copy for LLM
Ads in WhatsApp Status are available via the Marketing API. Learn more about ads in WhatsApp Status.
Measure, verify, and understand the suitability of content.
Permissions
- The app requires the
brand_safety_feed_verificationcapability grant.
Get an adjacent content delivery report
Get the available date range for the report
Example
First, get the data availability range for a specific placement:
Sample Request
GET /adjacent_content_delivery_report_date_ranges ?platform=facebook &position=feed &fields=earliest_datetime,latest_datetime,missing_datetimes
Sample Response
{ "data": [ { "earliest_datetime": "2024-02-16T00:00", "latest_datetime": "2024-02-31T23:00", "missing_datetimes": [ "2024-02-23T18:00", "2024-02-25T05:00" ] } ] }
Parameters
| Parameter | Type | Required (Y/N) | Default | Description |
|---|---|---|---|---|
platform | enum | Y | Ads reporting platform type. Accepted values are: facebook, instagram, threads. | |
position | enum | Y | Ads reporting platform position type. Accepted values are: feed, reels. | |
is_download | boolean | N | false | Indicates whether or not to get the available date range for file-based adjacent content delivery reports. |
Get a business level (file-based) adjacent content delivery report
Purpose
Fetch all ad impressions for a business partner per hour. The lookback period is 15 days. Each result will contain a list of objects with metadata for the files that contain metadata about the adjacent (above/below) content. Note that only
public content in the supported languages is returned. Impression data from campaigns that target audiences under 18 is not included.Parameters
| Parameter | Type | Required (Y/N) | Default | Description |
|---|---|---|---|---|
platform | enum | Y | Ads reporting platform type. Accepted values are: facebook, instagram, threads. | |
position | enum | Y | Ads reporting platform position type. Accepted values are: feed, reels. | |
datetime | datetime | Y | Datetime of the report in format: [YYYY]-[MM]-[DD]T[HH]:00. |
Fields
The data body returns a:
List<AdjacentContentDeliveryReportFile> nodes. The node structs and fields are defined below.| Field | Type | Default | Description |
|---|---|---|---|
name | string | X | Globally unique string to identify the impression. |
download_url | string | X | URL to download the compressed JSONL file (GZIP). |
index | int | X | Integer that represents the ordering of the files for a given hourly report. 1 represents the first chunk of the report. |
When the file is decompressed, each line of the JSONL file will represent a JSON object with the below structure.
| Field | Type | Default | Description |
|---|---|---|---|
time_key | datetime | X | Datetime of the report in format: [YYYY]-[MM]-[DD]T[HH]:00. |
ad_account_id | fbid | X | ID of the ad account whose ad belongs to. |
campaign_id | fbid | X | ID of the ad campaign whose ad belongs to. |
ad_set_id | fbid | X | ID of the ad set whose ad belongs to. |
ad_id | fbid | X | ID of the ad which contains information about the display of an ad, including ad creative such as image, video, and text. |
impression_id | fbid | X | ID of the impression. |
above_content_id | fbid | X | ID of the above adjacent post content. A value of null indicates the content or owner is private or that the unit is invalid (a non-eligible unit type or ad). |
above_content_root_id | fbid | X | Root ID of the above adjacent post content. A value of null indicates the content or owner is private or that the unit is invalid (a non-eligible unit type or ad). |
above_content_owner_id | fbid | X | ID of the above adjacent post owner. A value of null indicates the content or owner is private or that the unit is invalid (a non-eligible unit type or ad). |
above_content_root_owner_id | fbid | X | ID of the above adjacent post’s root post’s owner. A value of null indicates the content or owner is private or that the unit is invalid (a non-eligible unit type or ad). |
above_content_language | enum | X | Language of the above adjacent post content in ISO 639-1 code format. A value of null indicates the language is undetectable. Supported languages are: Arabic (ar), English (en), Spanish (es), French (fr), Portuguese (pt), Chinese (zh), German (de), Assamese (as), Bengali (bn), Bhojpuri (bp), Gujarati (gu), Hindi (hi), Italian (it), Japanese (ja), Kannada (kn), Malayalam (ml), Marathi (mr), Malay (ms), Oriya (or), Punjabi (pa), Polish (pl), Swedish (sv), Tamil (ta), Telugu (te), Thai (th), Turkish (tr), Urdu (ur), Vietnamese (vi). |
above_content_position | enum | X | Position of the above adjacent post content relative to the ad. This is currently always set to above. |
above_content_distance | integer | X | Distance of the above adjacent post content from the ad. This is currently always 1. |
above_content_privacy | enum | X | Privacy of the above adjacent post content. This can be either public or private. |
below_content_id | fbid | X | ID of the below adjacent post content. A value of null indicates the content or owner is private. |
below_content_root_id | fbid | X | Root ID of the below adjacent post content. A value of null indicates the content or owner is private. |
below_content_owner_id | fbid | X | ID of the below adjacent post owner. A value of null indicates the content or owner is private. |
below_content_root_owner_id | fbid | X | ID of the below adjacent post’s root post’s owner. A value of null indicates the content or owner is private. |
below_content_language | enum | X | Language of the below adjacent post content in ISO 639-1 code format. A value of null indicates the language is undetectable. Supported languages are: Arabic (ar), English (en), Spanish (es), French (fr), Portuguese (pt), Chinese (zh), German (de), Assamese (as), Bengali (bn), Bhojpuri (bp), Gujarati (gu), Hindi (hi), Italian (it), Japanese (ja), Kannada (kn), Malayalam (ml), Marathi (mr), Malay (ms), Oriya (or), Punjabi (pa), Polish (pl), Swedish (sv), Tamil (ta), Telugu (te), Thai (th), Turkish (tr), Urdu (ur), Vietnamese (vi). |
below_content_position | enum | X | Position of the below adjacent post content relative to the ad. This is currently always set to below. |
below_content_distance | integer | X | Distance of the below adjacent post content from the ad. This is currently always 1. |
below_content_privacy | enum | X | Privacy of the below adjacent post content. This can be either public or private. |
Example request for Facebook Feed
GET https://api.facebook.com/adjacent_content_delivery_reports/{business_id}/file_download ?platform=facebook &position=feed &datetime=2025-11-05T00:00 -H "Authorization: Bearer <ACCESS_TOKEN>"
Sample Response
{ "data": [ { "name": "brand_suitability_facebook_feed_2025-11-05T00:00_biz_<BUSINESS_ID>_1_of_25.jsonl.gz", "download_url": "<DOWNLOAD_URL>", "index": 1 }, { "name": "brand_suitability_facebook_feed_2025-11-05T00:00_biz_<BUSINESS_ID>_2_of_25.jsonl.gz", "download_url": "<DOWNLOAD_URL>", "index": 2 }, { "name": "brand_suitability_facebook_feed_2025-11-05T00:00_biz_<BUSINESS_ID>_3_of_25.jsonl.gz", "download_url": "<DOWNLOAD_URL>", "index": 3 } ] }
Error codes
See also Marketing API | Error Reference
| Code | Subcode | Description |
|---|---|---|
100 | Invalid Parameter. | |
2349046 | Invalid Platform Parameter. | |
2349047 | Invalid Position Parameter. | |
2349048 | Date Out Of Range. | |
2349049 | Invalid Cursor. | |
200 | Permissions error. | |
80011 | There have been too many calls to Brand Safety APIs. Wait a bit and try again. |
fbtrace_id: Internal support identifier. When reporting a bug related to a Graph API call, include the fbtrace_id to help us find log data for debuggingFacebook Feed APIs
Post API
Purpose
Fetch metadata and attachments for an individual post in a profile’s Facebook feed. The profile could be a user, page, app, or group.
Note: This API requires Page Public Content Access app review permission.
Sample Request
GET /{owner_id}_{post_id} ?fields=attachments,created_time,updated_time,message,message_tags,from,permalink_url
Sample Response
{ "attachments": { "data": [ { "media": { "image": { "height": 720, "src": "https://scontent-sjc3-1.xx.fbcdn.net/v/t15.5256-10/272984469_5122311034448813_518990337139554929_n.jpg?stp=dst-jpg_s720x720&_nc_cat=110&ccb=1-7&_nc_sid=ad6a45&_nc_ohc=qt2qVTfvjHIAX9f425U&_nc_ht=scontent-sjc3-1.xx&oh=00_AT8YgL5mkADtXc3epplcoaCUoIoaed1Lm8COkOGg7Uy9ug&oe=62EFF2F1", "width": 408 }, "source": "https://video-sjc3-1.xx.fbcdn.net/v/t42.1790-2/272804096_325253656025909_4477570199643303140_n.mp4?_nc_cat=102&ccb=1-7&_nc_sid=985c63&efg=eyJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&_nc_ohc=4aUJY_YNKRoAX9vw-uh&_nc_ht=video-sjc3-1.xx&oh=00_AT-0SqEtLcDdswiJ-bh021rF2_OtN3OUMDkt3TZZhRYuAw&oe=62ECB13C" }, "target": { "id": "5122289161117667", "url": "https://www.facebook.com/brookselitelandscapes/videos/5122289161117667/" }, "title": "RVA Home Show 2022", "type": "video_autoplay", "url": "https://www.facebook.com/brookselitelandscapes/videos/5122289161117667/" } ] }, "created_time": "2022-01-30T20:17:04+0000", "updated_time": "2022-02-18T12:11:50+0000", "message": "🤩 We are so excited to have finally met so many of our Facebook followers in person, current customers and potential customers out here at the RVA Home Show!! THANK YOU ALL so much for coming and checking out our booth at our first show!! 🙌 if you did not have a chance to make it out here, we've put together a quick video to share the experience with you 📸 Thank you again for all of the continued support! (Techo-Bloc)", "message_tags": [ { "id": "216754038360102", "name": "Techo-Bloc", "type": "page", "offset": 416, "length": 10 } ], "from": { "name": "Brooks Elite Landscapes", "id": "332104164111679" }, "permalink_url": "https://www.facebook.com/332104164111679/posts/951866525468770/", "id": "332104164111679_951866525468770" }
Video API
Purpose
Fetch metadata and downloadable source file for an individual video on Facebook.
Sample Request
GET /{video_id} ?fields=permalink_url,source,created_time,updated_time,from,description,picture
Sample Response
{ "permalink_url": "/brookselitelandscapes/videos/773275220658768/", "source": "https://video-sjc3-1.xx.fbcdn.net/v/t39.25447-2/296672208_3302846743372673_5139359605630684497_n.mp4?_nc_cat=102&vs=16d3a1916d225711&_nc_vs=HBksFQAYJEdORGJyaEdCNF9MdTY3c0xBRkhObS1KVXJGSkhibWRqQUFBRhUAAsgBABUAGCRHTWREcWhGdTM0WUhPNkVBQUo2S25RNlNqWlVwYnJGcUFBQUYVAgLIAQBLBogScHJvZ3Jlc3NpdmVfcmVjaXBlATENc3Vic2FtcGxlX2ZwcwAQdm1hZl9lbmFibGVfbnN1YgAgbWVhc3VyZV9vcmlnaW5hbF9yZXNvbHV0aW9uX3NzaW0AKGNvbXB1dGVfc3NpbV9vbmx5X2F0X29yaWdpbmFsX3Jlc29sdXRpb24AEWRpc2FibGVfcG9zdF9wdnFzABUAJQAcAAAmlqmRwqfdzQMVAigKc2FuZGNhc3RsZRgLdnRzX3ByZXZpZXccF0BdEQYk3S8bGClkYXNoX2k0bGl0ZWJhc2ljXzVzZWNnb3BfaHEyX2ZyYWdfMl92aWRlbxIAGBh2aWRlb3MudnRzLmNhbGxiYWNrLnByb2Q4ElZJREVPX1ZJRVdfUkVRVUVTVBsKiBVvZW1fdGFyZ2V0X2VuY29kZV90YWcGb2VwX2hkE29lbV9yZXF1ZXN0X3RpbWVfbXMBMAxvZW1fY2ZnX3J1bGUHdW5tdXRlZBNvZW1fcm9pX3JlYWNoX2NvdW50BDMxOTERb2VtX2lzX2V4cGVyaW1lbnQADG9lbV92aWRlb19pZA83NzMyNzUyMjA2NTg3NjgSb2VtX3ZpZGVvX2Fzc2V0X2lkEDUyMjg2MjA5NTcxNzU0NDEVb2VtX3ZpZGVvX3Jlc291cmNlX2lkEDEwMTUzNTI3NTI0ODI4OTEcb2VtX3NvdXJjZV92aWRlb19lbmNvZGluZ19pZBAxMzc4NTMyODI1OTY4OTUxDnZ0c19yZXF1ZXN0X2lkACUCHAAlxAEbB4gBcwQ3OTA1AmNkCjIwMjItMDctMjgDcmNiBDMxMDADYXBwE0ZhY2Vib29rIGZvciBpUGhvbmUCY3QZQ09OVEFJTkVEX1BPU1RfQVRUQUNITUVOVBNvcmlnaW5hbF9kdXJhdGlvbl9zBzExNi4zMDkCdHMVcHJvZ3Jlc3NpdmVfZW5jb2RpbmdzAA%3D%3D&ccb=1-7&_nc_sid=41a7d5&efg=eyJ2ZW5jb2RlX3RhZyI6Im9lcF9oZCJ9&_nc_ohc=czalgyZgc1YAX9VjHuC&_nc_ht=video-sjc3-1.xx&oh=00_AT--2EefgQ54VCSNMmiSpC2I3rLV5IWuHQBWZv63sB-qKw&oe=62F039D4&_nc_rid=401297287969366", "created_time": "2022-07-28T23:29:13+0000", "updated_time": "2022-08-02T22:34:22+0000", "from": { "name": "Brooks Elite Landscapes", "id": "332104164111679" }, "description": "👋 Welcome to our next job site in Mechanicsville!", "picture": "https://scontent-sjc3-1.xx.fbcdn.net/v/t15.5256-10/296266458_3171248163095396_202928376065076133_n.jpg?stp=dst-jpg_s160x160&_nc_cat=101&ccb=1-7&_nc_sid=08861d&_nc_ohc=XcFNSij3VIUAX-WxgHV&_nc_ht=scontent-sjc3-1.xx&oh=00_AT-mZFUSES-e5dX0AKzhKZUuebsrTgilMYBWPSubpe_2SQ&oe=62F03711", "id": "773275220658768" }
Photo API
Purpose
Fetch metadata and downloadable source file for an individual photo on Facebook.
Sample Request
GET /{photo_id} ?fields=name,created_time,updated_time,alt_text,from,picture
Sample Response
{ "name": "Imagen: turismosensanluis.com.ar", "created_time": "2021-07-21T03:45:08+0000", "updated_time": "2021-09-16T18:27:17+0000", "alt_text": "No photo description available.", "from": { "name": "San Luis Obispo", "id": "159567030739714" }, "picture": "https://scontent-sjc3-1.xx.fbcdn.net/v/t39.30808-6/222344358_4718187764877595_3802832716004072819_n.jpg?stp=dst-jpg_s130x130&_nc_cat=111&ccb=1-7&_nc_sid=caaa8d&_nc_ohc=dqsbq8fkIlcAX_kVvF8&_nc_ht=scontent-sjc3-1.xx&oh=00_AT-vo2xKwJllejk4P6FwvW39QWsff-XjmqTDMscg0pLiwg&oe=62F04213", "id": "4718187754877596" }
Page API
This API requires the Page Public Content Access app review permission.
Purpose
Fetch detailed information about a page on Facebook.
Sample Request
GET /{page_id} ?fields=name,about,business,category,link
Sample Response
{ "name": "Capital T Industries", "about": "We own the earth.", "business": { "id": "981914045859716", "name": "Capital T Industries" }, "category": "Computer Company", "link": "https://www.facebook.com/1955398231373718", "id": "1955398231373718" }
Instagram Media API
This API requires capability grant to the app.
This is accessed via graph.facebook.com (not graph.instagram.com)
Purpose
Fetch metadata for content in a profile’s Instagram feed.
Request Signature:
GET {content-id} ?fields=caption,permalink,shortcode,thumbnail_url,timestamp,media_url,comments_count,like_count,media_product_type,is_comment_enabled,username,media_type"
Parameters
| Field | Type | Description |
|---|---|---|
caption | string | Caption. Excludes album children. The @ symbol is excluded. |
comments_count | integer | Count of comments on the media. Excludes comments on album child media and the media’s caption. Includes replies to comments. |
is_comment_enabled | boolean | Indicates if comments are enabled or disabled. Excludes album children. |
like_count | integer | Count of likes on the media, including replies to comments. Excludes likes on album child media and likes on promoted posts created from the media. If queried indirectly through another endpoint or field expansion:
|
media_product_type | string | Surface where the media is published. Can be AD, FEED, STORY, or REELS. |
media_type | string | Media type. Can be CAROUSEL_ALBUM, IMAGE, or VIDEO. |
media_url | string | The URL for the media. |
permalink | string | Permanent URL to the media. |
shortcode | string | Shortcode to the media. |
thumbnail_url | string | Media thumbnail URL. Only available on VIDEO media. |
timestamp | string | ISO 8601-formatted creation date in UTC (default is UTC ±00:00). |
username | string | Username of user who created the media. |
Sample Request
GET aWaBc789dfbWVkaWFfM31234B267rSTjE3OEAdDef56zY2?fields=caption,permalink,shortcode,thumbnail_url,timestamp,media_url,comments_count,like_count, media_product_type,is_comment_enabled,username,media_type
Sample Response
{ "caption": "This is test caption 👏", "permalink": "https://www.instagram.com/p/abCPermAlinkDEf/", "shortcode": "https://www.instagram.com/p/abCPermAlinkDEf/", "timestamp": "2023-03-15", "media_url": "https://scontent-sjc3-1.cdninstagram.com/v/t51.29350-15/33469898463_551845628803718194_857885682206876323153_n.jpg?_nc_cat=111&ccb=1-7&_nc_sid=8ae9d6&_nc_ohc=9pqbSMGxGE4AXU8eXIdX&_nc_oc=AQnEgfjngsKlF12SscbgTCLDxgeHIhJPiZOgFPJ90L0jLpp2_TEjApSfprx-VfW6KSBfWzNmmGlO1aL1OgvmSV01NW&_nc_ht=scontent-sjc3-1.cdninstagram.com&edm=ABWH0kIBBEAAAA&oh=00_AfB9h8KEyB18uVdD0MvkB88Bce4da6b_oSwzKtByK0Bg5Ntew&oe=64397E65", "comments_count": 527, "like_count": 32385, "media_product_type": "FEED", "is_comment_enabled": true, "username": "test_username", "media_type": "CAROUSEL_ALBUM" }
Note:
thumbnail_url is omitted in the above example response because thumbnail_url is only present for video media types. The thumbnail_url’s value type is similar to media_url.Ads APIs
This API requires “read” (that is, “View Performance”) permission on the ad account.
Purpose
Fetch details about an ad account, which is a business, person, or other entity who creates and manages ads on Facebook.
Ad Account API
Reference Ad Account for a complete list of ad account fields.
Sample Request
GET /act_{account_id} ?fields=account_status,name,owner,created_time,timezone_name,currency,amount_spent,spend_cap,business_country_code,brand_safety_content_filter_levels
Sample Response
{ "account_status": 1, "name": "Capital T Industries", "owner": "981914045859716", "created_time": "2022-04-04T17:41:28-0700", "timezone_name": "America/Los_Angeles", "currency": "USD", "amount_spent": "14255", "spend_cap": "25000", "business_country_code": "US", "brand_safety_content_filter_levels": [ "AN_STRICT", "FACEBOOK_STRICT", "FEED_RELAXED" ], "id": "act_972376150317754" }
Effective brand safety content filter levels
When you read targeting for an ad set, the response includes an
effective_brand_safety_content_filter_levels field. This read-only field returns the most conservative merge of the account-level and campaign-level brand safety content filter settings. Use this field to determine the actual filter levels that Meta applies to ad delivery, rather than only the levels configured on the ad set.The values use the same enum as
brand_safety_content_filter_levels (for example, FACEBOOK_STRICT, FEED_RELAXED, AN_STRICT). If the account-level setting is stricter than the campaign-level setting, the effective levels reflect the stricter value.Ad Set API
This API requires “read” (that is, “View Performance”) permission on the ad account.
Purpose
Fetch details about an ad set, which is a group of ads that share the same daily or lifetime budget, schedule, bid type, bid info, and targeting data. The supported ad placement to enum value mapping is below:
- Facebook Feed:
targeting.facebook_positions.feed - Facebook Reels:
targeting.facebook_positions.facebook_reels - Instagram Feed:
targeting.instagram_positions.stream - Instagram Reels:
targeting.instagram_positions.reels
Sample Request
Reference Ad Set for a complete list of ad set fields and Placement Targeting for a complete list of targeting fields.
GET /{ad_set_id} ?fields=name,effective_status,start_time,end_time,daily_budget,daily_spend_cap,targeting
Sample Response
{ "name": "New Traffic Ad Set", "effective_status": "ACTIVE", "start_time": "2022-04-04T18:11:53-0700", "daily_budget": "400", "targeting": { "age_max": 65, "age_min": 18, "geo_locations": { "countries": [ "US", "IN" ], "location_types": [ "home", "recent" ] }, "targeting_optimization": "none", "brand_safety_content_filter_levels": [ "AN_STRICT", "FACEBOOK_STRICT", "FEED_RELAXED" ], "effective_brand_safety_content_filter_levels": [ "AN_STRICT", "FACEBOOK_STRICT", "FEED_RELAXED" ], "excluded_brand_safety_content_types": [ "INSTREAM_LIVE" ], "publisher_platforms": [ "facebook" ], "facebook_positions": [ "feed", "biz_disco_feed", "facebook_reels", "facebook_reels_overlay", "video_feeds", "instream_video", "marketplace", "story", "search" ], "instagram_positions": [ "stream", "ig_search", "story", "explore", "reels", "explore_home", "profile_feed" ], "device_platforms": [ "mobile", "desktop" ] }, "id": "23850518998920104" }
Ad Set Insights API
This API requires “read” (that is, “View Performance”) permission on the ad account.
Purpose
Fetch metrics (for example, impressions) for an ad set, which can include estimated or in-development metrics.
Sample Request
GET /{ad_set_id}/insights ?fields=impressions,spend &breakdowns=publisher_platform,platform_position &time_range={'since': '2022-07-15', 'until': '2022-08-03'}
Sample Response
{ "data": [ { "impressions": "203407", "spend": "60.988484", "date_start": "2022-07-15", "date_stop": "2022-08-03", "publisher_platform": "facebook", "platform_position": "feed" }, { "impressions": "41134", "spend": "7.651064", "date_start": "2022-07-15", "date_stop": "2022-08-03", "publisher_platform": "facebook", "platform_position": "facebook_reels_overlay" }, { "impressions": "56981", "spend": "3.250452", "date_start": "2022-07-15", "date_stop": "2022-08-03", "publisher_platform": "facebook", "platform_position": "instream_video" } ], "paging": { "cursors": { "before": "MAZDZD", "after": "MgZDZD" } } }
Embed APIs
This API requires oEmbed Read app review permission.
Purpose
Embed HTML and basic metadata for public Facebook and Instagram pages, posts, and videos.
An alternative to the oEmbed API is to Embed Posts directly into the webpage using the JavaScript SDK or an iFrame. The
permalink_url for a post can be obtained from the Post API.oEmbed API
Sample Request
GET /oembed_post?url={post_url}
Sample Response
{ "author_name": "Facebook", "author_url": "https://www.facebook.com/20531316728", "provider_url": "https://www.facebook.com", "provider_name": "Facebook", "html": "<div id=\"fb-root\"></div> <script async=\"1\" defer=\"1\" crossorigin=\"anonymous\" src=\"https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v14.0\" nonce=\"7OdAy1bh\"></script><div class=\"fb-post\" data-href=\"https://www.facebook.com/20531316728/posts/10154009990506729/\" data-width=\"552\"><blockquote cite=\"https://graph.facebook.com/20531316728/posts/10154009990506729/\" class=\"fb-xfbml-parse-ignore\">Posted by <a href=\"https://www.facebook.com/20531316728\">Facebook</a> on <a href=\"https://graph.facebook.com/20531316728/posts/10154009990506729/\">Thursday, August 27, 2015</a></blockquote></div>", "type": "rich", "version": "1.0", "width": 552 }
Additional useful documentation
For a user-friendly, interactive UI, try out Meta’s Graph API Explorer
FAQs
Q: How to link the data across various datasets (marketing API, to ad impressions and campaign information, to content)?
A: Content is connected by
content_id and/or content_owner_id between the Brand Safety Adjacent Content Delivery Report (ACDR) API and the respective content APIs (such as Post, Video, and Page). The various ad APIs are connected by ad object (such as ad_account_id and adset_id).
Is each line a unique impression, will you need to deduplicate data/rows?
Each row is a unique ad impression containing the adjacent content that appeared above and below the ad. Note that the adjacent content itself can be duplicated, since the same post can appear next to different ad impressions.Q: How often should you pull data from each API?
A: New data is available from the Brand Safety ACDR API on a daily cadence with an average latency of ~9 hours.
Q: Why are some campaign impressions not included in ACDR files?
A: Impression data from campaigns that target audiences under 18 is not included.
Q: What is the time zone of the data set?
A: The time zone is based on the configured time zone of the ad account that owns the ad set.
Q: What time zone are the public APIs set?
A: Most platform APIs (such as Post and Video) include time zone information, meaning the datetimes are available as a Unix or ISO 8601 timestamp and can be converted to other time zones as needed. Insights APIs (such as Ad Account Insights and Ad Set Insights) and the Brand Safety ACDR API are in the time zone of the owning ad account.
Q: What are the parameters for the API?
A: The two required parameters are platform and position. The date field is optional and will use the most recent data available if omitted.
Q: Do you need some kind of indicator to get the content information from the public API?
A: The Brand Safety ACDR API response will include a content_id and content_owner_id which can be used to fetch a post and attachment metadata from the Post API.
Q: How do you understand linked content, images, and videos within posts?
A: The Post API has an attachments field that will return all content (such as images and videos) attached to the post. The response will include identifier and type information for each attachment. Additional metadata can be fetched using the identifier and the respective content API for the type (for example, Video, or Photo).
Q: How do you understand reposted content?
A: Reposted (that is, shared) posts will have a unique identifier distinct from the original post. If a post is created via a share, then the type value will be “share” in the attachment object of the Post API response.
Q: How can an advertiser grant “read” (that is, “View Performance”) access to an ad account?
A: An advertiser can grant READ access to a partner for their ad account using the “Assign Partners” button in Business Setting.