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

# CustomizedConsent

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/generaltranslationinc/Q_4pAdRoZm2wi1v5/docs/images/cdy7uua7fh8z/6cK6DkpOJYTjubOGu2vpID/80c03b32275a2c332fe3216df0eca5c7/Consent.png?fit=max&auto=format&n=Q_4pAdRoZm2wi1v5&q=85&s=2b3ee5165e9d6a9073155b8650a21205" alt="" width="363" height="634" data-path="docs/images/cdy7uua7fh8z/6cK6DkpOJYTjubOGu2vpID/80c03b32275a2c332fe3216df0eca5c7/Consent.png" />
</Frame>

CustomizedConsent

```typescript Example theme={null}
// How to use the CustomizedConsent screen SDK:
import CustomizedConsent from '@auth0/auth0-acul-js/customized-consent';

// Instantiate the manager for the customized consent screen
const consentManager = new CustomizedConsent();

// Accessing screen data
const clientName = consentManager.client.name;
const userEmail = consentManager.user.email;
const requestedScopes = consentManager.screen.scopes;
const authorizationDetails = consentManager.screen.authorizationDetails;

console.log(`${clientName} is requesting consent from ${userEmail}.`);
console.log("Requested Scopes:", requestedScopes);
console.log("Authorization Details:", authorizationDetails);

// Accessing transaction errors from a previous attempt
const transactionErrors = consentManager.transaction.errors;
if (transactionErrors && transactionErrors.length > 0) {
  transactionErrors.forEach(error => {
    console.error(`Error: ${error.message}`);
    // Display these errors to the user.
  });
}

// Example of handling consent acceptance
async function onAcceptConsent() {
  try {
    await consentManager.accept();
    // On success, Auth0 will typically redirect.
  } catch (e) {
    console.error('Failed to accept consent:', e);
  }
}

// Example of handling consent denial
async function onDenyConsent() {
  try {
    await consentManager.deny({ denial_reason: "user_declined" });
    // On success, Auth0 will typically redirect.
  } catch (e) {
    console.error('Failed to deny consent:', e);
  }
}
```

## Constructors

<ParamField body="CustomizedConsent" type="Constructor">
  Creates an instance of the `CustomizedConsent` screen manager.
  The constructor initializes the `BaseContext` and sets up the `screen` property
  with an instance of `ScreenOverride` tailored for the customized consent screen.

  #### Throws

  If the Universal Login Context is not available or if the
  current screen name in the context does not match `CustomizedConsent.screenIdentifier`.
</ParamField>

## Properties

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ScreenMembersOnCustomizedConsent">ScreenMembersOnCustomizedConsent</a></span>}>
  Holds the specific screen data and properties for the Customized Consent screen,
  processed by `ScreenOverride`. This includes `scopes` and `authorizationDetails`.
</ParamField>

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TransactionMembers">TransactionMembers</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UserMembers">UserMembers</a></span>} />

<ParamField body="screenIdentifier" type="string">
  The unique identifier for the Customized Consent screen.
  This static property is used by the SDK's `BaseContext` to ensure that the
  class is instantiated in the correct screen context.
</ParamField>

## Methods

<ParamField body="accept" type="Promise<void>">
  Submits the user's decision to accept (grant) the requested permissions and authorization details.
  This method prepares and posts form data to the `/u/customized-consent?state=<transaction_state>` endpoint
  with `action: "accept"`. The transaction state is automatically included in both the
  URL query parameter and the form body.

  A promise that resolves once the form submission is initiated.
  Typically, a successful submission leads to a server-side redirect.

  #### Throws

  Throws an error if `FormHandler` encounters an unrecoverable issue
  during submission (e.g., network error). Server-side validation errors
  from Auth0 (like "invalid\_request") are not thrown as JavaScript errors
  but are made available in `this.transaction.errors` after the operation.

  <Expandable title="Parameters">
    <ParamField body="payload?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/CustomOptions">CustomOptions</a></span>}>
      Optional. An object for any custom key-value pairs
      to be sent with the request. These parameters will be
      included in the form data submitted to the server.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="deny" type="Promise<void>">
  Submits the user's decision to deny (reject) the requested permissions and authorization details.
  This method prepares and posts form data to the `/u/customized-consent?state=<transaction_state>` endpoint
  with `action: "deny"`. The transaction state is automatically included in both the
  URL query parameter and the form body.

  A promise that resolves once the form submission is initiated.
  A successful submission usually results in a server-side redirect.

  #### Throws

  Throws an error if `FormHandler` encounters an issue (e.g., network error).
  Server-side validation errors are reflected in `this.transaction.errors`.

  <Expandable title="Parameters">
    <ParamField body="payload?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/CustomOptions">CustomOptions</a></span>}>
      Optional. An object for any custom key-value pairs
      to be sent with the request. These parameters will be
      included in the form data submitted to the server.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  Retrieves the array of transaction errors from the context, or an empty array if none exist.

  An array of error objects from the transaction context.
</ParamField>
