---
title: "Per-asset performance labels (BEST / GOOD / LOW)"
method: POST
path: "/api/v1/tools/google_get_asset_performance/execute"
tags: ["Google Ads"]
---

# Per-asset performance labels (BEST / GOOD / LOW)

`POST /api/v1/tools/google_get_asset_performance/execute`

## Request

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

Returns Google's per-asset performance labels for responsive search ads — BEST, GOOD, LOW, LEARNING or PENDING — for each headline and description, with the impressions behind them.
Use when: the user wants to improve an existing ad and needs to know which parts to replace.
Do not use when: the ad is new. Assets stay LEARNING until Google has served them enough, and replacing a LEARNING asset restarts that clock for nothing.
The labels are relative to the other assets in the same ad, not absolute quality: in a strong ad, some asset still has to be LOW. Replace LOW assets with genuinely different ideas rather than reworded versions of the BEST one, or the next report says the same thing.
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.
    - `campaign_id` string: Limit to one campaign.
    - `ad_group_id` string: Limit to one ad group.
    - `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.
    - `limit` integer: Maximum assets (default 100).

## 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)
