---
title: "companies merge"
method: POST
path: "/v3/workspaces/{workspaceSlug}/tenants/merge"
tags: ["tenants"]
---

# companies merge

`POST /v3/workspaces/{workspaceSlug}/tenants/merge`

## Request

- Base URL: `https://api.interfere.com`
- URL: `https://api.interfere.com/v3/workspaces/{workspaceSlug}/tenants/merge`
- Auth: HTTP bearer

Moves every domain and user of the absorbed company onto the kept company, keeps the kept company's revenue and tier (filling blanks from the absorbed one), and removes the absorbed company from the list. Refuses when both companies carry different revenue or tiers. Safe to repeat: a pair that is already merged returns alreadyMerged. Requires workspace admin.

## Path parameters

- `workspaceSlug` string, required

## Request body

- object
  - `keepId` string, uuid, required
  - `absorbId` string, uuid, required

## Response `200`

OK

- MergeTenantsResponse
  - `keep` object, required
    - `endUserOrgId` string, uuid, required
  - `absorb` object, required
    - `endUserOrgId` string, uuid, required
  - `alreadyMerged` boolean, required
  - `moved` object, required
    - `domains` integer, required
    - `users` integer, required

## Other responses

- `400`: Request parameters or body failed validation
- `401`: Missing or invalid credentials
- `403`: Access denied
- `404`: Resource not found
- `409`: Request conflicts with current state
- `503`: Service temporarily unavailable; retry after the indicated delay

---

[API](https://skmtc.dev/interfere/apis/interfere-api.md) - [All operations](https://skmtc.dev/interfere/apis/interfere-api/llms.txt) - [OpenAPI document](https://skmtc.dev/interfere/apis/interfere-api/revisions/093321c104e6?raw)
