Docs menu

REST API · Bridge

Get bridge stats

The Bridge's Stats tab: each creative bridged from a Meta ad account, its source ad next to its TikTok and Snapchat copies

GEThttps://api.apogee.ad/api/v1/bridged-ads/stats

What it does

Newest bridge first, over since → until (7-day click attribution on every platform). Per platform: status (ok, no_target = never bridged there, not_connected = that destination account is not one of yours, error), the ads, inputs (raw sums: spend, revenue, impressions, reach, link clicks, landing page views, adds to cart, purchases, 3 s and 15 s plays) and kpis (the app's columns: ROAS, CPM, CTR, CPC, cost per purchase, hook and hold rates…), each in its own ad account's currency: platforms are never added together.

Request

GET /bridged-ads/stats on https://api.apogee.ad/api/v1.

Query parameters

  • source_ad_account_id string query required

    The Meta ad account the ads were bridged from (act_…)

    Matches ^(act_)?\d{1,32}$

  • since string query required

    First day, YYYY-MM-DD

    Matches ^\d{4}-\d{2}-\d{2}$

  • until string query required

    Last day, YYYY-MM-DD

    Matches ^\d{4}-\d{2}-\d{2}$

Headers

  • Authorization string header required

    Bearer apk_…: an API key with the scope of this route.

Response

200.

  • range object
    Fields (2)
    • since string
    • until string
  • creatives array of objects
    Fields of each item (5)
    • source_ad_id string
    • platforms object
      Fields (3)
      • meta object
        Fields (6)
        • status string

          One of ok, no_target, not_connected, error

        • ads array of objects
          Fields of each item (5)
          • id string or null
          • ad_account_id string or null
          • adset_id string or null
          • smart_plus boolean
          • at string or null
        • inputs object or null

          Raw sums over the platform's ads, in its ad account currency (null = the platform can't report it)

          Fields (10)
          • spend number or null
          • revenue number or null
          • impressions number or null
          • reach number or null
          • link_clicks number or null
          • landing_page_views number or null
          • add_to_cart number or null
          • purchases number or null
          • hook_views number or null
          • hold_views number or null
        • kpis object or null

          The app's columns from the inputs: spend, revenue, roas, atc_rate (+ atc_rate_basis), cpm, cpmr, reach, impressions, cpc, cpatc, cpp, link_clicks, add_to_cart, purchases, hook_rate, hold_rate, ctr

        • hint string or null
        • error string or null
      • tiktok object
        Fields (6)
        • status string

          One of ok, no_target, not_connected, error

        • ads array of objects
          Fields of each item (5)
          • id string or null
          • ad_account_id string or null
          • adset_id string or null
          • smart_plus boolean
          • at string or null
        • inputs object or null

          Raw sums over the platform's ads, in its ad account currency (null = the platform can't report it)

          Fields (10)
          • spend number or null
          • revenue number or null
          • impressions number or null
          • reach number or null
          • link_clicks number or null
          • landing_page_views number or null
          • add_to_cart number or null
          • purchases number or null
          • hook_views number or null
          • hold_views number or null
        • kpis object or null

          The app's columns from the inputs: spend, revenue, roas, atc_rate (+ atc_rate_basis), cpm, cpmr, reach, impressions, cpc, cpatc, cpp, link_clicks, add_to_cart, purchases, hook_rate, hold_rate, ctr

        • hint string or null
        • error string or null
      • snapchat object
        Fields (6)
        • status string

          One of ok, no_target, not_connected, error

        • ads array of objects
          Fields of each item (5)
          • id string or null
          • ad_account_id string or null
          • adset_id string or null
          • smart_plus boolean
          • at string or null
        • inputs object or null

          Raw sums over the platform's ads, in its ad account currency (null = the platform can't report it)

          Fields (10)
          • spend number or null
          • revenue number or null
          • impressions number or null
          • reach number or null
          • link_clicks number or null
          • landing_page_views number or null
          • add_to_cart number or null
          • purchases number or null
          • hook_views number or null
          • hold_views number or null
        • kpis object or null

          The app's columns from the inputs: spend, revenue, roas, atc_rate (+ atc_rate_basis), cpm, cpmr, reach, impressions, cpc, cpatc, cpp, link_clicks, add_to_cart, purchases, hook_rate, hold_rate, ctr

        • hint string or null
        • error string or null
    • name string or null
    • last_bridged_at string or null
    • count number or null
  • source_ad_account_id string

Every answer carries X-Request-Id (give it to support), Apogee-Version: 2026-10-06, and the RateLimit and RateLimit-Policy headers.

Errors

Errors are application/problem+json with a stable code to switch on (all the codes).

Example

With your key in APOGEE_API_KEY (create one):

Request
curl 'https://api.apogee.ad/api/v1/bridged-ads/stats?source_ad_account_id=act_1234567890&since=2026-10-01&until=2026-10-21' \
  -H "Authorization: Bearer $APOGEE_API_KEY"
Response 200 (shape)
{
  "range": {
    "since": "2026-10-01",
    "until": "2026-10-21"
  },
  "source_ad_account_id": "120200000000000001",
  "creatives": [
    {
      "source_ad_id": "120200000000000003",
      "name": "Nordlicht | Spring launch",
      "last_bridged_at": "2026-10-23T09:00:00.000Z",
      "count": 3,
      "platforms": {
        "meta": {
          "status": "ok"
        },
        "tiktok": {
          "status": "ok"
        },
        "snapchat": {
          "status": "ok"
        }
      }
    }
  ]
}

Access and cost

PlansPro and Scale.
Scoperead (scopes).
CreditsFree up to the daily free reads (5,000 a day on Pro, 10,000 on Scale), then 1 credit per read. A request that fails costs nothing, a replayed one neither (credits).
Rate limitRead: 600 per 15 minutes on Pro, 1,200 on Scale (rate limits).
Meta budgetReads Meta: spends 1 unit of the account's Meta budget (1,800 per 15 minutes, 900 per ad account).
Daily capCounts 1 unit toward the 2,000 units one API key can use in 24 hours.

In the MCP

An AI assistant does the same with this tool of the MCP server:

Last updated on . The parameters, limits, credits and error codes of these pages are generated from the code of the Apogee API (contract 2026-10-06).

A question, something missing? Write to hello@apogee.ad.

Book a demo

Pick the time that suits you.

Open in a new tab

Loading the calendar…

Talk to Founder