CLIENT API / V1 GOOGLE ADS

List assigned campaigns

GET/sites/{site_id}/google-ads/accounts/{account_id}/campaignsgoogle-ads:read

Requires google-ads:read. Stored reads only: no source=live, refresh, GAQL, provider account overrides, jobs, or credit charges. Explicit site grants and current campaign assignments constrain reports. Shared account collection coverage never grants other-site metrics.

RequestGET https://satelliteai.io/api/v1/sites/{site_id}/google-ads/accounts/{account_id}/campaigns
Permissiongoogle-ads:read
ResponseA list (cursor or offset paginated): data is array of GoogleAdsCampaign.
Operation IDlistGoogleAdsCampaigns

More context and worked examples are in the developer guide.

Example request

cURL · Bash
curl --fail-with-body \
  'https://satelliteai.io/api/v1/sites/123/google-ads/accounts/12/campaigns' \
  -H "Authorization: Bearer $SATELLITE_API_KEY"

Replace the example IDs with values returned by the discovery endpoints. Example values are placeholders, not real records.

Parameters

NameInTypeDescription
site_idrequiredpathintegerID from GET /sites.
min 1
account_idrequiredpathintegerSatellite account ID from /google-ads/accounts; not the Google customer ID.
min 1 · max 2147483647 · example 12
limitqueryinteger
default 50 · min 1 · max 100
offsetqueryintegerBounded offset; next_offset is null at the cap. Mutable stored data is not an atomic pagination snapshot.
default 0 · min 0 · max 100000
include_removedquerystringInclude historical removed catalog records. Historical reports remain readable.
one of: true, false · default false

Unknown or repeated query parameters return 400.

Data dictionary

Stored site-assigned results. No provider refresh or credit debit.

[] marks an array element. nullable means the value can be null; treat it as unknown, not zero. always present means the key is always included in the object.

Fields in data
FieldTypeDescription
data[].site_idintegernullablealways presentSatellite site ID (from GET /sites).
data[].account_idintegernullablealways present
data[].campaign_idstringnullablealways presentDecimal string preserving full Google identifier or micros precision.
max length 4096 · pattern ^[0-9]+$
data[].namestringnullablealways present
max length 4096
data[].statusstringnullablealways present
max length 4096
data[].serving_statusstringnullablealways present
max length 4096
data[].advertising_channel_typestringnullablealways present
max length 4096
data[].advertising_channel_sub_typestringnullablealways present
max length 4096
data[].bidding_strategy_typestringnullablealways present
max length 4096
data[].budget_idstringnullablealways presentDecimal string preserving full Google identifier or micros precision.
max length 4096 · pattern ^[0-9]+$
data[].start_datestring (date)nullablealways present
max length 4096
data[].end_datestring (date)nullablealways present
max length 4096
data[].first_seen_atstring (date-time)nullablealways present
max length 4096
data[].last_seen_atstring (date-time)nullablealways present
max length 4096
data[].removed_atstring (date-time)nullablealways present
max length 4096

Response metadata

Fields in meta
FieldTypeDescription
meta.request_idstringalways presentRequest identifier; also returned in X-Request-ID. Include it in support requests.
meta.api_versionstringalways presentAPI version that produced the response.
one of: v1
meta.limitintegerMaximum records per page applied to this request.
min 1 · max 100
meta.has_morebooleanTrue when another page is available.
meta.next_cursorstringnullableOpaque cursor for the next page; send as cursor. Null on the last page.
meta.availabilitystringavailable when stored data exists; not_available when it does not.
one of: available, not_available
meta.sourcestringalways present
one of: stored · max length 4096
meta.access_scopestring
one of: site · max length 4096
meta.connection_statusstring
max length 128
meta.offsetinteger
min 0 · max 100000
meta.next_offsetintegernullable
min 0 · max 100000
meta.offset_limit_reachedboolean

Error responses

Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.

HTTPWhen
400Unknown/repeated query, invalid filter or dates. summary rejects limit/offset; variant filters are only accepted by their corresponding report.
401Missing, invalid, expired, or revoked credential.
403Required explicit scope, active integration, or company API access unavailable.
404Missing or inaccessible site, account, campaign, report, entity type, or dataset.
409google_ads_timezone_unavailable: stored account time zone needs correction.
413Response too large.
429Request allowance exceeded; honor Retry-After.
503Stored reporting or authentication temporarily unavailable.