---
title: "Offer a site to another workspace"
method: POST
path: "/api/v1/sites/{slug}/transfer"
tags: ["Members"]
---

# Offer a site to another workspace

`POST /api/v1/sites/{slug}/transfer`

## Request

- Base URL: `https://api.dotsy.ai`
- URL: `https://api.dotsy.ai/api/v1/sites/{slug}/transfer`
- Auth: HTTP bearer

Offers the site to someone by email. They have 14 days to accept, and they pick which of their workspaces receives it (`acceptTransfer`). The site stays here until they do. A new offer replaces any pending one for the same site. Needs the site Owner role.

## Path parameters

- `slug` string, required

## Request body

- CreateTransferRequest
  - `toEmail` string, email, required: Who the site is offered to.
  - `keepCollaborators` boolean, required: True to keep the site's collaborators and pending invites after the move. False clears them.

## Response `201`

The offer was created.

- CreateTransferResponse
  - `id` string, required: The transfer's id. Use it to cancel the offer.
  - `transferPath` string, required: Dashboard path the recipient opens to review the offer.
  - `toEmail` string, required: Lowercased.
  - `emailSent` boolean, required: True when an email was sent. False when email is not configured on this server, so share `transferPath` yourself.

## Other responses

- `400`: `invalid_body`: send `{ toEmail, keepCollaborators: boolean }`.
- `401`: Missing or invalid credentials.
- `403`: `forbidden_role`: transferring a site needs the site Owner role.
- `404`: `site_not_found`: no such site, or it is not visible to this account.

---

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