Manager Accounts
Amazon Ads API v1 - unified ManagerAccounts endpoints
Documentation: https://advertising.amazon.com/API/docs/en-us/api-spec-v1-manager-accounts Specification: https://d1y2lf8k3vrkfu.cloudfront.net/openapi/en-us/dest/AmazonAdsAPIALLManagerAccountsContract_prod_3p.json
Three routes, no delete in the contract:
POST /adsApi/v1/create/managerAccounts POST /adsApi/v1/query/managerAccounts POST /adsApi/v1/update/managerAccounts
This family is not about ad products, so no adProductFilter appears
anywhere in it, unlike the campaigns, ad groups, ads and targets siblings.
The query declares no required member at all: an empty body is a valid request and returns every manager account the caller can see.
maxResults on the query starts at 10, so a smaller value is a rejected
body rather than a shorter page. Both write routes take up to 10 accounts per
call and answer a multi-status indexed the same way.
Warning
create and update write into the manager account hierarchy: they
are not reads, and a body that reaches them creates or changes an account.
Only the query is exercised by the probes.
The package keeps the legacy manager account reader as
ad_api.api.ManagerAccounts, a different class in a different package;
from ad_api.api import ManagerAccounts keeps resolving to that one.
Note
The legacy reader is not deprecated and should not be: it exposes
managerAccountId, which the v1 ManagerAccount schema does not carry,
plus associate and disassociate, which have no v1 route. Create is
not interchangeable either: the legacy method takes managerAccountName
and managerAccountType, while the v1 body carries displayName,
currencyCode, timeZoneIana, industryVertical,
accountUsageType and businessDetails.
- class ad_api.api.v1.ManagerAccounts(account='default', marketplace: Marketplaces = Marketplaces.EU, credentials=None, debug=False)
Amazon Ads API v1 - unified ManagerAccounts endpoints
Three routes, no delete in the contract:
POST /adsApi/v1/create/managerAccounts POST /adsApi/v1/query/managerAccounts POST /adsApi/v1/update/managerAccounts
This family is not about ad products, so no adProductFilter appears anywhere. The query declares no required member at all: an empty body is a valid request and returns every manager account the caller can see.
Both write routes take up to 10 accounts per call and answer a multi-status with success[] and error[] indexed the same way.
Alongside this class the package keeps the legacy manager account reader as ad_api.api.ManagerAccounts; the two live in different packages and do not shadow each other.
- query_manager_accounts(body: dict) ApiResponse
Amazon Ads API v1 - Query Manager Accounts (operationId: QueryManagerAccount)
- Request Body [All optional]
- managerAccountIdFilter (dict) | include (list<string>) : 1..100 identifiersmaxResults (int) : 10..100, default 100nextToken (string) : token to navigate to the next page
- Returns
- managerAccounts (list<ManagerAccount>) : 0..100 | displayName (string) | managerAccountId (string) | currencyCode (CurrencyCode) | timeZoneIana (TimeZoneIana) | industryVertical (IndustryVertical) | accountUsageType (AccountUsageType) | businessDetails (BusinessDetail)nextToken (string)
maxResults starts at 10: a value below that is a rejected body, not a smaller page.
- create_manager_accounts(body: dict) ApiResponse
Amazon Ads API v1 - Create Manager Accounts (operationId: CreateManagerAccount)
- Request Body [Required]
- managerAccounts (list<ManagerAccountCreate>) : [required] 1..10 | displayName (string) : required on create | currencyCode (CurrencyCode) | timeZoneIana (TimeZoneIana) | industryVertical (IndustryVertical) | accountUsageType (AccountUsageType) | businessDetails (CreateBusinessDetail)
- Answer
207 MultiStatus: success[] carries the created accounts with their index, error[] the index and reason of the refused ones.
This route creates an account in the manager hierarchy. It is not a read and not something to fire to see what happens.
- update_manager_accounts(body: dict) ApiResponse
Amazon Ads API v1 - Update Manager Accounts (operationId: UpdateManagerAccount)
- Request Body [Required]
- managerAccounts (list<ManagerAccountUpdate>) : [required] 1..10 | managerAccountId (string) : the account to change | displayName (string) | currencyCode (CurrencyCode) | timeZoneIana (TimeZoneIana) | industryVertical (IndustryVertical) | businessDetails (UpdateBusinessDetail)
- Answer
207 MultiStatus, indexed the same way as create.
businessDetails uses the Update variant of each nested object, so a body copied from create is not interchangeable here.