---
title: "Add suggested competitor"
method: POST
path: "/api/v1/tools/add_suggested_competitor"
tags: ["default"]
---

# Add suggested competitor

`POST /api/v1/tools/add_suggested_competitor`

## Request

- Base URL: `https://www.affiliatespy.io`
- URL: `https://www.affiliatespy.io/api/v1/tools/add_suggested_competitor`
- Auth: HTTP bearer

Add a suggestion from get_competitor_suggestions to the list (mined deep on the next scan), as the rail's Add does. At the cap, pass swap_out_id to take out a competitor already mined deep in the same write, as the rail's Swap does. Undo an add with remove_competitor; undo a swap with restore_competitor (competitor: swap_out_id, replacing: the new id).

## Request body

- object
  - `app_id` string, uuid: Project id from list_apps. Omit to use your most recently added project.
  - `root` string, required: A suggestion's root from get_competitor_suggestions.
  - `swap_out_id` string: At the cap: the competitor to take out, usually swap_out.id from get_competitor_suggestions.
  - `confirm` boolean: Set true after the user confirmed an action the guard flagged as hard to undo.

## Response `200`

The tool's JSON result (same payload the MCP tool returns).

- unknown

## Other responses

- `400`: Arguments failed validation; body lists the issues.
- `401`: Missing or invalid API key.
- `403`: Guarded tool with Unrestricted MCP off.
- `429`: Rate limited (60 requests per minute per key).

---

[API](https://skmtc.dev/affiliatespy/apis/affiliatespy-api.md) · [All operations](https://skmtc.dev/affiliatespy/apis/affiliatespy-api/llms.txt) · [OpenAPI document](https://skmtc.dev/affiliatespy/apis/affiliatespy-api/revisions/0300d370b356?raw)
