> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List reporting campaigns

> List current Meta campaign identifiers that can be used for reporting without creating a campaign mirror

<Note>This operation is read-only.</Note>

Lists the Meta campaign identifiers currently enumerable for one connected
account. The list is for reporting only. A row does not say that Apostra can
edit the campaign, or that its targeting, packages, budget, optimisation, or
other management details can be represented.

The collection currently reflects Meta's enumerable effective-status subset.
It is not a complete history and does not promise deleted campaigns.

## Request

```bash theme={null}
curl \
  "https://api.apostra.com/api/v2/buyer/storefront-connections/501/accounts/602/reporting-campaigns?limit=50" \
  -H "Authorization: Bearer $SCOPE3_API_KEY"
```

## Parameters

| Field | Location | Type | Required | Description |
| - | - | - | - | - |
| `connectionId` | path | integer | Yes | Active Meta adapter connection ID |
| `accountId` | path | integer | Yes | Active connected-account row ID |
| `limit` | query | integer | No | Page size (default 50, max 100) |
| `cursor` | query | string | No | Opaque continuation cursor returned by a prior page for this same connection and account |

## Response

```json theme={null}
{
  "reportingCampaigns": [
    {
      "upstreamCampaignId": "123456789012345",
      "upstreamAccountId": "act_123456789",
      "provider": "meta"
    }
  ],
  "hasMore": false,
  "nextCursor": null,
  "provenance": {
    "provider": "meta",
    "population": "current_effective_status_subset"
  }
}
```

`upstreamCampaignId` is the Meta campaign locator for this exact connection and
account. It is not authority by itself. Apostra checks the current caller,
connection, credential grant, account access, and Meta campaign ownership again
before using it for a delivery read.

The list is cursor-paginated directly at Meta's trusted account campaign edge.
It does not expose a total because a bounded provider page cannot truthfully
claim the size of the remaining collection. When `hasMore` is true, pass
`nextCursor` as `cursor` on the next request for this same connection and
account.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.