Persistent 404 Not Found Error with Google Ads API via HTTP Request Node

Hello, I'm encountering a persistent "404 Not Found" error when trying to make a POST request to the Google Ads API search endpoint. I've already gone through an extensive debugging process and have ruled out all common causes.

Endpoint: POST https://googleads.googleapis.com/v16/customers/{customer-id}/googleAds:search

Error Message: 404. That’s an error. The requested URL /v16/customers/{customer-id}/googleAds:search was not found on this server. That’s all we know.

Here's what I've already verified and tried:

  • Workflow: I am using a standard HTTP Request node.

  • Permissions: I have confirmed via the Google Ads UI that my Manager Account (MCC) has Admin and Owner access to the client account I'm querying.

  • Customer ID: The Customer ID in the URL is correct and does not contain dashes.

  • Google Cloud Project:

    • The OAuth Consent Screen app has been published and is "In Production".

    • The "Google Ads API" is explicitly enabled in the project's API library.

  • Credentials:

    • I have completely deleted and recreated the OAuth 2.0 Client ID in GCP.

    • I have completely deleted and recreated the credential in n8n using the new keys and have successfully re-authenticated.

  • n8n Node:

    • I have deleted the failing HTTP Request node and created a new one from scratch, manually inputting all parameters.

    • The node correctly includes the "login-customer-id" header.

    • I have also explicitly added the "developer-token" to the headers, and the error still persists.

  • API Version: I confirmed that using API v16 is correct. Changing to other versions like v19 or v20 results in a "400 Bad Request" error, indicating v16 is the valid endpoint.

Despite all these steps, the 404 error remains. This suggests the issue might be environmental (networking) or a bug in my n8n instance.

Could you please guide me on how to obtain and share the necessary detailed logs to diagnose this further?

Hey can you try getting the raw request from the HTTP node?

  • Open your failing HTTP Request node.
  • Scroll down and enable “Full Response”.
  • Run the node.
  • The execution data will then include both the response object (status, headers, body) and the raw request sent.
  • You can copy-paste that JSON block (masking tokens) to share for debugging.

Also, can you let me know if you managed to do a request with the same customer-id and payload to Google successfully via any other method?

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.