***

title: rpc_ai_unhold
slug: /reference/python/agents/function-result/rpc-ai-unhold
description: Release another call from hold via RPC.
max-toc-depth: 3
---------------------

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

[rpc-ai-message]: /docs/server-sdks/reference/python/agents/function-result/rpc-ai-message

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

Release another call from hold. Typically used after injecting a message into
the held caller's AI agent via [`rpc_ai_message()`][rpc-ai-message].

## **Parameters**

<ParamField path="call_id" type="str" required={true} toc={true}>
  Call ID of the call to release from hold.
</ParamField>

## **Returns**

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

## **Example**

```python {13}
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="release_caller", description="Release the caller from hold")
def release_caller(args, raw_data):
    caller_call_id = args.get("original_call_id")
    return (
        FunctionResult("Returning you to the caller.")
        .rpc_ai_message(caller_call_id, "You can take their message now.")
        .rpc_ai_unhold(caller_call_id)
    )

agent.serve()
```