# SignMessage

After connecting to Backpack, an app can request that the user sign a message. Applications can create their own messages, which will be displayed to users from Backpack's signature prompt. Message signatures do not incur network fees and are a convenient way for apps to verify address ownership.

In order to send a message for the user to sign, an application must:

1. Provide a **hex** or **UTF-8** encoded string as a Uint8Array and then **base58-encoded it**.
2. Request that the encoded message is signed via the user's Backpack wallet.

For more information on how to verify the signature of a message, please refer to [Encryption Resources](/deeplinks/encryption.md#encryption-resources).

## Base URL

```
https://backpack.app/ul/v1/signMessage
```

## Query String Parameters

* `dapp_encryption_public_key` **(required)**: The original encryption public key used from the app side for an existing [Connect](/deeplinks/provider-methods/connect.md) session.
* `nonce` **(required)**: A nonce used for encrypting the request, encoded in base58.
* `redirect_link` **(required)**: The URI where Backpack should redirect the user upon completion. Please review [Specifying Redirects](/deeplinks/specifying-redirects.md) for more details. URL-encoded.
* `payload` **(required)**: An encrypted JSON string with the following fields:

  ```
  {
    "message": "...", // the message, base58 encoded
    "session": "...", // token received from connect-method
    "display": "utf8" | "hex", // the encoding to use when displaying the message 
  }
  ```

  * `message` **(required)**: The message that should be signed by the user, encoded in base58. Backpack will display this message to the user when they are prompted to sign.
  * `session` **(required)**: The session token received from the [Connect](/deeplinks/provider-methods/connect.md) method. Please see Handling Sessions for more details.
  * `display` **(optional)**: How you want us to display the string to the user. Defaults to `utf8`

## Returns

### Approve

* `nonce`: A nonce used for encrypting the response, encoded in base58.
* `data`: An encrypted JSON string. Refer to [Encryption](/deeplinks/encryption.md) to learn how apps can decrypt `data` using a shared secret. Encrypted bytes are encoded in base58.

  ```
  // content of decrypted `data`-parameter
  {
      signature: "...", // message-signature
  }
  ```

  * `signature`: The message signature, encoded in base58. For more information on how to verify the signature of a message, please refer to [Encryption Resources](/deeplinks/encryption.md#encryption-resources).

### Reject

An `errorCode` and `errorMessage` as query parameters.

Please refer to [Errors](/deeplinks/limitations.md#errors) for a full list of possible error codes.

```
{
  "errorCode": "...",
  "errorMessage": "..."
}
```


---

# 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.backpack.app/deeplinks/provider-methods/signmessage.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.
