Safe Transaction Service API Reference


The Safe Transaction Service API Reference is a collection of endpoints that allow to keep track of Safe transactions.

This service is available on multiple networks, at different endpoints.

Contracts

List Contracts


Returns the list of known smart contracts with their ABI’s

Query Parameters

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
address - required
string

name - required
string

displayName - required
string

logoUri - required
string

contractAbi - required
abi - required
[]

description - required
string

relevance - required
integer

trustedForDelegateCall - required
boolean


Did this API route run successfully?
GET
/api/v1/contracts/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/contracts/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get Specific Contract


Returns the relevant information of a known smart contract

Responses

200 OK - object

application/json

Success
address - required
string

name - required
string

displayName - required
string

logoUri - required
string

contractAbi - required
abi - required
[]

description - required
string

relevance - required
integer

trustedForDelegateCall - required
boolean


Did this API route run successfully?
GET
/api/v1/contracts/{address}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/contracts/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Data-decoder

Get Decoded Data


Returns the decoded data using the Safe Transaction Service internal ABI information given the transaction data as a 0x prefixed hexadecimal string. If the address of the receiving contract is provided, the decoded data will be more accurate, as in case of an ABI collision the Safe Transaction Service would know which ABI to use.

Responses

200 Decoded data - object

application/json

Success
data - required
string

to
stringnull



code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
POST
/api/v1/data-decoder/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/data-decoder/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Delegates

List Delegates


Returns a list with all the delegates

Query Parameters

safe

delegate

delegator

label

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
safe - required
string

delegate - required
string

delegator - required
string

label - required
string

expiryDate - required
string



Did this API route run successfully?
GET
/api/v2/delegates/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v2/delegates/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Create Delegate


Adds a new Safe delegate with a custom label. Calls with same delegate but different label or signer will update the label or delegator if a different one is provided. To generate the signature, the following EIP712 data hash needs to be signed:

_23
{
_23
"types": {
_23
"EIP712Domain": [
_23
{"name": "name", "type": "string"},
_23
{"name": "version", "type": "string"},
_23
{"name": "chainId", "type": "uint256"},
_23
],
_23
"Delegate": [
_23
{"name": "delegateAddress", "type": "address"},
_23
{"name": "totp", "type": "uint256"},
_23
],
_23
},
_23
"primaryType": "Delegate",
_23
"domain": {
_23
"name": "Safe Transaction Service",
_23
"version": "1.0",
_23
"chainId": chain_id,
_23
},
_23
"message": {
_23
"delegateAddress": delegate_address,
_23
"totp": totp,
_23
},
_23
}


For the signature we use TOTP with T0=0 and Tx=3600. TOTP is calculated by taking the Unix UTC epoch time (no milliseconds) and dividing by 3600 (natural division, no decimals).

Responses



Did this API route run successfully?
POST
/api/v2/delegates/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v2/delegates/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Delete Delegate


Removes every delegate/delegator pair found associated with a given delegate address. The signature is built the same way as for adding a delegate, but in this case the signer can be either the delegator (owner) or the delegate itself. Check POST /delegates/ to learn more.

Responses





Did this API route run successfully?
DELETE
/api/v2/delegates/{delegate_address}/

Sample Request

Try it on Swagger

_10
curl -X DELETE https://safe-transaction-sepolia.safe.global/api/api/v2/delegates/0xe8A11B18DA0C02ce6304347D8E0DA66C50dEf739/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Messages

Get Message


Returns detailed information on a message associated with a given message hash

Responses

200 OK - object

application/json

Success
created - required
string

modified - required
string

safe - required
string

messageHash - required
string

message - required

proposedBy - required
string

safeAppId - required
integer

confirmations - required

Filters confirmations queryset :param obj: SafeMessage instance :return: Serialized queryset

preparedSignature - required
stringnull

Prepared signature sorted :param obj: SafeMessage instance :return: Serialized queryset

origin - required
string


Did this API route run successfully?
GET
/api/v1/messages/{message_hash}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/messages/0x3b3b57b3/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Sign Message


Adds the signature of a message given its message hash

Responses


Did this API route run successfully?
POST
/api/v1/messages/{message_hash}/signatures/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/messages/0x3b3b57b3/signatures/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Messages


Returns the list of messages for a given Safe account

Query Parameters

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
created - required
string

modified - required
string

safe - required
string

messageHash - required
string

message - required

