---
title: "Show or hide your pay address publicly; set your pay note"
method: POST
path: "/api/wallet/settings"
tags: ["wallet", "browser-session"]
---

# Show or hide your pay address publicly; set your pay note

`POST /api/wallet/settings`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/wallet/settings`
- Auth: API key in cookie `__session`

Clerk-session only, same-site, application/json. Turning public_visible ON requires a first-factor sign-in within the last 10 minutes and otherwise returns Clerk's reverification 403 (clerk_error.reason = reverification-error); turning it off or editing the note does not. Every visibility change is audited and pushed to the member's notification channels. The pay note is trimmed, stripped of control characters and capped at 80. There is no agent path: visibility is the member's own decision. 404 unless wallets are enabled.

## Request body

- WalletSettingsRequest
  - `public_visible` boolean: true needs a sign-in within the last 10 minutes.
  - `pay_note` string, nullable: null or empty clears it.

## Response `200`

Your wallet after the change.

- WalletSettingsResponse
  - `ok` boolean, required
  - `wallet` WalletView, required
    - `icm` string, required: The member's stable IC member id (icm_<uuidv7>), the wallet login subject.
    - `network` 'testnet' | 'mainnet', required: testnet = Base Sepolia + Solana Devnet.
    - `base` object, required
      - `address` string: The Base smart-account address.
      - `owner_address` string: The EOA that owns the smart account.
      - `account` string: CAIP-10, e.g. eip155:8453:0x...
    - `solana` object, required
      - `address` string
      - `account` string: CAIP-10.
    - `public_visible` boolean, required: Whether the pay address is on the member's public profile. Default false.
    - `pay_note` string, nullable: What the member takes payment for, up to 80 chars.
    - `profile_url` string, nullable: /m/<handle>, or null without a handle.
    - `created_at` string, date-time
  - `visibility_changed` boolean
  - `pay_note_changed` boolean

## Other responses

- `400`: Body not an object, wrong types, or nothing to change.
- `401`: Not signed in.
- `403`: Cross-site request, or reverification required to go public.
- `404`: Wallets not enabled, or you have no wallet yet.
- `415`: Content-Type is not application/json.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
