Meta Ads Manager icon

Meta Ads Manager data API: campaigns, insights, billing

Meta Platforms, Inc. · E-commerce

Meta Ads Manager (package com.facebook.adsmanager) is Meta's first-party app for running Facebook and Instagram advertising from a phone. Under the hood it speaks Meta's GraphQL API: every screen issues a named, persisted query document over a single signed-in gateway, tagged with an operation name and a persisted-document id, and authenticated with the advertiser's OAuth access token from the logged-in session.

The illustrative surface below generalizes those private calls into path form: the home screen's campaign list via POST /v1/ads/campaigns, per-object metrics via POST /v1/ads/insights (spend, impressions, reach, clicks, cpm, purchase_roas), weekly account charts via POST /v1/ads/performance-chart, billing reads with current_balance and credential_id via POST /v1/billing/account, draft creation via POST /v1/ads/drafts, and account-standing checks with account_status and restriction_type via POST /v1/ads/account-standing.

Meta Ads Manager is Meta's first-party Android app for running Facebook and Instagram ad campaigns: creating and editing drafts, watching spend and results, managing billing and getting alerts when an account needs attention. Its data API is a signed-in, first-party GraphQL surface: every screen issues a named, persisted query document over one gateway — the home screen loads a flat campaign list, the performance tab reads per-object insights and weekly account charts, billing reads balance and stored payment methods, and draft edits land through a create-draft mutation. Requests carry the logged-in advertiser's OAuth access token plus a persisted-document id and an operation name, and the wire model keeps names such as campaign_group_id, adset_name, spend, impressions, reach, cpm, actions, purchase_roas, credential_id and restriction_type. The endpoints shown here are an illustrative, generalized map of that surface.

Screenshots

  • Meta Ads Manager screenshot 1
  • Meta Ads Manager screenshot 2
  • Meta Ads Manager screenshot 3
  • Meta Ads Manager screenshot 4
  • Meta Ads Manager screenshot 5
  • Meta Ads Manager screenshot 6
  • Meta Ads Manager screenshot 7

