---
title: "Resolve LinkedIn targeting entities"
method: POST
path: "/api/v1/tools/linkedin_search_targeting/execute"
tags: ["LinkedIn Ads"]
---

# Resolve LinkedIn targeting entities

`POST /api/v1/tools/linkedin_search_targeting/execute`

## Request

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

Turns plain words into the LinkedIn targeting URNs a campaign actually accepts — job titles, industries, seniorities, company-size bands, locations, skills, interests, member behaviours, employers, degrees, fields of study and interface locales.
Use when: before every create or update that touches targeting, without exception. A campaign payload takes URNs and nothing else, and there is no fuzzy match on the write path: an invented URN either errors or targets strangers.
Do not guess a URN, reuse one from a demographic report (those are report labels), or copy one between accounts without checking it here first. Do not pass a user's phrase straight into a create tool — that is what this tool exists to prevent.
Returns matching entities with their URN and display name — a location's name already carries its parents ("Sacramento, California, United States"). Seniorities, staffCountRanges and interfaceLocales are short fixed lists: when nothing matches the query, the whole list comes back for the user to choose from. interfaceLocales is the language members use LinkedIn in (one locale per language, e.g. urn:li:locale:en_US for all English), never a country. Costs nothing, so run it as many times as the audience needs facets.
If a search returns nothing, try a shorter or more common phrasing (LinkedIn matches on its own canonical titles), and if it still fails tell the user that facet cannot be targeted rather than substituting something close.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `ad_account_id` string: LinkedIn ad account id — the numeric id from Campaign Manager, as a string ("506699162"). Omit it to use the primary account; pass it when the user manages several.
    - `facet` 'locations' | 'titles' | 'industries' | 'seniorities' | 'staffCountRanges' | 'skills' | 'interests' | 'memberBehaviors' | 'employers' | 'degrees' | 'fieldsOfStudy' | 'interfaceLocales', required: Which targeting dimension to search: locations (always required on a campaign), titles, industries, seniorities, staffCountRanges, skills, interests, memberBehaviors, employers, degrees, fieldsOfStudy or interfaceLocales.
    - `query` string, required: What to search for, in the user's own words ("marketing manager", "Berlin", "software").
    - `limit` integer: Maximum rows to return (default 100).
    - `raw_data` boolean: Return compact JSON only (no markdown). Use when you will compute on the result.

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