---
title: "Switch the primary ad account for a platform"
method: POST
path: "/api/v1/tools/switch_primary_account/execute"
tags: ["Adako"]
---

# Switch the primary ad account for a platform

`POST /api/v1/tools/switch_primary_account/execute`

## Request

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

Makes one account the primary account for its platform, the one later tools use when no account id is passed, and switches it on if it was inactive. Other active accounts stay active. When switching it on would go over the ad accounts the plan covers this billing period, the platform's previous primary is switched off to make room if that frees a place (it stays connected); otherwise the call fails with account_limit. Changes Adako settings only; nothing on the ad platform changes, so no proposal is created.
Use when: the user says "use account X from now on", or a tool returned account_ambiguous or not_connected and the user confirmed which account they mean.
Not for: manager accounts, which hold no campaigns. If you are unsure which account the user means, ask before switching.
The account must already be known to Adako (see list_connected_accounts).

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `platform` 'google_ads' | 'meta_ads' | 'chatgpt_ads' | 'tiktok_ads' | 'linkedin_ads', required
    - `account_id` string, required: Platform account id as shown by list_connected_accounts

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