proposedBy - required
string

safeAppId - required
integer

confirmations - required

Filters confirmations queryset :param obj: SafeMessage instance :return: Serialized queryset

preparedSignature - required
stringnull

Prepared signature sorted :param obj: SafeMessage instance :return: Serialized queryset

origin - required
string


Did this API route run successfully?
GET
/api/v1/safes/{address}/messages/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/messages/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Create Signed Message


Adds a new message for a given Safe account. Message can be:

- A string, so EIP191 will be used to get the hash.

- An EIP712 object.

Hash will be calculated from the provided message. Sending a raw hash will not be accepted, service needs to derive it itself.

Responses


Did this API route run successfully?
POST
/api/v1/safes/{address}/messages/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/messages/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Transactions

Get Module Transaction


Returns a transaction executed from a module given its associated module transaction ID

Responses

200 OK - object

application/json

Success
created - required
string

executionDate - required
string

blockNumber - required
integer

isSuccessful - required
boolean

transactionHash - required
string

safe - required
string

module - required
string

to - required
string

value - required
string

data - required
stringnull

operation - required
integer

* `0` - CALL * `1` - DELEGATE_CALL * `2` - CREATE

dataDecoded - required

moduleTransactionId - required
string

Internally calculated parameter to uniquely identify a moduleTransaction `ModuleTransactionId = i+tx_hash+trace_address`


code - required
integer

message - required
string

arguments - required
[]



Did this API route run successfully?
GET
/api/v1/module-transaction/{module_transaction_id}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/module-transaction/0x3b3b57b3 \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get Multisig Transaction


Returns a multi-signature transaction given its Safe transaction hash

Responses

200 OK - object

application/json

Success
safe - required
string

to - required
string

value - required
string

data
stringnull

operation - required
integer

gasToken
stringnull

safeTxGas - required
integer

baseGas - required
integer

gasPrice - required
string

refundReceiver
stringnull

nonce - required
integer

executionDate - required
string

submissionDate - required
string

modified - required
string

blockNumber - required
integernull

transactionHash - required
string

safeTxHash - required
string

proposer - required
string

proposedByDelegate - required
stringnull

executor - required
stringnull

isExecuted - required
boolean

isSuccessful - required
booleannull

ethGasPrice - required
stringnull

maxFeePerGas - required
stringnull

maxPriorityFeePerGas - required
stringnull

gasUsed - required
integernull

fee - required
integernull

origin - required
string

dataDecoded - required

confirmationsRequired - required
integer

confirmations - required

Filters confirmations queryset :param obj: MultisigConfirmation instance :return: Serialized queryset

trusted - required
boolean

signatures
stringnull


Did this API route run successfully?
GET
/api/v1/multisig-transactions/{safe_tx_hash}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/multisig-transactions/0xa059b4571d8e6cf551eea796f9d86a414083bdc3d5d5be88486589a7b6214be2/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Delete Queued Multisig Transaction


Removes the queued but not executed multi-signature transaction associated with the given Safe tansaction hash. Only the proposer or the delegate who proposed the transaction can delete it. If the transaction was proposed by a delegate, it must still be a valid delegate for the transaction proposer. An EOA is required to sign the following EIP-712 data:

_25
{
_25
"types": {
_25
"EIP712Domain": [
_25
{"name": "name", "type": "string"},
_25
{"name": "version", "type": "string"},
_25
{"name": "chainId", "type": "uint256"},
_25
{"name": "verifyingContract", "type": "address"},
_25
],
_25
"DeleteRequest": [
_25
{"name": "safeTxHash", "type": "bytes32"},
_25
{"name": "totp", "type": "uint256"},
_25
],
_25
},
_25
"primaryType": "DeleteRequest",
_25
"domain": {
_25
"name": "Safe Transaction Service",
_25
"version": "1.0",
_25
"chainId": chain_id,
_25
"verifyingContract": safe_address,
_25
},
_25
"message": {
_25
"safeTxHash": safe_tx_hash,
_25
"totp": totp,
_25
},
_25
}


totp parameter is calculated with T0=0 and Tx=3600. totp is calculated by taking the Unix UTC epoch time (no milliseconds) and dividing by 3600 (natural division, no decimals)

Responses




Did this API route run successfully?
DELETE
/api/v1/multisig-transactions/{safe_tx_hash}/

Sample Request

Try it on Swagger

