IBExWalletAPI
Blockchain OperationsAutomation

Update automation module configuration for a Safe

Update off-chain automation policy for a Safe.

Supports two transfer modes:

  • PERCENT_OF_RECEIVED: transfer a percentage of each received amount.
  • FIXED_AMOUNT: transfer a fixed amount each trigger.

You can additionally configure:

  • minIntervalMinutes: minimum delay between two automatic transfers.
  • rolling period cap via periodCapAmount + (periodCap or periodCapMinutes).

Validation rules:

  • percentage requires mode=PERCENT_OF_RECEIVED.
  • fixedAmount and maxWalletPercentage require mode=FIXED_AMOUNT.
  • Use either periodCap or periodCapMinutes, not both.
  • periodCap/periodCapMinutes require periodCapAmount.
PUT
/v1.2/safes/{safeAddress}/automation-module/config

Authorization

AuthorizationRequiredBearer <token>

In: header

Request Body

application/jsonOptional
targetAddressstring
modestring

Transfer mode

Value in: "PERCENT_OF_RECEIVED" | "FIXED_AMOUNT"
percentagenumber

Used only with mode=PERCENT_OF_RECEIVED

Minimum: 0Maximum: 100
fixedAmountstring | null

Used only with mode=FIXED_AMOUNT (human-readable token units, e.g. "10.5"). Use null to clear.

maxWalletPercentagenumber

Optional cap (wallet %) applied at transfer time when fixedAmount mode is used

Minimum: 0Maximum: 100
minIntervalMinutesnumber

Minimum delay between 2 automatic transfers (minutes)

Minimum: 0
periodCapAmountstring | null

Maximum cumulative amount per period (human-readable token units). Use null to clear period cap.

periodCapstring | null

Predefined period for periodCapAmount

Value in: "HOURLY" | "DAILY" | "WEEKLY" | "MONTHLY" | null
periodCapMinutesnumber | null

Custom period (minutes) for periodCapAmount. Mutually exclusive with periodCap.

Minimum: 1
frequencystring
Value in: "DAILY" | "WEEKLY" | "90_DAYS" | "NONE"
tokenAddressstring
enabledboolean

Path Parameters

safeAddressRequiredstring
curl -X PUT "https://passkeys-testnet.ibex.fi/v1.2/safes/<string>/automation-module/config" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "targetAddress": "string",
    "mode": "PERCENT_OF_RECEIVED",
    "percentage": 100,
    "fixedAmount": "string",
    "maxWalletPercentage": 100,
    "minIntervalMinutes": 0,
    "periodCapAmount": "string",
    "periodCap": "HOURLY",
    "periodCapMinutes": 1,
    "frequency": "DAILY",
    "tokenAddress": "string",
    "enabled": true
  }'

Default Response


Automation policy model (v2)

This endpoint supports a policy model with two transfer modes:

  • PERCENT_OF_RECEIVED: transfer a percentage of each received amount.
  • FIXED_AMOUNT: transfer a fixed amount each trigger.

Request fields

  • mode: PERCENT_OF_RECEIVED or FIXED_AMOUNT.
  • percentage: required only with mode=PERCENT_OF_RECEIVED.
  • fixedAmount: required only with mode=FIXED_AMOUNT.
  • maxWalletPercentage: optional wallet-balance cap (only in fixed mode).
  • minIntervalMinutes: optional minimum delay between two automatic transfers.
  • periodCapAmount: optional max cumulative transferred amount in a period.
  • periodCap: HOURLY | DAILY | WEEKLY | MONTHLY.
  • periodCapMinutes: custom period length in minutes (alternative to periodCap).

Validation rules

  • percentage can only be used with PERCENT_OF_RECEIVED.
  • fixedAmount and maxWalletPercentage can only be used with FIXED_AMOUNT.
  • Use either periodCap or periodCapMinutes, never both.
  • periodCap / periodCapMinutes require periodCapAmount.

Execution semantics

  • minIntervalMinutes is enforced before creating a new automated transfer.
  • If a period cap is configured, transfers are allowed only while periodCapSpent + nextAmount <= periodCapAmount in the active rolling window.
  • When policy changes affect period-cap settings, runtime counters are reset to avoid stale carry-over.

On this page