***

title: RecordAction
slug: /reference/python/relay/actions/record-action
description: Action handle for an active recording operation.
max-toc-depth: 3
---------------------

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

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

[base-action-interface]: /docs/server-sdks/reference/python/relay/actions

[stop]: /docs/server-sdks/reference/python/relay/actions/record-action/stop

[pause]: /docs/server-sdks/reference/python/relay/actions/record-action/pause

[resume]: /docs/server-sdks/reference/python/relay/actions/record-action/resume

Returned from [`call.record()`][call-record]. Tracks
an active recording operation. Terminal states: `finished`, `no_input`.

Inherits all properties and methods from the
[base Action interface][base-action-interface] (`control_id`,
`is_done`, `completed`, `result`, `wait()`).

## **Properties**

No additional properties beyond the [base Action interface][base-action-interface].

## **Methods**

<CardGroup cols={3}>
  <Card title="stop" href="/docs/server-sdks/reference/python/relay/actions/record-action/stop">
    Stop recording immediately.
  </Card>

  <Card title="pause" href="/docs/server-sdks/reference/python/relay/actions/record-action/pause">
    Pause an active recording.
  </Card>

  <Card title="resume" href="/docs/server-sdks/reference/python/relay/actions/record-action/resume">
    Resume a paused recording.
  </Card>
</CardGroup>

## **Example**

```python {13}
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()
    action = await call.record(audio={"direction": "both", "format": "wav"})

    # Pause during sensitive information
    await action.pause()
    # ... sensitive exchange ...
    await action.resume()

    # Wait for the recording to complete
    event = await action.wait()
    print(f"Recording URL: {event.params.get('record', {}).get('url')}")

client.run()
```