_10
curl -X DELETE https://safe-transaction-sepolia.safe.global/api/api/v1/multisig-transactions/0xa059b4571d8e6cf551eea796f9d86a414083bdc3d5d5be88486589a7b6214be2/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Multisig Confirmations


Returns the list of confirmations for the multi-signature transaction associated with the given Safe transaction hash

Query Parameters

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

owner - required
string

submissionDate - required
string

transactionHash - required
string

signature - required
string

signatureType - required
string



Did this API route run successfully?
GET
/api/v1/multisig-transactions/{safe_tx_hash}/confirmations/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/multisig-transactions/0xa059b4571d8e6cf551eea796f9d86a414083bdc3d5d5be88486589a7b6214be2/confirmations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Confirm Multisig Transaction


Adds a new confirmation to the pending multi-signature transaction associated with the given Safe transaction hash. Multiple signatures can be submitted at once. This endpoint does not support the use of delegates to make transactions trusted.

Responses




Did this API route run successfully?
POST
/api/v1/multisig-transactions/{safe_tx_hash}/confirmations/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/multisig-transactions/0xa059b4571d8e6cf551eea796f9d86a414083bdc3d5d5be88486589a7b6214be2/confirmations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Transactions


Returns all the executed transactions for a given Safe address. The list has different structures depending on the transaction type:

- Multisig Transactions for a Safe. tx_type=MULTISIG_TRANSACTION.

- Module Transactions for a Safe. tx_type=MODULE_TRANSACTION

- Incoming Transfers of Ether/ERC20 Tokens/ERC721 Tokens. tx_type=ETHEREUM_TRANSACTION Ordering_fields: ["timestamp"] eg: -timestamp (default one) or timestamp

Note: This endpoint has a bug that will be fixed in next versions of the endpoint. Pagination is done using the Transaction Hash, and due to that the number of relevant transactions with the same Transaction Hash cannot be known beforehand. So if there are only 2 transactions with the same Transaction Hash, count of the endpoint will be 1 but there will be 2 transactions in the list.

Query Parameters

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 A list with every element with the structure of one of these transactiontypes - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
created - required
string

executionDate - required
string

blockNumber - required
integer

isSuccessful - required
boolean

transactionHash - required
string

safe - required
string

module - required
string

to - required
string

value - required
string

data - required
stringnull

operation - required
integer

* `0` - CALL * `1` - DELEGATE_CALL * `2` - CREATE

dataDecoded - required

moduleTransactionId - required
string

Internally calculated parameter to uniquely identify a moduleTransaction `ModuleTransactionId = i+tx_hash+trace_address`

transfers - required
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string

txType - required
string

safe - required
string

to - required
string

value - required
string

data
stringnull

operation - required
integer

gasToken
stringnull

safeTxGas - required
integer

baseGas - required
integer

gasPrice - required
string

refundReceiver
stringnull

nonce - required
integer

executionDate - required
string

submissionDate - required
string

modified - required
string

blockNumber - required
integernull

transactionHash - required
string

safeTxHash - required
string

proposer - required
string

proposedByDelegate - required
stringnull

executor - required
stringnull

isExecuted - required
boolean

isSuccessful - required
booleannull

ethGasPrice - required
stringnull

maxFeePerGas - required
stringnull

maxPriorityFeePerGas - required
stringnull

gasUsed - required
integernull

fee - required
integernull

origin - required
string

dataDecoded - required

confirmationsRequired - required
integer

confirmations - required

Filters confirmations queryset :param obj: MultisigConfirmation instance :return: Serialized queryset

trusted - required
boolean

signatures
stringnull

transfers - required
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string

txType - required
string

executionDate - required
string

to - required
stringnull

data - required
string

txHash - required
string

blockNumber - required
integernull

transfers - required
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string

txType - required
string

from - required
string


code - required
integer

message - required
string

arguments - required
[]


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/safes/{address}/all-transactions/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/all-transactions/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Incoming Transfers


Returns incoming ether/tokens transfers for a Safe. Only 1000 newest transfers will be returned.

Query Parameters

_from

block_number

block_number__gt

block_number__lt

execution_date__gte

execution_date__lte

execution_date__gt

execution_date__lt

to

token_address

transaction_hash

value

value__gt

value__lt

erc20

erc721

ether

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/safes/{address}/incoming-transfers/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/incoming-transfers/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List a Safe's Module Transactions


