Multisig thresholds
Update and validate the approval threshold for a DALP smart wallet that uses weighted multisig signing.
Smart wallet thresholds define how much signer weight must approve a multisig operation before the wallet executes it. Use the threshold API to change that value on an existing smart wallet with an installed weighted multisig validator. For co-signer participation on pending operations, see Smart wallet approvals.
Requires: advanced accounts enabled for the deployment.
The threshold is a weighted approval value, not a signer count. A smart wallet
with signer weights of 3, 2, and 1 can use threshold 4, which means the
signer with weight 3 must approve with at least one other signer before the wallet executes the operation.
Prerequisites
Before sending the update:
- Use credentials for the wallet owner. Co-signers approve pending operations through the multisig approval flow.
- Confirm the smart wallet has an installed weighted multisig validator.
- Read the wallet's signer configuration with
GET /api/v2/smart-wallets/{address}/signers. - Choose a threshold that can be met by the configured signer weights.
Request validation accepts threshold only when it is a decimal string from 1
through 18446744073709551615 (2^64-1). If you send a threshold that cannot be reached by
the configured signer weights, the wallet operation rejects it rather than
initial request validation, so track the transaction result before you retry.
Quickstart
Submit the update with a wallet-owner credential:
curl -X PUT https://your-platform.example.com/api/v2/smart-wallets/0x1234567890AbcdEF1234567890aBcdef12345678/threshold \
-H "X-Api-Key: YOUR_DALP_API_KEY" \
-H "Content-Type: application/json" \
-H "Prefer: respond-async" \
-d '{
"threshold": "4"
}'The endpoint submits an asynchronous blockchain mutation. Treat the response as the start of an on-chain operation: persist the returned status information and poll the status URL when the response includes one. If confirmation times out, check transaction status before retrying the same threshold update.
Co-signers do not call this endpoint directly. They approve pending multisig operations through the multisig approval flow. See Smart wallet approvals for how co-signers participate.
Endpoint reference
The threshold endpoint sets the multisig approval threshold for a smart wallet. It targets only wallets with an installed weighted multisig validator. Choose the new threshold before calling this endpoint: a value that exceeds the total configured signer weight passes initial validation but fails when the account-abstraction operation executes on-chain.
PUT /api/v2/smart-wallets/{address}/threshold
Path parameters
The address path parameter identifies the smart wallet to update. Use the wallet address returned when the wallet was provisioned or listed.
| Parameter | Type | Description |
|---|---|---|
address | Ethereum address | Smart wallet contract address |
Request body
The request body carries a single threshold field. Send a decimal string within the uint64 range and within the total weight of your configured signers. Read the current signer configuration with GET /api/v2/smart-wallets/{address}/signers before choosing a value.
| Field | Type | Required | Description |
|---|---|---|---|
threshold | string | Yes | Positive decimal integer string from 1 through 18446744073709551615. Choose a value that can be met by the configured signer weights. |
Authorisation
Only the wallet owner can call this endpoint. Co-signers use the multisig approval flow to approve operations that require their signature weight.
Response
Threshold updates use the blockchain mutation response shape. Depending on the request preference and execution timing, the API returns one of these responses:
| Shape | Fields | Use it for |
|---|---|---|
| Accepted for asynchronous processing | transactionId, status, statusUrl | Persist the transaction ID and poll statusUrl until the operation reaches a terminal state. |
| Completed mutation | data, meta.txHashes, links | Persist the updated wallet data and transaction hashes. The same transaction hashes are also emitted through X-Transaction-Hash response headers. |
When you send Prefer: respond-async, the response includes a
Preference-Applied header for the accepted preference.
Behaviour
- The endpoint targets smart wallets with an installed weighted multisig validator.
- The platform submits the threshold change as an account-abstraction operation against the wallet's multisig validator.
- Synchronous request validation checks the smart wallet address, positive
decimal-string format, and
uint64bounds. - The owner-only check runs before the blockchain mutation is submitted.
- A threshold that exceeds available signer weight is not a valid multisig configuration. Track that failure through the transaction status instead of expecting pre-submission rejection.
Error codes
When a threshold update fails a route-level check, the API returns a stable DALP-NNNN error code. A malformed request body, such as a threshold outside the 1 through 18446744073709551615 range or a non-decimal string, is rejected earlier by request validation with a generic bad-request response, not one of the codes below (see Request body). Once the request shape is valid, the platform resolves the wallet, confirms the caller is the owner, and checks that a weighted multisig validator is installed before it submits the on-chain operation. These rejections arrive as a typed error rather than an on-chain revert. Read the code to decide whether the caller corrects the request and resends, retries the same call once the platform catches up, or escalates to operator follow-up. Each code below maps to a canonical entry in the platform API error reference.
| Code | HTTP | Category | When it happens |
|---|---|---|---|
| DALP-0208 | 404 | client | The platform cannot find a smart wallet at the supplied address within the caller's organization and chain scope. The wallet may not be indexed yet, or the address may belong to a different organization. |
| DALP-0198 | 403 | permission | The caller is a co-signer, not the wallet owner. Only the owner changes the threshold directly. Co-signers participate through the multisig approval flow instead. |
| DALP-0176 | 500 | operational | The wallet has no installed weighted multisig validator, so it cannot hold a threshold. Configure a wallet with weighted multisig before changing this value. |
| DALP-0213 | 404 | client | The threshold transaction completed, but the platform could not read the updated wallet back yet because the indexer has not reflected the new state. The change was submitted; only the read-back is pending. |
DALP-0208, DALP-0198, and DALP-0176 are not retryable as sent: confirm the address and organization scope, switch to the owner credential, or use a wallet configured for weighted multisig, then resend. DALP-0213 is retryable because the threshold change was already submitted and only the read-back is behind, so retry the read after a short backoff while the indexer catches up rather than resubmitting the update. A request that passes every check here can still fail when the account-abstraction operation executes, most often when the threshold exceeds the total configured signer weight. That failure surfaces only through the transaction result, so track the transaction queue to a terminal state before you treat the new threshold as live.
Related operations
- Use
GET /api/v2/smart-wallets/{address}/signersto inspect signer weights before choosing a threshold. - Use
GET /api/v2/smart-wallets/{address}/approvalsto list pending multisig approvals for a wallet. - Use
POST /api/v2/smart-wallets/{address}/approvals/{userOpHash}/signwhen a co-signer needs to sign a pending approval.
Related
Multisig approvals API
Create, inspect, and sign weighted multisig approvals for smart wallet user operations that need more signer weight before submission.
Account native balance API
Read indexed native balances and history for accounts, plus the live custody wallet gas balance, in the active DALP system.