# Options

An options object can be passed to an authorize wallet request to set some of the parameters of the authorization flow. In the example above, we've sent the empty configuration, since all the parameters are optional. Options you can configure are all optional and listed below:

{% code lineNumbers="true" %}

```typescript
{
  wallet_address?: string;
  redirect_url?: string;
  arbitrary_data?: Map<string, unknown>;
  screen_config?: ScreenConfig;
  message_to_sign?: string;
  store_indefinitely?: boolean;
}
```

{% endcode %}

### wallet\_address

The wallet address, which the user must log in wit&#x68;**.** If the user connects with another address, the request will be rejected.&#x20;

If the value is not provided, the user can log in with any wallet address and continue processing the request.

Example value:

{% code lineNumbers="true" %}

```typescript
const options = {
    // ... rest of the options
    wallet_address: "0x4Ed918C7800F5dc34d2C774f6EA5fbd15f1a94a7"
}
```

{% endcode %}

### redirect\_url

If you want to take over the flow of how the user connects the wallet, you can specify the redirect URL here. Our system expects your redirect URL to contain the `${id}` component which is going to be interpolated to the real request ID. This ID is important because your  frontend must fetch the request state and also update the status of the request by specifying this ID value. To create your own frontend you'll have to integrate our API and refer to the[Broken mention](broken://spaces/sD6yfkE4OyF2DtffL8wJ).&#x20;

If the value is not provided, the **actionUrl** generated by the SDK will be automatically built to redirect the user to our wallet connection screen, and this is the recommended approach.

Example value:&#x20;

{% code lineNumbers="true" %}

```typescript
const options = {
    // ... rest of the options
    redirect_url: "https://your-frontend/wallet-connect/${id}"
}
```

{% endcode %}

### arbitrary\_data

Key-value mapping of any data you want to attach to the request. The data will simply be sent back to you upon the successful request completion. Depending on your use-case, you might want to add important info here, related to your existing application parameters.&#x20;

If the value is not provided, the empty data is sent with the request and received back when the request is processed.

Example value:&#x20;

{% code lineNumbers="true" %}

```typescript
const data = new Map<string, string>();
data['user-id'] = 'my internal user id';

const options = {
    // ... rest of the options
    arbitrary_data: data
}
```

{% endcode %}

### screen\_config

Configures the execution screen and sets the text labels your user will see when processing the request. By providing this value, you can communicate with the user more clearly what you're requesting from his side, and this will be shown to the users when you redirect them to the action URL generated by our SDK.

If the value is not provided, the default action messages will be shown when you redirect the user to our action execution screen.

{% code lineNumbers="true" %}

```typescript
const options = {
    // ... rest of the options
    screen_config: {
        before_action_message: "This message will be shown to your user before he executes the request.",
        after_action_message: "THis message will be shown to your user after he executes the action successfully."
    }
}
```

{% endcode %}

&#x20;You can put anything textual in these parameters, links, thank you messages or whatever else might be useful for your case.

### message\_to\_sign

You can provide your own message data to for user to sign in order to prove the ownership of the wallet. You should leave this empty if you want to authorize the user using our message signing process. We'll generate the message for you and check the signatures before letting you know the user is authorized.

### store\_indefinitely

Set this value to **true** if you want the request data to be destroyed once the request has been processed by the user.

If the value is not provided, the default value is **false** meaning you will always be able to fetch the request data and check the status, even after it was processed.

{% code lineNumbers="true" %}

```typescript
const options = {
    // ... rest of the options
    store_indefinitely: true
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dev3.sh/welcome-to-dev3/sdk/user-authentication/options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