Returns all the transactions executed from modules given a Safe address

Query Parameters

safe

module

to

operation

* `0` - CALL * `1` - DELEGATE_CALL * `2` - CREATE

failed

block_number

block_number__gt

block_number__lt

transaction_hash

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
created - required
string

executionDate - required
string

blockNumber - required
integer

isSuccessful - required
boolean

transactionHash - required
string

safe - required
string

module - required
string

to - required
string

value - required
string

data - required
stringnull

operation - required
integer

* `0` - CALL * `1` - DELEGATE_CALL * `2` - CREATE

dataDecoded - required

moduleTransactionId - required
string

Internally calculated parameter to uniquely identify a moduleTransaction `ModuleTransactionId = i+tx_hash+trace_address`


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/safes/{address}/module-transactions/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/module-transactions/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List a Safe's Multisig Transactions


Returns all the multi-signature transactions for a given Safe address. By default, only trusted multisig transactions are returned.

Query Parameters

failed

modified__lt

modified__gt

modified__lte

modified__gte

nonce__lt

nonce__gt

nonce__lte

nonce__gte

nonce

safe_tx_hash

to

value__lt

value__gt

value

executed

has_confirmations

trusted

execution_date__gte

execution_date__lte

submission_date__gte

submission_date__lte

transaction_hash

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

safe - required
string

to - required
string

value - required
string

data
stringnull

operation - required
integer

gasToken
stringnull

safeTxGas - required
integer

baseGas - required
integer

gasPrice - required
string

refundReceiver
stringnull

nonce - required
integer

executionDate - required
string

submissionDate - required
string

modified - required
string

blockNumber - required
integernull

transactionHash - required
string

safeTxHash - required
string

proposer - required
string

proposedByDelegate - required
stringnull

executor - required
stringnull

isExecuted - required
boolean

isSuccessful - required
booleannull

ethGasPrice - required
stringnull

maxFeePerGas - required
stringnull

maxPriorityFeePerGas - required
stringnull

gasUsed - required
integernull

fee - required
integernull

origin - required
string

dataDecoded - required

confirmationsRequired - required
integer

confirmations - required

Filters confirmations queryset :param obj: MultisigConfirmation instance :return: Serialized queryset

trusted - required
boolean

signatures
stringnull



code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/safes/{address}/multisig-transactions/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/multisig-transactions/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Create Multisig Transaction


Creates a multi-signature transaction for a given Safe account with its confirmations and retrieves all the information related.

Responses

201 Created or signature updated - object

application/json

Success
safe - required
string

to - required
string

value - required
integer

data
stringnull

operation - required
integer

gasToken
stringnull

safeTxGas - required
integer

baseGas - required
integer

gasPrice - required
integer

refundReceiver
stringnull

nonce - required
integer

contractTransactionHash - required
string

sender - required
string

signature
stringnull

origin
stringnull



code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
POST
/api/v1/safes/{address}/multisig-transactions/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/multisig-transactions/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Estimate Gas Costs for a Multisig Transaction


Returns the estimated safeTxGas for a given Safe address and multi-signature transaction

Responses

200 OK - object

application/json

Success
safeTxGas - required
string




code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
POST
/api/v1/safes/{address}/multisig-transactions/estimations/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/multisig-transactions/estimations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Transfers


Returns the list of token transfers for a given Safe address. Only 1000 newest transfers will be returned.

Query Parameters

_from

block_number

block_number__gt

block_number__lt

execution_date__gte

execution_date__lte

execution_date__gt

execution_date__lt

to

token_address

transaction_hash

value

value__gt

value__lt

erc20

erc721

ether

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/safes/{address}/transfers/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/transfers/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get Transfer


Returns a token transfer associated with the given transfer ID

Responses

200 OK - object

application/json

Success
type - required
string

Sometimes ERC20/721 `Transfer` events look the same, if token info is available better use that information to check :param obj: :return: `TransferType` as a string

executionDate - required
string

blockNumber - required
integer

transactionHash - required
string

to - required
string

value - required
stringnull

tokenId - required
stringnull

tokenAddress
stringnull

transferId - required
string

Internally calculated parameter to uniquely identify a transfer Token transfers are calculated as `transferId = e+tx_hash+log_index` Ether transfers are calculated as `transferId = i+tx_hash+trace_address`

tokenInfo - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean

from - required
string




