Notus API
User operations

Create Custom User Operation

Enables you to create custom user operations with full control over transaction parameters. User Operations are the transaction format used in Account Abstraction, they are blockchain transactions executed through smart wallets. This endpoint allows you to execute any smart contract function, transfer native tokens, or perform complex operations by defining your own method signatures, call data, and more.

POST
/api/v1/crypto/custom-user-operation
x-api-key<token>

In: header

chainIdnumber

Chain where the operation is to be started. Supported EVM chains:

  • Arbitrum One: 42161
  • Avalanche: 43114
  • Base: 8453
  • BNB Smart Chain: 56
  • Ethereum: 1
  • Gnosis: 100
  • OP Mainnet: 10
  • Polygon: 137{
operationsarray<object>

List of operations to execute, the order here is the order of execution.

metadata?object

Empty Object

payGasFeeToken?string

Token that will be used to cover gas fees. This is required, the optional is only to support the deprecated field.

Match^0x[a-fA-F0-9]{40}$
payGasFeeTokenAddress?stringDeprecated

DEPRECATED: use payGasFeeToken instead.

Match^0x[a-fA-F0-9]{40}$
walletAddressstring

Smart wallet that will be executing these operations

Match^0x[a-fA-F0-9]{40}$

Response Body

curl -X POST "https://api.notus.team/api/v1/crypto/custom-user-operation" \  -H "Content-Type: application/json" \  -d '{    "chainId": 42161,    "operations": [      {        "address": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6",        "value": "10000000000000000000"      }    ],    "walletAddress": "0x6e397ddf51d9f15dbe0414538e7529f51f2e5464"  }'
{
  "userOperation": {
    "metadata": {
      "key": "value"
    },
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "userOperationHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "authorization": {
      "chainId": 42161,
      "address": "0xd6cedde84be40893d153be9d467cd6ad37875b28",
      "nonce": 10,
      "hash": "0x777811ae5d51875409b9978ddc1b40a9da1bbe9570040bdd7c5f186d70ceceba"
    },
    "chainIn": {
      "id": 137,
      "name": "POLYGON",
      "logo": "https://logopolygon.com"
    },
    "chainOut": {
      "id": 137,
      "name": "POLYGON",
      "logo": "https://logopolygon.com"
    },
    "chainIdIn": 1,
    "chainIdOut": 137,
    "sender": {
      "walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
      "accountAbstraction": "0x1234567890abcdef1234567890abcdef12345678",
      "externallyOwnedAccount": "0x1234567890abcdef1234567890abcdef12345678"
    },
    "nonce": "1",
    "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "callGasLimit": "100000",
    "verificationGasLimit": "50000",
    "preVerificationGas": "21000",
    "maxFeePerGas": "20000000000",
    "maxPriorityFeePerGas": "1500000000",
    "maxGasFeeNative": "0.01",
    "maxGasFeeToken": "0.5",
    "payFeesToken": "0xabcdef1234567890abcdef1234567890abcdef12",
    "factory": {
      "data": "0x1234567890abcdef",
      "address": "0x1234567890abcdef1234567890abcdef12345678",
      "entryPointVersion": "v0.6"
    },
    "paymaster": "0xabcdef1234567890abcdef1234567890abcdef12",
    "paymasterData": "0x1234567890abcdef1234567890abcdef",
    "paymasterPostOpGasLimit": "30000",
    "paymasterVerificationGasLimit": "40000",
    "expiresAt": "2023-12-31T23:59:59.999Z",
    "projectId": "123e4567-e89b-12d3-a456-426614174000",
    "organizationId": "123e4567-e89b-12d3-a456-426614174000"
  }
}