> 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. # MFA > Multi-factor authentication via SMS and voice. [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** #### [sms](/docs/server-sdks/reference/python/rest/mfa/sms) Send an MFA verification code via SMS. #### [call](/docs/server-sdks/reference/python/rest/mfa/call) Send an MFA verification code via voice call. #### [verify](/docs/server-sdks/reference/python/rest/mfa/verify) Verify an MFA code submitted by the user. > Multi-factor authentication via SMS and voice. ## Docs - [call](https://signalwire.com/docs/server-sdks/reference/python/rest/mfa/call.md): Send an MFA verification code via voice call. - [sms](https://signalwire.com/docs/server-sdks/reference/python/rest/mfa/sms.md): Send an MFA verification code via SMS. - [verify](https://signalwire.com/docs/server-sdks/reference/python/rest/mfa/verify.md): Verify an MFA code submitted by the user.