Did this API route run successfully?
GET
/api/v1/transfer/{transfer_id}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/transfer/3b3b57b3 \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Modules

List Safes that use a Specific Module


Returns the list of Safes that have the provided module enabled

Responses

200 OK - object

application/json

Success
safes - required
[]


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/modules/{address}/safes/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/modules/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/safes/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Owners

List Safes from a Specific Owner


Returns the list of Safe accounts that have the given address as their owner

Responses

200 OK - object

application/json

Success
safes - required
[]


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/owners/{address}/safes/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/owners/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/safes/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

4337

Get Safe Operation


Returns a SafeOperation given its Safe operation hash

Responses

200 OK - object

application/json

Success
created - required
string

modified - required
string

safeOperationHash - required
string

validAfter - required
string

validUntil - required
string

moduleAddress - required
string

confirmations - required

Filters confirmations queryset :param obj: SafeOperation instance :return: Serialized queryset

preparedSignature - required
string

userOperation - required


Did this API route run successfully?
GET
/api/v1/safe-operations/{safe_operation_hash}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safe-operations/0x597ba36c626a32a4fcc9f23a4b25605ee30b46584918d6b6442387161dc3c51b/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get the list of confirmations for a multisig transaction


Get the list of confirmations for a multisig transaction

Query Parameters

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

created - required
string

modified - required
string

owner - required
string

signature - required
string

signatureType - required
string



Did this API route run successfully?
GET
/api/v1/safe-operations/{safe_operation_hash}/confirmations/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safe-operations/0x597ba36c626a32a4fcc9f23a4b25605ee30b46584918d6b6442387161dc3c51b/confirmations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Add a confirmation for a transaction


Add a confirmation for a transaction. More than one signature can be used. This endpoint does not support the use of delegates to make a transaction trusted.

Responses




Did this API route run successfully?
POST
/api/v1/safe-operations/{safe_operation_hash}/confirmations/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/safe-operations/0x597ba36c626a32a4fcc9f23a4b25605ee30b46584918d6b6442387161dc3c51b/confirmations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Safe Operations


Returns the list of SafeOperations for a given Safe account

Query Parameters

modified__lt

modified__gt

modified__lte

modified__gte

valid_after__lt

valid_after__gt

valid_after__lte

valid_after__gte

valid_until__lt

valid_until__gt

valid_until__lte

valid_until__gte

module_address

executed

has_confirmations

execution_date__gte

execution_date__lte

submission_date__gte

submission_date__lte

transaction_hash

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

created - required
string

modified - required
string

safeOperationHash - required
string

validAfter - required
string

validUntil - required
string

moduleAddress - required
string

confirmations - required

Filters confirmations queryset :param obj: SafeOperation instance :return: Serialized queryset

preparedSignature - required
string

userOperation - required


Did this API route run successfully?
GET
/api/v1/safes/{address}/safe-operations/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/safe-operations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Create Safe Operation


Adds a new SafeOperation for a given Safe account

Responses


Did this API route run successfully?
POST
/api/v1/safes/{address}/safe-operations/

Sample Request

Try it on Swagger

_10
curl -X POST https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/safe-operations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \
_10
-d '{}'

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List User Operations


Returns the list of UserOperations for a given Safe account

Query Parameters

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

ethereumTxHash - required
string

sender - required
string

userOperationHash - required
string

nonce - required
integer

initCode - required
stringnull

callData - required
stringnull

callGasLimit - required
integer

verificationGasLimit - required
integer

preVerificationGas - required
integer

maxFeePerGas - required
integer

maxPriorityFeePerGas - required
integer

paymaster - required
stringnull

paymasterData - required
stringnull

signature - required
string

entryPoint - required
string

safeOperation - required


Did this API route run successfully?
GET
/api/v1/safes/{address}/user-operations/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/user-operations/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get User Operation


Returns a UserOperation given its user operation hash

Responses

200 OK - object

application/json

Success
ethereumTxHash - required
string

sender - required
string

userOperationHash - required
string

nonce - required
integer

initCode - required
stringnull

callData - required
stringnull

callGasLimit - required
integer

verificationGasLimit - required
integer

preVerificationGas - required
integer

maxFeePerGas - required
integer

maxPriorityFeePerGas - required
integer

paymaster - required
stringnull

paymasterData - required
stringnull

signature - required
string

entryPoint - required
string

safeOperation - required


