CLIENT API / V1 GOOGLE ADS

List accounts visible to this site

GET/sites/{site_id}/google-ads/accountsgoogle-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
Permissiongoogle-ads:read
ResponseA list (cursor or offset paginated): data is array of GoogleAdsAccount.
Operation IDlistGoogleAdsAccounts

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' \
  -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
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

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[].idintegeralways presentSatellite identifier for this record.
data[].customer_idstringalways presentGoogle customer identifier; a string, distinct from Satellite account_id.
max length 4096 · pattern ^[0-9]{10}$
data[].namestringnullablealways present
max length 4096
data[].currency_codestringnullablealways present
max length 4096
data[].time_zonestringnullablealways present
max length 4096
data[].statusstringnullablealways present
max length 4096
data[].is_selectedbooleanalways present
data[].is_testbooleanalways present
data[].is_home_sitebooleanalways present
data[].reachabilitystringnullablealways present
max length 4096
data[].connection_statusstringalways present
max length 4096
data[].history_monthsintegernullablealways present
data[].last_discovered_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.