> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamfollowup.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public API base URL: https://api.teamfollowup.ai/api.
> Authenticate public API requests with Authorization: Bearer YOUR_API_KEY.
> Use product-owned terms: agents, campaigns, projects (GoHighLevel sub-accounts), contacts, calls, outcomes, skills, cadences, phone numbers.
> Scope requests by locationId rather than projectName.
> Read the guide linked from each API reference group before recommending an endpoint.

# Move or copy a TFU Live rep

> Read what comes across to another sub-account, answer its questions, then copy or move the rep.

Copy a rep onto another sub-account of its agency, or move it there. A copy is a new rep, and the
original stays as it is. A move keeps the same rep, with its id, history and builder chat. Both
need `agents:write`, the rep's `tfu_live:` id and its current `locationId`.

## Step 1: Read the plan

Call [Preview TFU Live agent clone](https://docs.teamfollowup.ai/api-reference/tfu-live/preview-tfu-live-agent-clone.md) or
[Preview TFU Live agent move](https://docs.teamfollowup.ai/api-reference/tfu-live/preview-tfu-live-agent-move.md) with
`toLocationId`. It writes nothing. Its `mode` is `copy` or `move`, and it lists:

* `inputs`: the questions. Each has the new sub-account's `options`, a `suggested` match of the
  same name, and a `default`.
* `carried`: what comes across.
* `removed`: what is removed with no question, such as a step the new CRM cannot run.
* `wontMove`: what stays behind, such as calls, or a merge field inside a message.
* `leftToSetUp`: what is left blank. Go-live asks for each one.

Each item has a `code` to branch on and a `message` in words. Keep the plan's `fingerprint`.

## Step 2: Answer the questions

Put your answers in `answers`, under each input's `id`. Send an option's `id`, or one of the
input's `choices`:

| Choice | What it does |
| - | - |
| `later` | Leaves it blank. Go-live asks for it. |
| `remove` | Removes the step, cadence action or setting, and lists it. |
| `keep` | On `brain_name`, keeps the Brain's words. |
| `copy_text` | Sends the original's words in place of a saved template. |
| `create_field` | Makes a field of that name on a GoHighLevel sub-account. |
| `carry` or `leave` | On a move, the number comes, or stays on the old sub-account. |
| `use_default` | Gives a cadence with no steps left the default five calls over seven days. |
| `fill` or `replace` | Fills the new sub-account's empty business details, or replaces its own. |
| `use_target` | Gives the Brain the new sub-account's business name. |

An input you leave out takes its `default`. With no `answers` at all, every input does. An
input whose `default` is null has `required: true`. Answer it, or the request is refused.

Transfer and alert inputs start new. The old sub-account's people are never suggested or kept.
Pick from `options`. Otherwise the `default` is `later`, or `remove` where go-live cannot ask.

An API key or OAuth client cannot answer `create_field`. Pick one of the new sub-account's
fields from `options` instead. Only a signed-in person can have a field made.

## Step 3: Copy or move

Send your answers, and the `fingerprint` as `ifPlan`.

* [Clone TFU Live agent](https://docs.teamfollowup.ai/api-reference/tfu-live/clone-tfu-live-agent.md) takes `toLocationId`, a
  stable `requestId`, and an optional `name` and `activeTags`. The same `requestId` with other
  answers makes another copy. The copy starts paused, with no numbers.
* [Move TFU Live agent](https://docs.teamfollowup.ai/api-reference/tfu-live/move-tfu-live-agent.md) takes `toLocationId` and the
  `ifVersion` you read. Each number comes when it can. One that cannot stays on the old
  sub-account, and the result lists it. The old campaign is retired, and a paused one is made.

A plan with `live: true` is a move of a live rep. Its new campaign takes test calls until it
goes live there. The move switches it on only when nothing is left to set up and the moved
version is ready. A move that changed the rep's steps starts preparing that version, and the
campaign stays paused. The result's `live` and `goLiveBlockers` say which. Then use
[Go live and pause](https://docs.teamfollowup.ai/tfu-live/go-live.md).

A website widget's code names its campaign, and a move retires the old one. When the rep's
campaign names websites for its widget, the result has `widget.campaignId`. Paste the widget
code of that campaign on the site, in place of the old code.

## When it is refused

| Code | Status | What to do |
| - | - | - |
| `TFU_LIVE_PLAN_CHANGED` | 409 | Something changed since you read the plan. Read it again. |
| `TFU_LIVE_PLAN_ANSWER_INVALID` | 422 | An answer does not fit. `inputs` names the questions. |
| `TFU_LIVE_PLAN_ANSWER_REQUIRED` | 422 | A question has no default. `inputs` names it. |
| `TFU_LIVE_CLONE_RESOURCES_UNAVAILABLE`, `TFU_LIVE_MOVE_RESOURCES_UNAVAILABLE` | 503 | A list of the new sub-account could not be read. `kinds` names it. Nothing was written. Try again. |
| `TFU_LIVE_OPERATION_IN_PROGRESS` | 409 | Another move or copy of the rep is running. Try again once it finishes. |
| `TFU_LIVE_MOVE_FINISHING` | 502 | A step got no answer in time. The move finishes by itself in a few minutes. |
| `TFU_LIVE_MASTER_PARENT_REFUSED`, `TFU_LIVE_MASTER_CHILD_REFUSED` | 409 | A master agent, or a rep under one, cannot be moved or copied yet. |
| `TFU_LIVE_CLONE_UNSUPPORTED` | 422 | The rep is saved in an older format. Open it once, then try again. |
| `TFU_LIVE_MOVE_CHANGED` | 409 | The rep changed since you read it. Read its `ifVersion` again. |
| `TFU_LIVE_MOVE_CRM_UNSUPPORTED` | 422 | A sub-account runs a CRM that TFU Live does not run on. |
| `TFU_LIVE_MOVE_DEFINITION_INVALID` | 422 | A step does not fit the new sub-account. Nothing changed. Check its steps. |
| `TFU_LIVE_MOVE_CHANGES_TOO_MUCH` | 422 | The move would change more than the rep's steps. Nothing changed. Contact support. |
| `TFU_LIVE_MOVE_BRAIN_SYNC_PENDING` | 409 | The Brain is still being updated from its prompt. Try again once that finishes. |

## Related

* [Connect GoHighLevel to a TFU Live rep](https://docs.teamfollowup.ai/tfu-live/connect-gohighlevel.md)
* [Set up a TFU Live rep's campaign](https://docs.teamfollowup.ai/tfu-live/campaign-settings.md)
* [TFU Live authoring](https://docs.teamfollowup.ai/api-reference/tfu-live.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.