CLIENT API / V1 GOOGLE ADS

Read one assigned campaign

GET/sites/{site_id}/google-ads/accounts/{account_id}/campaigns/{campaign_id}google-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/{campaign_id}
Permissiongoogle-ads:read
ResponseA single object: data is GoogleAdsCampaign.
Operation IDgetGoogleAdsCampaign

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/123456789' \
  -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
campaign_idrequiredpathstringGoogle campaign identifier.
pattern ^[0-9]{1,19}$ · example 123456789

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.