https://www.googleapis.com/auth/adwords
After login, I store in my database:

access_token

refresh_token

customer_id (from listAccessibleCustomers)

The user that logs in has admin role in the MCC.

3. API Requests (REST v21)
All requests are made with headers:

json
Copy
Edit
{
  "Authorization": "Bearer <user_access_token>",
  "developer-token": "<mcc_dev_token>",
  "login-customer-id": "<MCC ID or client account ID>",
  "Content-Type": "application/json"
}
Example endpoint:

bash
Copy
Edit
POST 
https://googleads.googleapis.com/v21/customers/{client_customer_id}/campaignBudgets:mutate
4. Current Flow
Refresh token → Works fine, I get valid access tokens.

Create budget → Works fine, I get a valid budgetResourceName.

Create campaign (Performance Max) → Always fails.

Payload example:

json
Copy
Edit
{
  "operations": [{
    "create": {
      "name": "my-test-campaign",
      "status": "PAUSED",
      "advertisingChannelType": "PERFORMANCE_MAX",
      "campaignBudget": "customers/{customerId}/campaignBudgets/123",
      "maximizeConversions": {},
      "startDate": "2025-08-22",
      "endDate": "2025-12-31",
      "containsEuPoliticalAdvertising": 
"DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"
    }
  }]
}
5. Errors
Case A: login-customer-id = MCC ID

vbnet
Copy
Edit
403 PERMISSION_DENIED
User doesn't have permission to access customer.
Note: If you're accessing a client customer, the manager's customer id must 
be set in the 'login-customer-id' header.
Case B: login-customer-id = Client Account ID

bash
Copy
Edit
403 PERMISSION_DENIED
errorCode: USER_PERMISSION_DENIED
The caller does not have permission
In both cases, I cannot create the campaign.

6. My Question
My developer token is linked to the MCC.

The OAuth’d user has admin access in the MCC.

I tried both with login-customer-id = MCC ID and client account ID.

Budgets can be created, but campaigns always fail.

What is the correct setup so I can successfully create a Performance Max 
campaign in a client account under my MCC in sandbox/test mode?

Do I need to grant the OAuth user explicit admin access inside each client 
account individually (not only in the MCC)?

Or is there another required step for test campaigns with red-label 
accounts + test developer tokens?

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/adwords-api/a416e3ed-5f77-4253-8938-4ea333065168n%40googlegroups.com.

Reply via email to