---
title: "Show the LinkedIn account tree"
method: POST
path: "/api/v1/tools/linkedin_get_campaign_structure/execute"
tags: ["LinkedIn Ads"]
---

# Show the LinkedIn account tree

`POST /api/v1/tools/linkedin_get_campaign_structure/execute`

## Request

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

Returns the whole account in one call: every campaign group (a campaign in Campaign Manager), the campaigns (ad sets) inside it, and the creatives (ads) inside those, with status and budget at each level.
Naming: since October 2025 Campaign Manager calls the three levels campaign → ad set → ad, while the API and these tools say campaign group → campaign → creative. A user's "campaign" may mean a campaign group, and their "ad set" or "ad" means a campaign or a creative here, so check which level they mean before acting on it.
Use when: taking over an unfamiliar account, auditing how something is set up, or answering "where does this campaign sit". One call here replaces three list calls and keeps the ids consistent between levels.
Do not use it on a very large account when you only need one branch — pass campaign_group_id, or use linkedin_list_campaigns, so the answer stays readable. Do not use it for performance.
Returns the tree plus counts, and flags every level that is not delivering.
If a campaign has no creatives it can never spend, however healthy its budget looks — say so rather than reporting it as ready.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `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.
    - `campaign_group_id` string: Limit the tree to one campaign group. LinkedIn ids are numeric strings; a full urn:li:… value is also accepted.
    - `include_creatives` boolean: Read the creatives under each campaign (default true). Turn off for a fast overview.
    - `status` 'ACTIVE' | 'PAUSED' | 'DRAFT' | 'ARCHIVED' | 'COMPLETED' | 'all': Only objects in this state. LinkedIn statuses are upper case. Defaults to everything except archived, cancelled and removed.
    - `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)
