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

# Warm transfer to your team

> Let the agent handle routine calls and hand off cleanly to a person when it should.

Not every call should reach a human — but some absolutely should. A Flowyte **agent** handles the routine volume (hours, pricing, booking, status) and recognizes the moment a caller needs a real person. When it does, it doesn't dump the call: it has already gathered who's calling and why, then routes them to the right number with their original caller ID intact.

## Why it's "warm"

The agent does the qualifying work before the handoff, so your team doesn't start cold:

<CardGroup cols={2}>
  <Card title="Qualified first" icon="filter">
    The agent collects the caller's name, reason, and any details it needs, so the person who picks up isn't starting from zero.
  </Card>

  <Card title="Routed by context" icon="signs-post">
    A sales question, a billing issue, and an emergency each go to a different number — based on what the caller actually said.
  </Card>

  <Card title="Caller ID preserved" icon="id-card">
    Your team sees the customer's real number on the transferred call, not the platform's.
  </Card>

  <Card title="Only when it should" icon="hand">
    Routine calls stay contained. The agent transfers when its rules say to — not by default.
  </Card>
</CardGroup>

## How routing decisions are made

You set up two layers:

* A **default handoff destination** — where a transfer goes when nothing more specific matches.
* **Transfer-by-context rules** — a small table that maps a described situation ("caller wants to speak to billing", "caller reports an emergency") to a specific phone number. The agent matches the live conversation to a rule and transfers there.

This is a **skill** the agent calls mid-conversation. Because routing is data, the same pattern scales from one front desk to thousands of locations — look up the right destination, then transfer.

## In the API

| Action                                  | Endpoint                    | Scope          |
| --------------------------------------- | --------------------------- | -------------- |
| Set default destination & context rules | `PATCH /agents/{id}`        | `agents:write` |
| Add a transfer skill                    | `POST /agents/{id}/skills`  | `skills:write` |
| Publish                                 | `POST /agents/{id}/publish` | `agents:write` |
| See your transfer rate                  | `GET /agents/{id}/calls`    | `calls:read`   |

<Tip>
  Pair this with [guardrails](/concepts/guardrails) so the agent verifies a caller before it ever transfers sensitive requests, and with [skills](/concepts/skills) it can try first so only the calls that truly need a person reach one.
</Tip>

See also: [after-hours & overflow answering](/solutions/after-hours) and the [AI answering service](/solutions/answering-service).
