meta_ads_get_ad_creative_report

Get Meta Ads Creative Performance Report

Meta

Description

Ad-level performance report with full funnel metrics, including video funnel (ThruPlays, 25/50/75/95/100% completions, avg watch time) for video creatives. All conversion types shown individually. Supports two grouping modes: ad_name (default, aggregates ads sharing the same name with a representative ad_id for preview) and ad_id (one row per ad). The representative ad_id can be passed to meta_ads_preview_ads. Rows come back highest spend first. Rows are compact by default: they leave out the per-type cost arrays (cost_per_action_type, cost_per_conversion, cost_per_thruplay), each of which is spend divided by that type's count. Pass full_detail: true to include them. Creative media (asset_type, asset_url, thumbnail_url) is listed once per ad under assets, keyed by each row's ad_id. Each response is one page of at most 50,000 characters, or limit rows if set. When more rows remain it returns nextCursor: pass it as cursor to get the next page, and repeat until nextCursor is absent to walk every row, compact or full detail. Reads up to 2,000 ad-level rows from Meta. truncated is true whenever a response does not hold every row, and truncation gives the reasons, total_rows, returned_rows, remaining_rows and remaining_spend. The reasons are response_size or limit (more pages remain), row_limit (Meta had more rows than the tool reads; no cursor reaches them, unread_spend gives their approximate spend, and ad_name totals may be low, so narrow by campaign, ad set or ad, shorten time_range, or drop time_increment or breakdowns) and report_changed (live numbers moved rows across a page boundary between calls, so rows may be missing or repeated across pages; call again without cursor for a consistent set). A call without cursor always reads the report fresh from Meta; cursor pages served by the same server instance reuse that read for up to 15 minutes, and a page served elsewhere reads Meta again (report_changed flags any rows that moved).

Read-onlyIdempotent

Usage

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_get_ad_creative_report",
    "arguments": {
      "account_id": "act_123",
      "time_range": {
        "since": "2024-01-01",
        "until": "2024-01-31"
      },
      "reason": "Review individual ad performance"
    }
  }
}

Parameters

NameTypeRequiredDescription
account_id string Required Meta ad account IDminLength: 1
time_range object Required Required date range {since, until} in YYYY-MM-DD
reason string Required Why this tool call is neededminLength: 1, maxLength: 500
Optional parameters (8)
NameTypeRequiredDescription
level string Optional Grouping level: ad_name (default, aggregate ads sharing the same name, providing a representative ad_id that can be passed to meta_ads_preview_ads) or ad_id (one row per ad)
ad_id ad_name
time_increment object Optional Time grouping: 1=daily, 7=weekly, or "monthly"
breakdowns array Optional Segment by dimension. Pass multiple values for cross-tabulated rows (e.g. ["age","gender"] → one row per "35-44 / female" segment). Available: age, gender, country, region, device_platform, publisher_platform, platform_position, impression_device, dma. Note: `platform_position` is always paired with `publisher_platform` (Meta requires both; added automatically if omitted).
filtering array Optional Filters as [{field, operator, value}]
full_detail boolean Optional Rows are compact by default: they leave out the per-type cost arrays (cost_per_action_type, cost_per_conversion, cost_per_thruplay), each of which is spend divided by that type's count. Pass true to include them. Full-detail rows are about twice as large, so each page holds about half as many.
limit integer Optional Maximum rows per page (max 500). A page also ends when the response reaches its size limit.min: 1, max: 500
cursor string Optional nextCursor from the previous response, to get the next page of rowsminLength: 1
connection_id string Optional Optional ID of a specific connection to use for this call. Omit to use the actor's default connection for this network. Call <platform>_list_connections to discover available connection IDs.

Examples

All ads by ID

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "reason": "Review individual ad performance"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object]

Aggregate by creative name

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "level": "ad_name",
  "reason": "Compare creative variants running across multiple ad sets"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object] --level ad_name

Filter by campaign

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "level": "ad_name",
  "filtering": [
    {
      "field": "campaign.id",
      "operator": "IN",
      "value": [
        "111111111"
      ]
    }
  ],
  "reason": "Creative performance within a specific campaign"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object] --level ad_name --filtering [object Object]

Creative names by demographics

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "level": "ad_name",
  "breakdowns": [
    "age",
    "gender"
  ],
  "reason": "Understand which creatives perform best per demographic"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object] --level ad_name --breakdowns age,gender

Next page, full detail

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "level": "ad_name",
  "full_detail": true,
  "cursor": "<nextCursor from the previous response>",
  "reason": "Walk every creative with per-type costs, one page at a time"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object] --level ad_name --full-detail true --cursor <nextCursor from the previous response>

Video creative ThruPlays

{
  "account_id": "act_123",
  "time_range": {
    "since": "2024-01-01",
    "until": "2024-01-31"
  },
  "level": "ad_name",
  "reason": "Compare ThruPlay performance across Video Views campaign creatives"
}

hopkin meta ad-creative-report get --account act_123 --time-range [object Object] --level ad_name