Google Ads without a developer token
Google sunset developer tokens on 9 September 2026. API access now belongs
to the Google Cloud project that owns your OAuth client, the header is
optional and ignored, and a future major API version will reject it.
AdLoop follows suit. ads.developer_token is optional: leave it empty in
config.yaml, or press Enter at the wizard prompt. The client and the
keyword-ideas REST call send the header only when a token is still
configured. A Manager Account (MCC) is no longer needed for API access
either; login_customer_id stays optional and only matters when you reach
several accounts through one login.
What you need instead is an access level on your Cloud project, applied for
on the project's Google Ads API Overview page in the Cloud console:
| Level | Daily operations | How to get it |
|---|---|---|
| Test | test accounts only | automatic when the API is enabled |
| Explorer | 2,880 | apply, usually granted automatically |
| Basic | 15,000 | apply, needs a brand-verified project |
| Standard | higher | apply, manual review |
adloop init points at that page and its banner explains the levels. Error
hints follow the new world: CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION (the
v25 error when a Test-level project calls a real account) and the older
DEVELOPER_TOKEN_NOT_APPROVED both explain the Overview page and the
Explorer/Basic levels; DEVELOPER_TOKEN_INVALID now says to remove the
token rather than replace it.
Google Ads API v25
The client is pinned to v25 (google-ads library 32.0.0). v25 removes
nothing AdLoop uses; the breaking areas are lifecycle goals, incentives,
reach planning and benchmarks. GAQL reads, keyword ideas, the keyword
forecast and enum discovery were verified live on v25. health_check
reports the pinned version and stops nagging about the library default.
Upgrading
pip install -U adloop
Requires google-ads>=32.0.0, which the package pulls in. Existing configs
keep working with or without a developer token.