> 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. # register > Record which conversation and call a handoff nonce stands for. [ref-handoffrouter]: /docs/server-sdks/reference/python/agents/handoff-router [user-variables]: /docs/server-sdks/reference/python/core/capabilities/user-variables Record what a nonce is a capability for. Call it from the dynamic-config callback of the dial that carried the nonce, reading `call_id` from the request the platform sent and never from anything the browser supplied. Expired entries are pruned on every call. A nonce that isn't a non-empty string is ignored. ## Parameters **`nonce`** `str` — required The random value your application placed in the dial's `handoff_nonce` user variable. Read it with [`user_variables()`][user-variables]. --- **`conversation_id`** `str` — required The conversation this call continues. Keyword-only. --- **`call_id`** `str | None` — default: None The platform call ID. Required for `/handoff` to end the call and for `/say` to deliver text. Keyword-only. --- ## Returns `None` ## Example ```python {3-7} def remember_nonce(query_params, body_params, headers, ephemeral_agent): variables = user_variables(body_params) handoff.register( variables["handoff_nonce"], conversation_id=gateway.read_handle(variables["chat_handle"]), call_id=body_params.get("call", {}).get("call_id"), ) ``` See [`HandoffRouter`][ref-handoffrouter] for the full flow. > Record which conversation and call a handoff nonce stands for.