***

title: hold
slug: /reference/python/agents/function-result/hold
description: Put the call on hold with an optional timeout.
max-toc-depth: 3
---------------------

For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

[functionresult]: /docs/server-sdks/reference/python/agents/function-result

Put the call on hold. The caller hears hold music until the hold is released
or the timeout expires.

## **Parameters**

<ParamField path="timeout" type="int" default="300" toc={true}>
  Maximum hold duration in seconds. Clamped to the range 0--900 (15 minutes max).
</ParamField>

## **Returns**

[`FunctionResult`][functionresult] — self, for chaining.

## **Example**

```python {7,11}
from signalwire import AgentBase
from signalwire import FunctionResult

agent = AgentBase(name="my-agent", route="/agent")
agent.set_prompt_text("You are a helpful assistant.")

@agent.tool(name="hold_for_agent", description="Place the caller on hold")
def hold_for_agent(args, raw_data):
    return (
        FunctionResult("Please hold while I find an available agent.")
        .hold(timeout=60)
    )

agent.serve()
```