---
title: "Find Google Ads spend with nothing to show for it"
method: POST
path: "/api/v1/tools/google_analyze_wasted_spend/execute"
tags: ["Google Ads"]
---

# Find Google Ads spend with nothing to show for it

`POST /api/v1/tools/google_analyze_wasted_spend/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/google_analyze_wasted_spend/execute`
- Auth: HTTP bearer

Finds keywords, and the campaigns they sit in, that spent real money over the period and recorded zero conversions.
The rule is deliberately conservative so it never flags something that simply has not had a chance yet: a keyword must have spent at least the threshold — never less than the cost of 20 average clicks in this account, so the floor means the same in every currency — must have zero conversions, and its campaign must have been running for more than 14 days. Anything newer is in its learning period and is excluded and counted separately.
Use when: the user asks where money is being wasted, wants to cut costs, or asks for a spend audit.
Do not use when: conversion tracking may be missing entirely — check google_list_conversion_actions first, because zero conversions everywhere usually means broken tracking rather than bad keywords.
Returns candidates only. Pausing anything is a separate, explicit step the user must approve.
If you are unsure which account, campaign or period the user means, ask them — do not guess ids or dates.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `date_range` 'today' | 'yesterday' | 'last_7_days' | 'last_14_days' | 'last_30_days' | 'this_month' | 'last_month': Preset range. Alternatively pass start_date and end_date (YYYY-MM-DD). Never both.
    - `start_date` string: First day of the period (YYYY-MM-DD). Use with end_date.
    - `end_date` string: Last day of the period (YYYY-MM-DD). Use with start_date.
    - `min_spend` number: Minimum spend (decimal, in the account currency) for a keyword to count. Raised to the floor — the cost of 20 average clicks in this account over the period — if lower. Default: that floor.
    - `limit` integer: How many keyword rows to scan, by spend (default 300).

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
