> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # say > Deliver typed text into the live call a nonce names. [ref-handoffrouter]: /docs/server-sdks/reference/python/agents/handoff-router Deliver typed text into the live call the nonce names, through your `send_message` callback. Doesn't consume the nonce, since typing is repeatable for the life of the call, but stops once `max_messages_per_call` is reached. Only the text is forwarded; no other request field reaches the call. This is what `POST /say` calls. ## Parameters **`nonce`** `str` — required The nonce registered for the call. --- **`text`** `str` — required The text to deliver. Leading and trailing whitespace is stripped; empty text is rejected. --- ## Returns `bool` -- `True` when `send_message` ran without raising. `False` when `send_message` isn't configured, the nonce is unknown or has no call ID, the text is empty, the message cap is reached, or the callback raised. ## Example ```python if not await handoff.say(nonce, "I'm at the north entrance."): return {"error": "not found"}, 404 return {"ok": True} ``` See [`HandoffRouter`][ref-handoffrouter] for the route this backs. > Deliver typed text into the live call a nonce names.