API surface

  • List ad-account campaigns

    POST /v1/ads/campaigns opendata

    Loads the flat campaign list for the selected ad account that fills the app's home screen.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • account_id
    • account_status
    • campaign_group_id
    • campaign_group_name
    • objective
    • daily_budget
    • spend

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/ads/campaigns HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=CampaignList&variables={"account_id":"act_1234567890","first":50,"filter":"ALL"}
    {
      "data": {
        "ad_account": {
          "account_id": "1234567890",
          "account_status": "ACTIVE",
          "campaign_groups": {
            "edges": [
              {"node": {"campaign_group_id": "23850123456789", "campaign_group_name": "Spring Sale — Conversions", "objective": "OUTCOME_SALES", "daily_budget": "5000", "spend": "123.45"}}
            ]
          }
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's campaign-list home screen.
    • Matches the campaign rows (name, objective, budget, spend) shown in the account overview.
  • Fetch ad-object insights

    POST /v1/ads/insights opendata

    Reads performance metrics (spend, impressions, clicks, conversions, ROAS) for one campaign, ad set or ad over a chosen date preset.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • spend
    • impressions
    • reach
    • clicks
    • cpm
    • frequency
    • actions
    • action_values
    • purchase_roas
    • results
    • date_preset
    • time_increment
    • breakdowns

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/ads/insights HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=AdObjectInsights&variables={"ad_object_id":"23850123456789","date_preset":"last_7d","time_increment":1}
    {
      "data": {
        "ad_object": {
          "insights": {
            "spend": "412.10",
            "impressions": "58230",
            "reach": "41102",
            "clicks": "1987",
            "cpm": "7.08",
            "frequency": "1.42",
            "actions": [{"action_type": "offsite_conversion", "value": "63"}],
            "action_values": [{"action_type": "offsite_conversion", "value": "2415.30"}],
            "purchase_roas": [{"action_type": "omni_purchase", "value": "5.86"}],
            "results": [{"indicator": "actions:offsite_conversion", "value": "63"}]
          }
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the campaign / ad-set / ad performance screen.
    • Mirrors the metrics table shown for a selected date preset.
  • Weekly account performance charts

    POST /v1/ads/performance-chart opendata

    Powers the weekly-summary charts on the account home tab with daily spend/impressions/results series.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • account_id
    • performance_chart
    • timestamp
    • spend
    • impressions
    • results

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/ads/performance-chart HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=WeeklyAccountPerformanceChart&variables={"account_id":"act_1234567890"}
    {
      "data": {
        "ad_account": {
          "account_id": "1234567890",
          "performance_chart": {
            "series": [
              {"metric": "spend", "points": [{"timestamp": 1758153600, "value": "58.20"}]},
              {"metric": "impressions", "points": [{"timestamp": 1758153600, "value": "9102"}]},
              {"metric": "results", "points": [{"timestamp": 1758153600, "value": "11"}]}
            ]
          }
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the weekly-summary charts on the account home tab.
  • Read billing account information

    POST /v1/billing/account openfinance

    Loads the ad account's billing screen: outstanding balance, spending limit and stored payment methods.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • current_balance
    • currency
    • account_spending_limit
    • payment_methods
    • credential_id
    • credential_type

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/billing/account HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=BillingAccountInfo&variables={"account_id":"act_1234567890"}
    {
      "data": {
        "billing": {
          "current_balance": {"amount": "87.42", "currency": "USD"},
          "account_spending_limit": "1000.00",
          "payment_methods": [
            {"credential_id": "pm_9001", "credential_type": "CREDIT_CARD", "display": "Visa •••• 4242", "is_primary": true}
          ]
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's billing settings screen (balance, spending limit, payment methods).
  • Create ad draft

    POST /v1/ads/drafts opendata

    Creates a server-side ad draft so edits made on the phone persist and sync to Ads Manager on desktop.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • draft_id
    • ad_draft
    • account_id
    • objective

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/ads/drafts HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=CreateAdDraft&variables={"input":{"account_id":"act_1234567890","ad_draft":{"name":"Weekend push — lookalike 1%","objective":"OUTCOME_TRAFFIC"}}}
    {
      "data": {
        "create_ad_draft": {
          "draft_id": "99001234567890",
          "ad_draft": {"name": "Weekend push — lookalike 1%", "objective": "OUTCOME_TRAFFIC", "status": "DRAFT"}
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the ad-draft creation and edit flow.
  • Check ad-account compliance standing

    POST /v1/ads/account-standing osint

    Reads the ad account's standing — whether it is active, restricted or disabled — behind the app's warning banners.

    Auth: OAuth access token from the logged-in advertiser session + persisted-document id (doc_id) and a generic operation name.

    • account_id
    • account_status
    • restriction_type

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/ads/account-standing HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    access_token=<advertiser_session_token>&doc_id=<persisted_doc_id>&operation_name=AccountComplianceStatus&variables={"account_id":"act_1234567890"}
    {
      "data": {
        "ad_account": {
          "account_id": "1234567890",
          "account_status": "ACTIVE",
          "restrictions": [
            {"restriction_type": "AD_ACCOUNT_SPEND_LIMIT", "appeal_eligible": true}
          ]
        }
      }
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the account-standing warnings shown when an ad account is restricted.

Data categories

  • campaigns
  • ad-insights
  • performance-charts
  • billing
  • payment-methods
  • ad-drafts
  • account-standing

Where teams use this data

  • Cross-platform spend dashboards

    Agency reporting tools pull per-campaign spend, impressions, reach, clicks, cpm and purchase_roas on a daily time_increment, joining Meta results with other channels so clients see one blended cost-per-result instead of three separate dashboards.

  • Budget-pacing alerts

    Finance automation reads the campaign list with daily_budget and lifetime-to-date spend, then flags campaigns pacing above plan — the same data behind the app's weekly-summary performance charts.

  • Ad-account health monitoring

    Multi-account operators poll account_status and restriction_type across every client account and page on-call the moment an account is restricted, instead of waiting for an advertiser to notice the in-app banhammer banner.

  • Billing reconciliation

    Accounting pipelines read current_balance, currency, account_spending_limit and the stored payment_methods (credential_id, credential_type) to reconcile Meta ad invoices against the corporate card statement each month.

Frequently asked questions

What data API does the Meta Ads Manager app use?

The app talks to Meta's GraphQL API over a single signed-in gateway: each screen issues a named, persisted query document — a campaign-list query for the home screen, an insights query for per-object metrics, and a billing query for balance and payment methods. The endpoints shown here are an illustrative, generalized map of that surface rather than live captures.

How is the Meta Ads Manager API authenticated?

Calls are authenticated with the advertiser's OAuth access token issued when they sign in with their Facebook account inside the app. The token rides as a form parameter alongside a persisted-document id and the variables payload; there is no public developer key — these are first-party calls scoped to the ad accounts the signed-in user administers.

Which performance metrics does the app expose?

The insights surface returns spend, impressions, reach, clicks, cpm, frequency, actions, action_values, purchase_roas and results, filterable by date preset (for example last_7d), time range, time increment and breakdowns — the same rows that fill the campaign, ad-set and ad detail screens.

Can I read billing and account-standing data from the app?

Yes — the billing screens load current_balance, currency, account_spending_limit and stored payment_methods (credential_id, credential_type), while the account-standing surface returns account_status plus restriction_type entries, which is what drives the in-app warnings when an ad account is restricted or disabled.

Topics

  • meta ads manager api
  • facebook ads api endpoints
  • ads insights fields
  • spend impressions roas
  • meta graphql persisted queries
  • ad account billing api

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote