---
title: "Get manager account hierarchy"
method: GET
path: "/v1/ads/accounts/hierarchy"
tags: ["Ad Accounts"]
---

# Get manager account hierarchy

`GET /v1/ads/accounts/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).

## Query parameters

- `accountId` string, required
- `adAccountId` string
- `customerId` string

## Response `200`

Manager and client hierarchy

- object
  - `accountId` string
  - `roots` object[]
    - `customerId` string — Native Google Ads customer id, digits only.
    - `name` string, nullable
    - `currency` string, nullable — ISO 4217 code.
    - `timeZone` string, nullable — IANA time zone, e.g. Europe/Madrid.
    - `manager` boolean — True for a manager (MCC) account.
    - `testAccount` boolean
    - `status` string, nullable — Google customer status: ENABLED, CANCELED, SUSPENDED or CLOSED.
    - `managerLinks` object[] — Managers linked to this account, ACTIVE or PENDING.
      - `managerCustomerId` string
      - `managerLinkId` string
      - `status` 'ACTIVE' | 'PENDING'
    - `clients` GoogleAdsHierarchyClient[] — Every account under this root at any depth, in Google's order, followed by pending invitations.
      - `customerId` string — Native Google Ads customer id, digits only.
      - `name` string, nullable — Null for a pending invitation.
      - `currency` string, nullable
      - `timeZone` string, nullable
      - `manager` boolean — True for a sub-manager account.
      - `testAccount` boolean
      - `hidden` boolean — Hidden in the manager's Google Ads UI.
      - `level` integer — Distance from the root (1 = direct client of the root).
      - `status` string, nullable — Google customer status: ENABLED, CANCELED, SUSPENDED or CLOSED. Null for a pending invitation.
      - `parentCustomerId` string, nullable — Direct manager of this account. Null only when more than 50 managers under the root were skipped.
      - `managerLinkId` string, nullable — Id of the link to the parent, used by PATCH /v1/ads/accounts/manager-links.
      - `linkStatus` 'ACTIVE' | 'PENDING' | 'null', nullable
  - `directCustomers` object[]
    - `customerId` string
    - `manager` boolean
    - `pendingInvitations` object[] — Manager invitations this account has not answered yet.
      - `managerCustomerId` string
      - `managerLinkId` string
  - `unavailable` object[]
    - `customerId` string
    - `reason` string — Google's error message and code.
  - `truncated` boolean
  - `cachedAt` string, date-time, nullable — When this data was fetched from Google. Null on a live read.
  - `stale` boolean — True when Google's quota was exhausted and this is the last successful fetch.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — The account or requested resource was not found or is not accessible. An account ID may have been disconnected and removed. Read GET /v1/accounts for current account IDs.
- `409` — The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.
- `429` — Google Ads operations budget or quota exhausted; retry later.
- `501` — Only available on Google Ads accounts

## Changes

- **2026-09-28** `1c23a639830f` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/accounts/hierarchy/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/1c23a639830f?raw)
