---
title: "Get a challenge to link a new wallet"
method: POST
path: "/v1/account/wallets/challenge"
tags: ["account"]
---

# Get a challenge to link a new wallet

`POST /v1/account/wallets/challenge`

Request a challenge message to link a new wallet to your account.

**Flow:**
1. Call this endpoint with the wallet address you want to link
   and the network it belongs to
2. Sign the returned message with your wallet
3. Call `/account/wallets/verify` with the signature

The challenge expires after 5 minutes.

**Note:** The wallet must not already be linked to another account.
Account merging is not yet supported.

Authentication: `Authorization: Bearer <CLIENT_JWT>`

## Headers

- `authorization` string, nullable — Bearer JWT issued by Grove that identifies the account.

## Request body

- WalletLinkChallengeRequest — Request model for creating a wallet link challenge.
  - `address` string, required — Wallet address to link (EVM: 0x..., Solana: base58)
  - `network` string — Network for this wallet (base, base-sepolia, solana-devnet, etc.)

## Response `200`

Successful Response

- WalletLinkChallengeResponse — Response model for wallet link challenge.
  - `address` string, required — Wallet address being linked
  - `message` string, required — Message to sign with your wallet to prove ownership
  - `expires_at` string, required — When the challenge expires (ISO 8601). Sign before this time.

## Other responses

- `400` — Wallet already linked to this account
- `409` — Wallet already linked to another account
- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
