List reporting campaigns
curl --request GET \
--url https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));List reporting campaigns
List current Meta campaign identifiers that can be used for reporting without creating a campaign mirror
GET
/
api
/
v2
/
buyer
/
storefront-connections
/
{connectionId}
/
accounts
/
{accountId}
/
reporting-campaigns
List reporting campaigns
curl --request GET \
--url https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.apostra.com/api/v2/api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));This operation is read-only.
Request
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
{
"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.