# userToMultiSigSigners - HyperCore Info Endpoint

Get the signer set of a HyperCore multi-sig account: the addresses authorized to sign for it and how many of them a valid action needs.

A multi-sig user is a HyperCore account controlled by several private keys. The live response is an object with `authorizedUsers` and `threshold`. A normal (single-key) account returns `null`.

Authenticate by including your Dwellir API key in the URL path: `https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info`.

## When to Use This Endpoint

Use `userToMultiSigSigners` for:

- **Account classification**: Tell a multi-sig account apart from a normal one before building a signing flow
- **Signer verification**: Check that a key you hold is in the authorized set
- **Quorum planning**: Read `threshold` to know how many signatures an action needs
- **Security auditing**: Detect signer or threshold changes over time

## Request Parameters

- `type` (`string, required`): parameter: Must be `"userToMultiSigSigners"`
- `user` (`string, required`): parameter: Address of the account to inspect

## Request Example

```bash
curl -X POST "https://api-hyperliquid-mainnet-info.n.dwellir.com/YOUR_API_KEY/info" \
  -H "content-type: application/json" \
  -d '{
  "type": "userToMultiSigSigners",
  "user": "0x94757f8dcb4bf73b850195660e959d1105cfedd5"
}'
```

## Response Fields

- `authorizedUsers` (`array, required`): Addresses authorized to sign for the multi-sig account
- `threshold` (`integer, required`): Number of authorized signatures an action needs

## Successful Response

```json
{
  "authorizedUsers": [
    "0x1b19c451ba9afba29865cd4202523629624bfecf",
    "0x2c96305c90215fbe76a100a69ec00099eb07a8fd",
    "0x52997cfadc2fb563285dd308b7ef319db79c27a9",
    "0xa928ab80a3a3f286a9a8fd998c895298b2bc3a3e",
    "0xae8e318a2c606928a8539f06f9f42f049255f5ee",
    "0xeee3abbe9fd8162bede5401bfa7f2c98216cbbe4"
  ],
  "threshold": 4
}
```

## Common Use Cases

### 1. Classify an Account

```javascript
async function isMultiSig(userAddress) {
  const signers = await getMultiSigSigners(userAddress);
  return signers !== null;
}

// Usage
console.log(await isMultiSig('0x94757f8dcb4bf73b850195660e959d1105cfedd5')); // true
```

### 2. Verify a Signer

```javascript
async function canSign(userAddress, signerAddress) {
  const signers = await getMultiSigSigners(userAddress);
  if (signers === null) {
    return false;
  }
  const wanted = signerAddress.toLowerCase();
  return signers.authorizedUsers.some((a) => a.toLowerCase() === wanted);
}
```

### 3. Watch for Signer Changes

```javascript
class MultiSigMonitor {
  constructor(userAddress) {
    this.userAddress = userAddress;
    this.last = null;
  }

  async check() {
    const current = await getMultiSigSigners(this.userAddress);
    const key = JSON.stringify(current);
    if (this.last !== null && key !== this.last) {
      console.log('Signer set or threshold changed:', current);
    }
    this.last = key;
    return current;
  }
}

// Usage
const monitor = new MultiSigMonitor('0x94757f8dcb4bf73b850195660e959d1105cfedd5');
setInterval(() => monitor.check(), 60000);
```

## Best Practices

1. **Handle `null`**: A normal account returns `null`, not an empty object
2. **Compare addresses case-insensitively**: Signer addresses are returned lowercase
3. **Cache briefly**: Signer sets change rarely; a cache of a few minutes is safe
4. **Combine with `userRole`**: Use [userRole](https://www.dwellir.com/docs/hyperliquid/user-role) to learn whether the account is a user, vault, or sub-account

## Related Endpoints

- [**userRole**](https://www.dwellir.com/docs/hyperliquid/user-role): Get user role information
- [**extraAgents**](https://www.dwellir.com/docs/hyperliquid/extra-agents): Get extra agent information
- [**subAccounts**](https://www.dwellir.com/docs/hyperliquid/sub-accounts): Get sub-account information
- [**clearinghouseState**](https://www.dwellir.com/docs/hyperliquid/clearinghouse-state): Get account state

***

*Inspect multi-sig accounts with Dwellir's HyperCore Info Endpoint. [Get your API key →](https://dashboard.dwellir.com/register)*
