---
title: "Turn place names into Google location ids"
method: POST
path: "/api/v1/tools/google_resolve_locations/execute"
tags: ["Google Ads"]
---

# Turn place names into Google location ids

`POST /api/v1/tools/google_resolve_locations/execute`

## Request

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

Converts place names ("Berlin", "California", "United Kingdom") into the numeric geo target constant ids the write tools require. Free text never reaches a campaign: every location a campaign targets must come from this tool.
Use when: the user names a place and you are about to create or change a campaign's targeting.
Do not use when: you already have numeric ids from google_get_campaign_targeting — pass those straight through.
A name is resolved only when exactly one place carries that exact name (within country_code when given). If several places share the name, or only places whose names merely contain it exist ("Paris" finding only "Paris 15e Arrondissement"), the tool refuses to choose and returns the candidates with their canonical names and country codes; show them to the user and ask which one they mean. A name that matches nothing is reported as unresolved, never silently dropped. This call is free and changes nothing.
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, required
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `locations` string[], required: Place names or numeric geo target constant ids. Ids are verified rather than searched.
    - `country_code` string: Two-letter country code to disambiguate names that exist in several countries, e.g. "GB".

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