> For the complete documentation index, see [llms.txt](https://fusionauth.io/docs/llms.txt)

# Reactor API | FusionAuth Docs

Learn about the APIs for activating, deactivating, and retrieving the status of a FusionAuth Reactor license.

# Reactor API

[Edit on GitHub](https://github.com/FusionAuth/fusionauth-site/blob/main/astro/src/content/docs/apis/reactor.mdx)

[View Markdown](https://fusionauth.io/docs/apis/reactor.md)

Available since `1.26.0`

This page contains the APIs for Reactor, FusionAuth's license system. Reactor is used to activate features based upon your licensing tier. Here are the APIs:

## Activate Reactor License

This API is used to activate a Reactor license.

### Request

[!Global API Key Authentication](https://fusionauth.io/docs/apis/authentication.md#global-api-key-authentication)

Activate a Reactor license

POST/api/reactor

OpenAPI Spec

#### Request Body

`licenseId`Stringrequired

The license Id to activate.

`license`Stringoptional

The Base64-encoded license value. This value is necessary in an [air-gapped](https://fusionauth.io/docs/get-started/download-and-install/reference/air-gapping.md) configuration where outbound network access is not available.

### Response

This API does not return a JSON response body.

*Response Codes*

| Code | Description |
| --- | --- |
| 200 | The request was successful. |
| 400 | The request was invalid or malformed, or this feature requires a paid FusionAuth license that is not present. The response will contain an [Errors](https://fusionauth.io/docs/apis/errors.md) JSON object with the specific errors. |
| 401 | The request did not supply a valid Authorization header (typically omitted or an invalid API key). The response will be empty. See [Authentication](https://fusionauth.io/docs/apis/authentication.md). |
| 409 | This instance is already licensed. To change the license, you must first `DELETE` the existing license. |
| 500 | There was an internal error. The response will be empty. To find the related stack trace, check the log files for your FusionAuth instance. |

## Retrieve Reactor Metrics

This API is used to retrieve the metrics of Reactor features.

### Request

[!Global API Key Authentication](https://fusionauth.io/docs/apis/authentication.md#global-api-key-authentication)

Retrieve Reactor metrics

GET/api/reactor/metrics

OpenAPI Spec

### Response

*Response Codes*

| Code | Description |
| --- | --- |
| 200 | The request was successful. The response will contain a JSON body. |
| 401 | You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See [Authentication](https://fusionauth.io/docs/apis/authentication.md). |
| 500 | There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty. |

#### Response Body

`metrics.breachedPasswordMetrics`Map<UUID, List<Object>

The breached password metrics. The map key is the Tenant Id.

`metrics.breachedPasswordMetrics[tenantId].actionRequired`Integer

The total number of user accounts where action is required.

`metrics.breachedPasswordMetrics[tenantId].matchedCommonPasswordCount`Integer

The total number of matched user accounts with a commonly compromised password.

`metrics.breachedPasswordMetrics[tenantId].matchedExactCount`Integer

The total number of matched user accounts with a compromised password exact match.

`metrics.breachedPasswordMetrics[tenantId].matchedPasswordCount`Integer

The total number of user accounts with matched passwords.

`metrics.breachedPasswordMetrics[tenantId].matchedSubAddressCount`Integer

The total number of sub-email user accounts that match a compromised password.

`metrics.breachedPasswordMetrics[tenantId].passwordsCheckedCount`Integer

The total number of user account passwords checked.

*Example Response JSON*

```json
{
  "metrics": {
    "breachedPasswordMetrics": {
      "30663132-6464-6665-3032-326466613934": {
        "actionRequired": 6,
        "matchedCommonPasswordCount": 2,
        "matchedExactCount": 3,
        "matchedPasswordCount": 3,
        "matchedSubAddressCount": 1,
        "passwordsCheckedCount": 23
      }
    }
  }
}
```

## Retrieve Reactor Status

This API is used to retrieve the status of Reactor features.

### Request

[!Global API Key Authentication](https://fusionauth.io/docs/apis/authentication.md#global-api-key-authentication)

Retrieve Reactor status

GET/api/reactor

### Response

*Response Codes*

| Code | Description |
| --- | --- |
| 200 | The request was successful. The response will contain a JSON body. |
| 401 | You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See [Authentication](https://fusionauth.io/docs/apis/authentication.md). |
| 500 | There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty. |

#### Response Body

`status.advancedIdentityProviders`String

The status for Advanced Identity Providers.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedLambdas`StringAvailable since 1.35.0

The status for Advanced lambda features such Lambda HTTP Connect.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedMultiFactorAuthentication`String

The status for [Advanced Multi-Factor Authentication](https://fusionauth.io/docs/lifecycle/authenticate-users/multi-factor-authentication.md).

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedOAuthScopes`StringAvailable since 1.50.0

The status for Advanced OAuth Scope features.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedOAuthScopesCustomScopes`StringAvailable since 1.50.0

The status for creating custom OAuth scopes.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedOAuthScopesThirdPartyApplications`StringAvailable since 1.50.0

The status for configuring Applications as third-party to enable OAuth scope consent prompts.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.advancedRegistration`String

The status for [Advanced Registration Forms](https://fusionauth.io/docs/lifecycle/register-users/advanced-registration-forms.md).

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.applicationMultiFactorAuthentication`StringAvailable since 1.37.0

The status for Application scoped Multi-Factor authentication configuration.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.applicationThemes`String

The status for Application Themes.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.breachedPasswordDetection`String

The status for [Breached Password Detection](https://fusionauth.io/docs/operate/secure/breached-password-detection.md). The possible following values:

*   `ACTIVE` - the feature is active
*   `DISCONNECTED` - the feature is currently disconnected
*   `PENDING` - the feature is pending while waiting to complete key exchange with Reactor
*   `UNKNOWN` - the status of the feature is unknown

`status.connectors`String

The status for [Connectors](https://fusionauth.io/docs/lifecycle/migrate-users/connectors.md).

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.dPoP`StringAvailable since 1.63.0

The status for Demonstrating Proof-of-Possession (DPoP).

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.entityManagement`String

The status for [Entity Management](https://fusionauth.io/docs/get-started/core-concepts/entity-management.md).

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.expiration`StringAvailable since 1.36.0

If the license is configured to be air-gapped, this value will be returned to indicate the license expiration. An air-gapped license is one that does not require egress network connectivity to the FusionAuth license server. If the license is not configured to be air-gapped, then this field will not be returned in the response.

The expiration string is formatted as an `ISO-8601` string in the form `YYYY-MM-DD`.

`status.ipGeoLocation`StringAvailable since 1.64.0

The status for the IP Geolocation feature set. Prior to version `1.64.0`, this feature set was included in the `status.threatDetection` field.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.licenseAttributes`Map<String, String>Available since 1.37.0

A set of attributes describing the license, this is primarily used for internal use and may help describe the license. The values returned in this object are subject to change.

`status.licensed`Boolean

Whether or not the FusionAuth Reactor has been activated with a valid license. This is synonymous with a licensed instance of FusionAuth.

`status.scimServer`StringAvailable since 1.36.0

The status for the SCIM Server features.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.threatDetection`StringAvailable since 1.30.0

The status for the Threat Detection feature set.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.webAuthn`StringAvailable since 1.41.0

The status for [WebAuthn](https://fusionauth.io/docs/lifecycle/authenticate-users/passwordless/webauthn-passkeys.md) features.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.webAuthnPlatformAuthenticators`StringAvailable since 1.41.0

The status for [WebAuthn](https://fusionauth.io/docs/lifecycle/authenticate-users/passwordless/webauthn-passkeys.md) platform authenticators.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

`status.webAuthnRoamingAuthenticators`StringAvailable since 1.41.0

The status for [WebAuthn](https://fusionauth.io/docs/lifecycle/authenticate-users/passwordless/webauthn-passkeys.md) roaming, or cross-platform, authenticators.

The possible following values:

*   `ACTIVE` - the feature is active
*   `DISABLED` - the feature is not available based upon your license
*   `DISCONNECTED` - the feature is not currently available due to connectivity issues
*   `PENDING` - the feature is in progress of being activated
*   `UNKNOWN` - the status of the feature is unknown

*Example Response JSON*

```json
{
  "status": {
    "advancedIdentityProviders": "ACTIVE",
    "advancedLambdas": "DISABLED",
    "advancedMultiFactorAuthentication": "ACTIVE",
    "advancedRegistration": "ACTIVE",
    "applicationMultiFactorAuthentication": "ACTIVE",
    "applicationThemes": "ACTIVE",
    "breachedPasswordDetection": "PENDING",
    "connectors": "ACTIVE",
    "entityManagement": "ACTIVE",
    "licenseAttributes": {
      "LicenseType": "Production",
      "LicensedPlan": "Enterprise"
    },
    "licensed": true,
    "scimServer": "ACTIVE",
    "threatDetection": "ACTIVE",
    "webAuthn": "ACTIVE",
    "webAuthnPlatformAuthenticators": "ACTIVE",
    "webAuthnRoamingAuthenticators": "ACTIVE"
  }
}
```

## Regenerate Reactor License

This API is used to make requests from FusionAuth to the License server to regenerate a license. This is particularly useful if it is suspected that the license key has been compromised and a new one is needed.

Regenerating the license will cause any other instance using the license to revert to Community plan features. All configuration will be maintained, but any paid plan functionality will be disabled. The instance of FusionAuth that makes this API request will be updated to use the new license key, but each additional instance requiring a license will need the updated license key.

### Request

[!Global API Key Authentication](https://fusionauth.io/docs/apis/authentication.md#global-api-key-authentication)

Regenerate a Reactor license

PUT/api/reactor

### Response

This API does not return a JSON response body.

*Response Codes*

| Code | Description |
| --- | --- |
| 200 | The request was successful. The response will be empty. |
| 400 | The request was invalid and/or malformed. The response will contain an [Errors](https://fusionauth.io/docs/apis/errors.md) JSON Object with the specific errors. This status will also be returned if a paid FusionAuth license is required and is not present. |
| 401 | You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See [Authentication](https://fusionauth.io/docs/apis/authentication.md). |
| 404 | The object you are trying to update doesn't exist. The response will be empty. |
| 500 | There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty. |

## Deactivate Reactor License

This API is used to deactivate a Reactor license. If [Breached Password Detection](https://fusionauth.io/docs/operate/secure/breached-password-detection.md) was being used it will no longer work, licensed features can no longer be enabled, and existing configurations may no longer work if they use licensed features.

### Request

[!Global API Key Authentication](https://fusionauth.io/docs/apis/authentication.md#global-api-key-authentication)

Deactivate Reactor license

DELETE/api/reactor

### Response

This API does not return a JSON response body.

*Response Codes*

| Code | Description |
| --- | --- |
| 200 | The request was successful. The response will be empty. |
| 400 | The request was invalid and/or malformed. The response will contain an [Errors](https://fusionauth.io/docs/apis/errors.md) JSON Object with the specific errors. This status will also be returned if a paid FusionAuth license is required and is not present. |
| 401 | You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See [Authentication](https://fusionauth.io/docs/apis/authentication.md). |
| 404 | The object you requested doesn't exist. The response will be empty. |
| 500 | There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty. |