Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

meta_get_ad_preview

See a Meta ad as Meta renders it in each placement, before it goes live.

Check an ad before you activate it. Meta crops one image differently in each placement, and the overlays of a Story or a Reel cover part of it. Text in the image itself, such as a price, shows only in the rendered picture.

Show me the Reels and the Stories preview of the 9:16 ad of Spring Prospecting.

The agent calls meta_get_ad_preview with the id of the ad, or with the id of a creative that has no ad yet. For each placement, the agent sees the image as Meta renders it, and it can tell you what the overlays cover and whether the price reads. Each row also gives a link to the image and a link to the preview of Meta, for you to open. The links stop working after 24 hours.

With no placement named, the agent gets the Facebook feed, the Instagram feed, the Instagram Stories and the Instagram Reels. It can also ask for the Facebook Stories and the Facebook Reels. A placement where Meta does not show this creative comes back as unsupported, and the other placements still come back. Change what runs on Meta shows where this step comes in the job.

Reference

Available on: Meta

Show a Meta ad, or a Meta creative, as Meta renders it in each placement: the crop, what the overlays of a Story or a Reel cover, and what the image itself says, such as a price. Call this before you activate an ad. Give exactly one of adId (an ad, also a PAUSED one: find it with meta_list_ads) and creativeId (a creative, also one with no ad yet: find it with meta_list_creatives). placements defaults to facebook_feed, instagram_feed, instagram_story, instagram_reels. With render image (the default), each placement comes back as an image that you can look at, after a label that names it, and as imageUrl for a person. With render link, each placement gives only previewUrl, which a person opens in a browser. The links stop working after 24 hours. A placement that Meta does not show for this creative is unsupported, and the other placements still come back.

Input

Argument Type Required Description
adId string no The Meta id of the ad, digits only. Give this or creativeId, not both.
advertiserId string yes Advertiser account ID (acc_<id>). Must belong to the active organization — find one with list_advertisers.
creativeId string no The Meta id of the creative, digits only. Give this or adId, not both.
placements array of (one of facebook_feed, facebook_story, facebook_reels, instagram_feed, instagram_story, instagram_reels), at least 1 item no The placements to render. The default is facebook_feed, instagram_feed, instagram_story, instagram_reels. Default: ["facebook_feed","instagram_feed","instagram_story","instagram_reels"].
render one of image, link no image (the default): an image of each placement. link: the link of Meta only, which is faster. Default: image.

Output

A successful call returns this object in structuredContent.

Field Type Always present Description
previews array of object yes One row for each placement, in the order of placements. Each image follows in the content of the result, after a label that names its placement.
previews[].expiresAt string or null yes When previewUrl and imageUrl stop working (ISO 8601): 24 hours after the read. Call the tool again after that. Null when status is not ok.
previews[].height integer or null yes The height of the image in pixels. Null with no image.
previews[].imageUrl string or null yes A link to the image of the preview, for a person to open. Null with no image.
previews[].placement one of facebook_feed, facebook_story, facebook_reels, instagram_feed, instagram_story, instagram_reels yes The placement of the row.
previews[].previewUrl string or null yes The link of Meta that renders the preview in a browser. Null when status is not ok.
previews[].reason string or null yes Why status is not ok, in the words of Meta when Meta refused. Null for an ok row.
previews[].status one of ok, unsupported, failed yes ok: the preview is there. unsupported: Meta does not show this creative in this placement. failed: Meta or the render failed for this placement only. Call the tool again for it.
previews[].width integer or null yes The width of the image in pixels: the phone mock of Meta, not the creative. Null with no image.

Failure codes

A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.

  • not_found
  • provider_not_connected
  • organization_unentitled
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold observe:read. Auth & scopes lists each scope.

Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

  • Read-only. The tool changes nothing.
  • Open world. The tool reaches a system outside AdCrunch, such as an ad platform.

Example

The arguments:

{
  "adId": "120246340793730490",
  "advertiserId": "acc_1485443900032333",
  "placements": [
    "instagram_reels"
  ]
}

The result, in structuredContent:

{
  "previews": [
    {
      "expiresAt": "2026-11-01T13:17:06.000Z",
      "height": 1248,
      "imageUrl": "https://ad-previews.adcrunch.dev/org_hxa7g1vfck6tamgdiwpvb7tq/0b6f2c1e-6a8d-4f0e-9b7a-3c2d1e0f9a8b.jpg",
      "placement": "instagram_reels",
      "previewUrl": "https://business.facebook.com/ads/api/preview_iframe.php?d=AQKERWN7Rq07pu&t=AQK9UMzb7sF",
      "reason": null,
      "status": "ok",
      "width": 640
    }
  ]
}

Was this page helpful?