***

title: echo
slug: /reference/python/relay/call/echo
description: Echo call audio back to the caller for testing.
max-toc-depth: 3
---------------------

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

[calling-call-echo]: /docs/server-sdks/reference/python/relay/call#events

[call-events]: /docs/server-sdks/reference/python/relay/call#events

Echo audio back to the caller. This is primarily useful for testing audio
quality, latency, and connectivity. The caller hears their own voice repeated
back to them.

<Info>
  This method emits [`calling.call.echo`][calling-call-echo] events. See [Call Events][call-events] for payload details.
</Info>

## **Parameters**

<ParamField path="timeout" type="Optional[float]" toc={true}>
  Maximum duration of the echo in seconds. The echo stops automatically after
  this timeout.
</ParamField>

<ParamField path="status_url" type="Optional[str]" toc={true}>
  URL to receive echo status webhooks.
</ParamField>

## **Returns**

`dict` -- Server response confirming the echo operation.

## **Example**

```python {15}
from signalwire.relay import RelayClient

client = RelayClient(
    project="your-project-id",
    token="your-api-token",
    host="your-space.signalwire.com",
    contexts=["default"],
)

@client.on_call
async def handle_call(call):
    await call.answer()
    await call.play([{"type": "tts", "text": "Starting echo test. You should hear yourself."}])

    result = await call.echo(timeout=30)
    print(f"Echo completed: {result}")

    await call.play([{"type": "tts", "text": "Echo test complete."}])
    await call.hangup()

client.run()
```