Skip to content
AdlyseMCP Docs
Product guideMCP reference
⌘K
Open Adlyse
⌘K
Overview
QuickstartAuthentication
adlyse-insights
list_ad_accountsget_dashboard_snapshotget_impact_analysislist_guidelinesget_guideline
adlyse-reports
adlyse-ads
adlyse-workflows
adlyse-adminadlyse-all
  1. Overview
  2. adlyse-insights

get_creative_insights

Adlyse’s creative-analytics rollups — the dashboard’s Creative Analytics tab as one payload: period summary, performance grouped by a dimension, lifecycle/platform mix, creative-fatigue rollup, and launch velocity. Performance defaults to fixed 30-day windows or can use an inclusive date range of up to 90 days. Fatigue and velocity remain current-health signals.

Use for creative strategy questions: which angles/hooks win, is spend stuck on stale creatives, what’s fatiguing. For the creatives themselves (copy + media URLs), use the ads server’s list_creative_library.

Parameters#

NameTypeRequiredDefaultDescription
ad_account_idstringnoScope to one ad account; omit for the whole org
dimensionstringnoangleangle | hook | format_style (vision-tagged creatives) | format | platform
platformstringnometa_ads | google_ads | microsoft_ads (platforms whose creatives Adlyse syncs)
lifecyclestringnodraft | active | paused | retired | archived
date_fromstringnoInclusive start date (YYYY-MM-DD); requires date_to
date_tostringnoInclusive end date (YYYY-MM-DD); requires date_from; maximum range is 90 days

Returns#

json
{
  "summary": {
    "current": { "spend": 8210.4, "impressions": 410000, "clicks": 5200, "revenue": 24100.2 },
    "prior": { "spend": 7930.1, "impressions": 388000, "clicks": 4800, "revenue": 21050.7 },
    "scored_count": 120
  },
  "dimension": "angle",
  "by_dimension": [
    {
      "value": "social_proof",
      "creative_count": 14,
      "spend_30d": 3120.5,
      "impressions_30d": 160000,
      "clicks_30d": 2100,
      "conversions_30d": 96,
      "revenue_30d": 9400.1,
      "avg_ctr_30d": 0.0131,
      "avg_roas_30d": 3.4
    }
  ],
  "mix": { "lifecycle": [], "platform": [] },
  "fatigue": {
    "counts": { "healthy": 61, "watch": 9, "fatigued": 4 },
    "total_scored": 74,
    "fatiguing": [
      {
        "creative_id": "ad_crtv_abc123",
        "name": "Summer hero v2",
        "platform": "meta_ads",
        "spend_30d": 1240.5,
        "roas_30d": 2.1,
        "level": "fatigued",
        "ctr_decline_pct": -41.2,
        "frequency": 4.3
      }
    ]
  },
  "velocity": {
    "new_last_7": 2,
    "new_last_14": 5,
    "new_last_30": 11,
    "active_count": 74,
    "total_spend_30d": 8210.4,
    "fresh_spend_share": 0.28
  },
  "performance_range": null,
  "filters": {
    "ad_account_id": null,
    "platform": null,
    "lifecycle": null,
    "date_from": null,
    "date_to": null
  },
  "source": "adlyse.creative_insights@v1"
}

Angle/hook/format_style group only vision-tagged creatives (the tagging pipeline); format/platform aggregate the whole library. summary.prior is null when the older window has no data. When dates are provided, performance_range contains the resolved selected/prior dates and coverage metadata, and range rows use neutral metric keys such as spend, conversions, and revenue rather than *_30d.

Errors#

error_typeWhen
auth_errorMissing / invalid API key
not_foundAd account doesn’t belong to your org
validation_errorInvalid dimension / platform / lifecycle