userToMultiSigSigners - HyperCore Info Endpoint
Get the authorized signers and signature threshold of a Hyperliquid multi-sig account. Returns null for a normal account.
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
thresholdto know how many signatures an action needs - Security auditing: Detect signer or threshold changes over time
Common Use Cases
1. Classify an Account
async function isMultiSig(userAddress) {
const signers = await getMultiSigSigners(userAddress);
return signers !== null;
}
// Usage
console.log(await isMultiSig('0x94757f8dcb4bf73b850195660e959d1105cfedd5')); // true2. Verify a Signer
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
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
- Handle
null: A normal account returnsnull, not an empty object - Compare addresses case-insensitively: Signer addresses are returned lowercase
- Cache briefly: Signer sets change rarely; a cache of a few minutes is safe
- Combine with
userRole: Use userRole to learn whether the account is a user, vault, or sub-account
Related Endpoints
- userRole: Get user role information
- extraAgents: Get extra agent information
- subAccounts: Get sub-account information
- clearinghouseState: Get account state
Inspect multi-sig accounts with Dwellir's HyperCore Info Endpoint. Get your API key →