---
title: "My wallets' multisig posture"
method: GET
path: "/me/wallets/multisig"
tags: ["wallets"]
---

# My wallets' multisig posture

`GET /me/wallets/multisig`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/me/wallets/multisig`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `X-API-Key`

## Response `200`

OK

- InternalDeliveryHttpHandlerWalletMultisigListResponse
  - `count` integer
  - `data` InternalDeliveryHttpHandlerWalletMultisigView[]
    - `additional_signers` InternalDeliveryHttpHandlerWalletSignerView[]: AdditionalSigners are the wallet's non-owner signers (live from the provider).
      - `override_policy_ids` string[]
      - `signer_id` string
    - `address` string
    - `authorization_keys` integer
    - `kind` string: Kind is "smart" or "embedded".
    - `needs_owner_migration` boolean: NeedsOwnerMigration is true when the one-time user-authorized owner change still has to happen for this wallet.
    - `owner_quorum_id` string
    - `requires_both_signatures` boolean: RequiresBothSignatures is the field a UI must render "protected" from, and requires_server_cosign is NOT a substitute for it. The latter is also true of an app-only quorum (the server signs alone — full custody) and of a quorum whose app keys already meet the threshold, both of which would display as "we co-sign your transactions" while meaning the opposite. This field is true only when neither the user alone nor the server alone can sign.
    - `requires_server_cosign` boolean: RequiresServerCosign is the question that matters: true means the user's session alone can no longer sign, so the server must co-sign. It needs BOTH an app key in the quorum AND threshold >= 2 — an app key at threshold 1 lets the server sign but leaves the user able to sign alone too, which is capability without enforcement.
    - `resolved` boolean: Resolved is false when the posture could not be read from the provider; the fields above are then unknown rather than "not required".
    - `server_signer_present` boolean: ServerSignerPresent is true when the tenant's configured server signer is on the wallet with the configured override policy; false if none is configured.
    - `signer_address` string
    - `signer_wallet_id` string: SignerWalletID is the Privy wallet id whose owner quorum governs this wallet — the id an owner change must be addressed to. For a smart wallet this is the embedded EOA beneath it, since a smart wallet has no Privy wallet id and no quorum of its own.
    - `threshold` integer: Threshold is how many quorum members must sign; AuthorizationKeys counts the app-held keys among them.
    - `user_is_member` boolean
  - `success` boolean

## Other responses

- `401`: Unauthorized
- `409`: Conflict
- `500`: Internal Server Error

---

[API](https://skmtc.dev/instruxi/apis/enforcer-api.md) · [All operations](https://skmtc.dev/instruxi/apis/enforcer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/instruxi/apis/enforcer-api/revisions/fa82bc1becc0?raw)
