Skip to main content

Multisig

⚠️ Validado on-chain (com ressalvas de modelo)
Suite adv-write — add-owner validado on-chain (connect). swap/remove/threshold operam via modelo Safe-tx (assinaturas de owners), não UserOp único do Kernel.

Gerada automaticamente do spec OpenAPI da API (fonte de verdade). 17 endpoint(s).

List multisigs

GET /v1/multisigs

List tenant multisig wallets

Auth: api-key

Query params:

ParamTipoObrigatório
networkstringnão
statusstringnão

Respostas: 200, 401


Deploy multisig

POST /v1/multisigs

Deploy a Safe{Wallet} multisig via UrblockMultisig factory

Auth: api-key

Request body:

CampoTipoObrigatórioDescrição
namestringsimMultisig wallet name
ownersstring[]simOwner addresses
thresholdnumbersimNumber of confirmations required
networkstringsimTarget network
idempotency_keystringnãoIdempotency key
safe_singleton_addressstringnãoSafe singleton (Safe.sol) address. Falls back to SAFE_SINGLETON_ADDRESS env var.
safe_proxy_factory_addressstringnãoSafeProxyFactory address. Falls back to SAFE_PROXY_FACTORY_ADDRESS env var.

Respostas: 201, 400, 401


Get multisig

GET /v1/multisigs/{id}

Get multisig details with on-chain data

Auth: api-key

Path params: id

Respostas: 200, 401, 404


Add multisig owner

POST /v1/multisigs/{id}/owners

Add owner via addOwnerWithThreshold + execTransaction

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
ownerstringsimNew owner address
thresholdnumbernãoNew threshold (defaults to current)
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 201, 400, 401


Check owner

GET /v1/multisigs/{id}/owners/{address}

Check if an address is a Safe owner on-chain

Auth: api-key

Path params: id, address

Respostas: 200, 401, 404


Remove multisig owner

DELETE /v1/multisigs/{id}/owners/{address}

Remove owner via removeOwner + execTransaction

Auth: api-key

Path params: id, address

Request body:

CampoTipoObrigatórioDescrição
prev_ownerstringsimPrevious owner in linked list (for Safe removeOwner)
thresholdnumbernãoNew threshold (defaults to current)
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 200, 400, 401


Swap multisig owner

POST /v1/multisigs/{id}/owners/swap

Atomically replace an existing owner with a new one via swapOwner + execTransaction

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
prev_ownerstringsimPrevious owner in linked list (for Safe swapOwner)
old_ownerstringsimOld owner to be replaced
new_ownerstringsimNew owner to replace old_owner
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 200, 201, 400


Swap owner (PUT legacy)

PUT /v1/multisigs/{id}/owners/swap

Use POST.

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
prev_ownerstringsimPrevious owner in linked list (for Safe swapOwner)
old_ownerstringsimOld owner to be replaced
new_ownerstringsimNew owner to replace old_owner
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 200


Predict Safe address

GET /v1/multisigs/{id}/predict_address

Predict the counterfactual address for a Safe deployment with given owners/threshold/salt

Auth: api-key

Path params: id

Query params:

ParamTipoObrigatório
ownersstringsim
thresholdnumbersim
salt_noncenumbersim

Respostas: 200, 400


Change threshold

POST /v1/multisigs/{id}/threshold

Change Safe threshold via changeThreshold + execTransaction

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
thresholdnumbersimNew threshold value
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 200, 201, 400, 401


Change threshold (PUT legacy)

PUT /v1/multisigs/{id}/threshold

Use POST. Change Safe threshold.

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
thresholdnumbersimNew threshold value
signaturesstringsimConcatenated owner signatures (hex)
idempotency_keystringnãoIdempotency key

Respostas: 200


List multisig txs

GET /v1/multisigs/{id}/transactions

List multisig transactions

Auth: api-key

Path params: id

Respostas: 200, 401, 404


Submit multisig tx

POST /v1/multisigs/{id}/transactions

Submit transaction for multisig approval

Auth: api-key

Path params: id

Request body:

CampoTipoObrigatórioDescrição
tostringsimDestination address
valuestringnãoETH value in wei
datastringnãoCalldata hex
idempotency_keystringnãoIdempotency key

Respostas: 201, 400, 401, 404


Get transaction

GET /v1/multisigs/{id}/transactions/{txIndex}

Read transaction details from local DB

Auth: api-key

Path params: id, txIndex

Respostas: 200, 401, 404


Confirm multisig tx

POST /v1/multisigs/{id}/transactions/{txIndex}/confirm

Approve a Safe tx hash (approveHash)

Auth: api-key

Path params: id, txIndex

Request body:

CampoTipoObrigatórioDescrição
signer_addressstringsimSigner address
idempotency_keystringnãoIdempotency key

Respostas: 201, 400, 401


Check confirmation

GET /v1/multisigs/{id}/transactions/{txIndex}/confirmations/{address}

Check if an address has approved a Safe tx hash on-chain

Auth: api-key

Path params: id, txIndex, address

Respostas: 200, 401, 404


Execute multisig tx

POST /v1/multisigs/{id}/transactions/{txIndex}/execute

Execute via execTransaction with collected signatures

Auth: api-key

Path params: id, txIndex

Request body:

CampoTipoObrigatórioDescrição
signaturesstringsimConcatenated signatures bytes (hex)
idempotency_keystringnãoIdempotency key

Respostas: 201, 400, 401