Skip to main content

Create Wallet Rule

POST /v1/wallets/{wallet_id}/rules

Creates a new rule for a wallet. The rule type determines which sub-rule fields are required.

Headers

HeaderRequiredValue
AuthorizationYesBearer <token>
Content-TypeYesapplication/json
X-Target-ServerYeswallet-rules

Path Parameters

ParameterTypeRequiredDescription
wallet_idstring (UUID)YesWallet ID

Request Body

FieldTypeRequiredValidationDescription
namestringYes--Rule name
typestringYesauto_transfer or permissionless_transfer_limitRule type
network_idstring (UUID)YesValid UUIDNetwork this rule applies to
network_currency_idstring (UUID)YesValid UUIDCurrency this rule applies to
priorityintegerNo1-100Rule priority
auto_transfer_ruleobjectNoRequired for auto_transfer typeAuto-transfer configuration
sign_and_approve_ruleobjectNo--Approval configuration
permissionless_transfer_limit_ruleobjectNoRequired for permissionless_transfer_limit typeTransfer limit configuration

Auto Transfer Rule Object

FieldTypeRequiredValidationDescription
typestringYesSee sub-typesAuto-transfer behavior type
rule_logicobjectYesSee RuleLogicCondition tree
amountnumberYesMust be > 0Amount to transfer when conditions are met
target_wallet_idstring (UUID)YesValid UUIDDestination wallet ID

Sign and Approve Rule Object

FieldTypeRequiredValidationDescription
mandatory_user_idstring (UUID)NoValid UUIDUser who must approve
min_priorityintegerNo1-100Minimum approver priority
max_priorityintegerNo1-100Maximum approver priority
min_user_countintegerNomin: 1Required number of approvals

Permissionless Transfer Limit Rule Object

FieldTypeRequiredValidationDescription
max_amountintegerYesMust be > 0Max transfer amount in time window
time_periodstringYeshour, day, week, month, yearTime period unit
time_period_valueintegerYesMust be > 0Number of time periods

Examples

Create an Auto-Transfer Rule

{
"name": "Low Balance Auto-Refill",
"type": "auto_transfer",
"network_id": "770e8400-e29b-41d4-a716-446655440000",
"network_currency_id": "880e8400-e29b-41d4-a716-446655440000",
"priority": 1,
"auto_transfer_rule": {
"type": "auto",
"rule_logic": {
"field": "target.balance",
"op": "<",
"value": 100,
"network_currency_id": "880e8400-e29b-41d4-a716-446655440000"
},
"amount": 500.0,
"target_wallet_id": "990e8400-e29b-41d4-a716-446655440001"
}
}

Create an Auto-Transfer with Approval Rule

{
"name": "Large Transfer with Approval",
"type": "auto_transfer",
"network_id": "770e8400-e29b-41d4-a716-446655440000",
"network_currency_id": "880e8400-e29b-41d4-a716-446655440000",
"priority": 2,
"auto_transfer_rule": {
"type": "auto_with_approve",
"rule_logic": {
"field": "target.balance",
"op": "<",
"value": 50,
"network_currency_id": "880e8400-e29b-41d4-a716-446655440000"
},
"amount": 1000.0,
"target_wallet_id": "990e8400-e29b-41d4-a716-446655440001"
},
"sign_and_approve_rule": {
"min_priority": 1,
"max_priority": 50,
"min_user_count": 2
}
}

Create a Permissionless Transfer Limit Rule

{
"name": "Daily Transfer Limit",
"type": "permissionless_transfer_limit",
"network_id": "770e8400-e29b-41d4-a716-446655440000",
"network_currency_id": "880e8400-e29b-41d4-a716-446655440000",
"permissionless_transfer_limit_rule": {
"max_amount": 10000,
"time_period": "day",
"time_period_value": 1
}
}

Response

201 Created

Rule created successfully. No response body.

400 Bad Request

401 Unauthorized

404 Not Found

Wallet not found.

500 Internal Server Error