Did this API route run successfully?
GET
/api/v1/user-operations/{user_operation_hash}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/user-operations/0xe6dac94a3cdbab8d807dfbe79ec378713403ff60cb1a1fff09696813d2705b8e/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Safes

Get Safe Status


Returns detailed information of a given Safe account

Responses

200 OK - object

application/json

Success
address - required
string

nonce - required
integer

threshold - required
integer

owners - required
[]

masterCopy - required
string

modules - required
[]

fallbackHandler - required
string

guard - required
string

version - required
stringnull




Did this API route run successfully?
GET
/api/v1/safes/{address}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List a Safe's Balances (Deprecated)


Get balance for Ether and ERC20 tokens of a given Safe account

Query Parameters

trusted

If `True` just trusted tokens will be returned

exclude_spam

If `True` spam tokens will not be returned

Responses

200 OK - array

application/json

Success
tokenAddress
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

balance
string




Did this API route run successfully?
GET
/api/v1/safes/{address}/balances/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/balances/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get Safe Creation Status


Returns detailed information on the Safe creation transaction of a given Safe.

Note: When event indexing is being used and multiple Safes are deployed in the same transaction the result might not be accurate due to the indexer not knowing which events belong to which Safe deployment.

Responses

200 OK - object

application/json

Success
created - required
string

creator - required
string

transactionHash - required
string

factoryAddress - required
string

masterCopy - required
stringnull

setupData - required
stringnull

saltNonce - required
stringnull

dataDecoded - required

userOperation - required





Did this API route run successfully?
GET
/api/v1/safes/{address}/creation/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/creation/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get Safe Balances


Get paginated balances for Ether and ERC20 tokens. The maximum limit allowed is 200.

Query Parameters

trusted

If `True` just trusted tokens will be returned

exclude_spam

If `True` spam tokens will not be returned

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
address - required
string

tokenName - required
string

tokenSymbol - required
string

logoUri - required
string

id - required
string

uri - required
string

name - required
string

description - required
string

imageUri - required
string

metadata - required



code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v2/safes/{address}/balances/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v2/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/balances/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

List Collectibles


Get paginated collectibles (ERC721 tokens) and information about them of a given Safe account. The maximum limit allowed is 10.

Query Parameters

trusted

If `True` just trusted tokens will be returned

exclude_spam

If `True` spam tokens will not be returned

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
address - required
string

tokenName - required
string

tokenSymbol - required
string

logoUri - required
string

id - required
string

uri - required
string

name - required
string

description - required
string

imageUri - required
string

metadata - required



code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v2/safes/{address}/collectibles/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v2/safes/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/collectibles/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Tokens

List Tokens


Returns the list of tokens supported in the Safe Transaction Service

Query Parameters

name

address

symbol

decimals__lt

decimals__gt

decimals

search

A search term.

ordering

Which field to use when ordering the results.

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean


Did this API route run successfully?
GET
/api/v1/tokens/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/tokens/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Get a Specific Token's Information


Returns detailed information on a given token supported in the Safe Transaction Service

Responses

200 OK - object

application/json

Success
type - required
string

address - required
string

name - required
string

symbol - required
string

decimals - required
integer

logoUri - required
string

trusted - required
boolean


code - required
integer

message - required
string

arguments - required
[]


Did this API route run successfully?
GET
/api/v1/tokens/{address}/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/tokens/0xcd2E72aEBe2A203b84f46DEEC948E6465dB51c75/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

/api/v1/tokens/lists/ - GET


Returns the list of tokens supported in the Safe Transaction Service

Query Parameters

limit

Number of results to return per page.

offset

The initial index from which to return the results.

Responses

200 OK - object

application/json

Success
count - required
integer

next
string

previous
string

results - required
url - required
string

description - required
string


Did this API route run successfully?
GET
/api/v1/tokens/lists/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v1/tokens/lists/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Analytics

/api/v2/analytics/multisig-transactions/by-origin/ - GET


undefined

Responses


Did this API route run successfully?
GET
/api/v2/analytics/multisig-transactions/by-origin/

Sample Request

Try it on Swagger

_10
curl -X GET https://safe-transaction-sepolia.safe.global/api/api/v2/analytics/multisig-transactions/by-origin/ \
_10
-H "Accept: application/json" \
_10
-H "content-type: application/json" \

This snippet shows a sample request on Ethereum Sepolia. Please click here to copy the base URL for Optimism and update it in your request.

Was this page helpful?