optimize_meta_placements

Meta Ads Read

User asks about Meta/Facebook/Instagram placement performance, which placements work best, Feed vs Stories vs Reels, should they use Audience Network, or wants placement optimization recommendations

Endpoint

POST https://api.adspirer.ai/api/v1/tools/optimize_meta_placements/execute

Headers

Description

User asks about Meta/Facebook/Instagram placement performance, which placements work best, Feed vs Stories vs Reels, should they use Audience Network, or wants placement optimization recommendations. This tool analyzes placement-level performance (Feed, Stories, Reels, Audience Network, Messenger, etc.) and provides optimization recommendations including budget reallocation suggestions. Returns: - Placement ROAS ranking (sorted by performance) - Placements categorized as SCALE/MAINTAIN/REDUCE/EXCLUDE - Budget reallocation recommendations between placements - Expected ROAS improvement from optimization - Optimal placement mix for campaign objective - Savings from excluding underperforming placements - Actionable recommendations and quick actions When to use this tool: - "Which Meta placements should I use?" - "Should I exclude Audience Network?" - "Instagram Stories vs Reels - which is better?" - "Feed vs Stories performance comparison" - "Where should I allocate my Meta ad budget?" - "Which placements are wasting money?" - "What's the optimal placement mix for conversions?" - "Facebook Marketplace performance?" Parameters: - lookback_days: 7, 14, 30 (default), 60, or 90 days - start_date: Optional start date (YYYY-MM-DD). Overrides lookback_days when used with end_date. - end_date: Optional end date (YYYY-MM-DD). Overrides lookback_days when used with start_date. ⚠️ DATE CLARIFICATION: If the user's date request is vague or ambiguous (e.g., "March to June" without a year, "last quarter", "recently", "a few months ago"), ask the user to specify exact dates before calling this tool. Do not assume or guess dates. - objective: 'conversions' (default), 'traffic', or 'awareness' - for optimal mix recommendations - target_roas: Optional override (default: from account goals or 2.0x) - ad_account_id: Required for multi-account users. Get from list_connected_accounts Execution time: 2-5 seconds (cached database query with analysis) Data source: meta_placement_daily_metrics table (placement-level daily metrics) ROAS Thresholds for Recommendations: - ✅ SCALE (ROAS ≥3.0x): Increase budget by 20-30% - ➖ MAINTAIN (ROAS 1.5-3.0x): Keep current budget - ⚠️ REDUCE (ROAS 1.0-1.5x): Reduce budget by 30-50% - 🔴 EXCLUDE (ROAS <1.0x): Remove from campaigns Meta Placements Analyzed: - Facebook: Feed, Stories, Reels, Marketplace, Search Results - Instagram: Feed, Stories, Reels, Explore - Messenger: Inbox, Stories - Audience Network: All placements Common Insights: - Audience Network often has lowest ROAS for conversion campaigns - consider excluding - Instagram Feed and Reels typically have highest conversion rates - Stories are great for awareness but may have lower conversion rates - Facebook Marketplace can be effective for e-commerce

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
start_datestring optionalStart date (YYYY-MM-DD). If provided with end_date, overrides lookback_days for custom date range queries.
end_datestring optionalEnd date (YYYY-MM-DD). If provided with start_date, overrides lookback_days for custom date range queries.
date_rangestring optionalDate range preset: 'last_7_days', 'last_14_days', 'last_30_days', 'last_60_days', 'last_90_days'. Overrides lookback_days. Ignored if start_date/end_date are provided.
raw_databoolean optionalIf true, return ONLY raw metrics as a JSON code block (spend, clicks, impressions, conversions, CPA, CPC, CTR, CVR, ROAS by campaign/ad/date). Strips severity labels, suggested bids/budgets, industry benchmarks, and optimization recommendations. Use when you run your own attribution model or want to minimize token usage. default: false
lookback_daysinteger optionalNumber of days to analyze (7, 14, 30, 60, or 90 days). Default is 30 days. default: 30
objectivestring optionalCampaign objective for optimal placement mix recommendations: 'conversions' (default), 'traffic', or 'awareness'. default: "conversions"
target_roasnumber optionalOptional target ROAS override (e.g., 3.0 for 3.0x ROAS). If not provided, will use account goals or historical average.
ad_account_idstring optionalMeta Ad Account ID. Required for multi-account users. Get from list_connected_accounts.

Example request

{
  "arguments": {
    "start_date": "string",
    "end_date": "string",
    "date_range": "string",
    "raw_data": false,
    "lookback_days": 30,
    "objective": "conversions"
  }
}

Example responses

200 — Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for optimize_meta_placements)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "optimize_meta_placements"
}

400 — Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "optimize_meta_placements"
}

402 — Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "optimize_meta_placements",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai