---
title: "Two-Factor Authentication"
slug: "two-factor-authentication-api"
updated: 2026-02-16T08:43:50Z
published: 2026-02-16T08:44:35Z
canonical: "developer.rocket.chat/two-factor-authentication-api"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://developer.rocket.chat/llms.txt
> Use this file to discover all available pages before exploring further.

# Two-Factor Authentication

Rocket.Chat offers several methods for enabling two-factor authentication (2FA) in a workspace. Before using endpoints that require 2FA, ensure that 2FA is enabled by the workspace administrator at: **Manage → Workspace → Settings → Accounts → Two Factor Authentication**.

For user instructions on setting up 2FA, see the [**Two-Factor Authentication**](https://docs.rocket.chat/docs/two-factor-authentication-user-guide) user guide.

> [!WARNING]
> Email-based 2FA requires [SMTP](https://docs.rocket.chat/docs/configure-email) to be configured in your workspace.

## Using 2FA in API requests

Whenever you call an endpoint that requires two-factor authentication, you must include two additional headers in the **request headers**:

| Header | Description |
| --- | --- |
| `X-2fa-Code` | The 2FA code. This can be an email code, TOTP code from an authenticator app, or hashed password (for password-based 2FA). |
| `X-2fa-Method` | The method associated with the code (`email`, `totp`, or `password`). This value is usually provided in the error response when 2FA is required. |

## 2FA error responses

If a request is made without the required 2FA credentials, or with invalid credentials, the server returns an error that includes the 2FA **method** you must supply. Below are all possible error types.

### A. `totp-required` (2FA required)

Returned when the endpoint requires 2FA but none was supplied.

**Example response:**

```json
{
  "success": false,
  "error": "TOTP Required [totp-required]",
  "errorType": "totp-required",
  "details": {
    "method": "email",
    "codeGenerated": false,
    "codeCount": 1,
    "codeExpires": ["2020-01-02T13:06:42.408Z"],
    "availableMethods": ["email"]
  }
}
```

**Parameters of the** `details` **object.**

These fields describe the required 2FA method and available verification options:

- `method`: Required 2FA method for the user.
- `codeGenerated`: Whether an email token was already generated.
- `codeCount` *(optional)*: Number of available codes (email only).
- `codeExpires` *(optional)*: Token expiration timestamps (email only).
- `availableMethods`: All 2FA methods available for the user.

### B. `totp-invalid` (Wrong 2FA code)

Returned when the user supplied a 2FA code, but the code is incorrect.

**Example response:**

```json
{
  "success": false,
  "error": "TOTP Invalid [totp-invalid]",
  "errorType": "totp-invalid",
  "details": {
    "method": "email"
  }
}
```

### Other 2FA-related errors

#### `error-invalid-user`

Returned when the user is **not allowed** to use the requested 2FA method. This commonly happens when enabling 2FA by email but the **user’s email is not verified**.

**Example response:**

```json
{
  "success": false,
  "error": "You need to verify your emails before setting up 2FA [error-invalid-user]",
  "errorType": "error-invalid-user"
}
```

## Handling 2FA method errors

Use the `method` returned in the error response to determine how to supply the correct 2FA code:

- `password`: Provide the user’s **hashed password** in the `X-2fa-Code` header.
- `email`: Provide the **email-based 2FA code** in the `X-2fa-Code` header.
- `totp`: Provide the **authenticator app code** in the `X-2fa-Code` header.
