***

title: MFA
slug: /reference/python/rest/mfa
description: Multi-factor authentication via SMS and voice.
max-toc-depth: 3
---------------------

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

[restclient]: /docs/server-sdks/reference/python/rest/client

[sms]: /docs/server-sdks/reference/python/rest/mfa/sms

[call]: /docs/server-sdks/reference/python/rest/mfa/call

[verify]: /docs/server-sdks/reference/python/rest/mfa/verify

Send and verify multi-factor authentication (MFA) codes via SMS or voice call.
The typical flow is: request a code with `sms()` or `call()`, then confirm it
with `verify()`.

Access via `client.mfa` on a [`RestClient`][restclient] instance.

```python {9}
from signalwire.rest import RestClient

client = RestClient(
    project="your-project-id",
    token="your-api-token",
    host="your-space.signalwire.com",
)

request = client.mfa.sms(**{"to": "+15551234567", "from": "+15559876543"})
print(request["id"])
```

## **Methods**

<CardGroup cols={3}>
  <Card title="sms" href="/docs/server-sdks/reference/python/rest/mfa/sms">
    Send an MFA verification code via SMS.
  </Card>

  <Card title="call" href="/docs/server-sdks/reference/python/rest/mfa/call">
    Send an MFA verification code via voice call.
  </Card>

  <Card title="verify" href="/docs/server-sdks/reference/python/rest/mfa/verify">
    Verify an MFA code submitted by the user.
  </Card>
</CardGroup>