---
title: "Meta Ads campaign detail"
method: GET
path: "/meta-ads/campaigns/{campaign_id}"
tags: ["Meta Ads"]
---

# Meta Ads campaign detail

`GET /meta-ads/campaigns/{campaign_id}`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/meta-ads/campaigns/{campaign_id}`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Full detail for one rev-share campaign: its settings plus the creator roster (opt-in status, whitelist grant, resolved TikTok handle/name/avatar per creator). Single shop only — address the campaign's owning shop via `x-shop-id`.

## Path parameters

- `campaign_id` string, required

## Response `200`

Successful Response

- MetaAdsCampaignDetailResponse
  - `campaign` MetaAdsCampaignItem, required: A Meta Ads rev-share campaign. The rollup fields (`active_creators`, `attributed_revenue_cents`, `commission_owed_cents`) are populated on the list endpoint and are null on endpoints that don't aggregate them.
    - `campaign_id` string, required: Campaign UUID.
    - `id` string, required: Deprecated alias of `campaign_id`; use `campaign_id`.
    - `short_id` string, required: 12-char slug used in the public creator join link.
    - `shop_id` integer, required
    - `name` string, required
    - `status` 'draft' | 'active' | 'paused', required: draft | active | paused
    - `commission_base` 'attributed_revenue' | 'ad_spend' | 'flat_fee_per_video', required: What the commission is a percentage of: 'attributed_revenue' (purchase conversion value from Meta insights) or 'ad_spend'; 'flat_fee_per_video' pays `flat_fee_cents` once per video instead.
    - `commission_rate` number, required: Percent, e.g. 3.0 = 3%. 0 on the flat_fee_per_video base.
    - `commission_cap_cents` integer, nullable: Per-creator commission cap in cents, if set.
    - `flat_fee_cents` integer, nullable: Amount paid once per video, in cents, when commission_base is 'flat_fee_per_video'; null otherwise.
    - `attribution_window` string, required: Meta attribution window, e.g. '7-day click'.
    - `start_date` string, nullable
    - `end_date` string, nullable
    - `usage_grant_on` boolean, required: Campaign requests a usage-rights grant from creators.
    - `whitelist_grant_on` boolean, required: Campaign requests a Partnership-ads whitelist grant.
    - `whitelist_path` 'spark_code' | 'business_access': 'spark_code' (Path A) or 'business_access' (Path B).
    - `created_at` string, required
    - `updated_at` string, required
    - `active_creators` integer, nullable: Distinct creators on the leaderboard (accepted/active roster plus cherry-picked media-library creators). Null unless the endpoint aggregates it (list endpoint).
    - `attributed_revenue_cents` integer, nullable: Lifetime attributed purchase-conversion value, cents.
    - `commission_owed_cents` integer, nullable: Unpaid commission owed (ledger status pending+approved), cents. Null unless the endpoint aggregates it.
  - `roster` MetaAdsRosterEntry[]
    - `campaign_id` string, required
    - `creator_id` string, required
    - `invite_status` 'pending' | 'invited' | 'accepted' | 'active', required: pending | invited | accepted | active
    - `invited_at` string, required
    - `accepted_at` string, nullable
    - `activated_at` string, nullable
    - `partnership_ad_code` string, nullable: Path-A Spark / Partnership Ads code the creator pasted.
    - `whitelist_granted` boolean
    - `creator_handle` string, nullable
    - `creator_name` string, nullable
    - `avatar_url` string, nullable
  - `currency` string, nullable: ISO 4217 currency of the shop's Meta ad account for the campaign's cents fields; null when no ad account is connected.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-02** `881910053958`: 1 warning, 1 info
  - added the new `flat_fee_per_video` enum value to the `campaign/commission_base` response property for the response status `200`
  - added the optional property `campaign/flat_fee_cents` to the response with the `200` status
- **2026-09-19** `291230805105`: 11 warning, 3 info
  - added the new `accepted` enum value to the `roster/items/invite_status` response property for the response status `200`
  - added the new `active` enum value to the `campaign/status` response property for the response status `200`
  - added the new `active` enum value to the `roster/items/invite_status` response property for the response status `200`
  - added the new `ad_spend` enum value to the `campaign/commission_base` response property for the response status `200`
  - …10 more

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/meta-ads/campaigns/:campaign_id/get.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
