Get manager account hierarchy
Live manager (MCC) and client tree for a Google Ads connection. Starts from every customer the Google user behind the connection can access directly and walks each tree to any depth with customer_client, then reads each manager's own client links so every client carries its direct parent, the managerLinkId and the link status. Invitations a manager sent that the client has not accepted yet appear as clients with linkStatus: PENDING (Google returns no name or currency for them). Refused, canceled and ended links are history and are omitted. managerLinks on a root lists the managers linked to that account, including invitations it can still accept with PATCH /v1/ads/accounts/manager-links. A directly accessible account that is also nested in another tree appears only once, inside that tree. directCustomers lists every account the Google user accesses directly (the ones this connection can accept or decline invitations for) with their pending invitations, including accounts that are also nested in a tree. Customers Google refuses to read (for example a cancelled account) are listed in unavailable with Google's reason instead of failing the call. Up to 50 roots and 50 managers per root are read; truncated is true when more exist. Cached for 10 minutes per connection; the response carries cachedAt and stale. When the connection is scoped to specific ad accounts, client accounts outside that scope are hidden (managers stay visible).
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
Google ads SocialAccount id.
Only return the tree rooted at this customer id (digits only). It must be an account the Google user accesses directly. Omit to list every tree.
Alias of adAccountId, kept for consistency with the other Google Ads account endpoints.
Response Body
application/json
application/json
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adaccounts.getAdAccountHierarchy({ query: { accountId: 'account_abc123', },});console.log(data);{ "accountId": "string", "roots": [ { "customerId": "string", "name": "string", "currency": "string", "timeZone": "string", "manager": true, "testAccount": true, "status": "string", "managerLinks": [ { "managerCustomerId": "string", "managerLinkId": "string", "status": "ACTIVE" } ], "clients": [ { "customerId": "string", "name": "string", "currency": "string", "timeZone": "string", "manager": true, "testAccount": true, "hidden": true, "level": 0, "status": "string", "parentCustomerId": "string", "managerLinkId": "string", "linkStatus": "ACTIVE" } ] } ], "directCustomers": [ { "customerId": "string", "manager": true, "pendingInvitations": [ { "managerCustomerId": "string", "managerLinkId": "string" } ] } ], "unavailable": [ { "customerId": "string", "reason": "string" } ], "truncated": true, "cachedAt": "2019-08-24T14:15:22Z", "stale": true}Detach a Google Ads label
Removes the label from the given targets. Idempotent; a target without the label is counted in `unchanged`.
Invite a client account to a manager
Sends a manager-to-client link invitation from `managerCustomerId` to `clientCustomerId` (Google's CustomerClientLinkService). The manager must be one the connection's Google user reaches, directly or under another manager (see GET /v1/ads/accounts/hierarchy); the client can be any Google Ads account. The link stays `PENDING` until someone with access to the client accepts it in Google Ads or through PATCH on this path. Not idempotent: Google refuses a second invitation while one is pending. Send `validateOnly: true` to have Google check the request without sending anything.