Skip to main content
POST
/
v2
/
embedded-wallet-api
/
end-users
/
{userId}
/
evm
/
smart-accounts
/
{address}
/
send
Send a user operation for end user Smart Account
curl --request POST \
  --url https://api.cdp.coinbase.com/platform/v2/embedded-wallet-api/end-users/{userId}/evm/smart-accounts/{address}/send \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "network": "base",
  "calls": [
    {
      "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "value": "0",
      "data": "0xa9059cbb000000000000000000000000fc807d1be4997e5c7b33e4d8d57e60c5b0f02b1a0000000000000000000000000000000000000000000000000000000000000064",
      "overrideGasLimit": "100000"
    }
  ],
  "useCdpPaymaster": true,
  "paymasterUrl": "https://api.developer.coinbase.com/rpc/v1/base/<token>",
  "walletSecretId": "e051beeb-7163-4527-a5b6-35e301529ff2",
  "dataSuffix": "0xdddddddd62617365617070070080218021802180218021802180218021"
}
'
{
  "network": "base",
  "userOpHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "calls": [
    {
      "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "value": "0",
      "data": "0xa9059cbb000000000000000000000000fc807d1be4997e5c7b33e4d8d57e60c5b0f02b1a0000000000000000000000000000000000000000000000000000000000000064"
    },
    {
      "to": "0xdac17f958d2ee523a2206206994597c13d831ec7",
      "value": "1000000000000000",
      "data": "0x"
    }
  ],
  "status": "pending",
  "transactionHash": "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
  "receipts": [
    {
      "revert": {
        "data": "0x123",
        "message": "reason for failure"
      },
      "blockHash": "0x386544b58930c0ec9e8f3ed09fb4cdb76b9ae0a1a37ddcacebe3925b57978e65",
      "blockNumber": 29338819,
      "gasUsed": "100000"
    }
  ]
}

Authorizations

Authorization
string
header
required

A JWT signed using the developer's own JWT private key (in the case of JWT authentication), or an end user JWT signed by CDP, encoded in base64. This is used for End User Account APIs.

Headers

X-Idempotency-Key
string

An optional string request header for making requests safely retryable. When included, duplicate requests with the same key will return identical responses. Refer to our Idempotency docs for more information on using idempotency keys.

Required string length: 1 - 128
X-Wallet-Auth
string

A JWT signed using your Wallet Secret, encoded in base64. Refer to the Generate Wallet Token section of our Authentication docs for more details on how to generate your Wallet Token.

X-Developer-Auth
string

A JWT signed using your Wallet Secret, encoded in base64. Refer to the Generate Wallet Token section of our Authentication docs for more details on how to generate your Wallet Token.

Path Parameters

userId
string
required

The ID of the end user.

Pattern: ^[a-zA-Z0-9-]{1,100}$
Example:

"e051beeb-7163-4527-a5b6-35e301529ff2"

address
string
required

The address of the EVM Smart Account to execute the user operation from.

Pattern: ^0x[0-9a-fA-F]{40}$

Query Parameters

projectID
string

The ID of the CDP Project. Required for end users authenticated using custom auth (i.e. a non-CDP JWT provider).

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
Example:

"8e03978e-40d5-43e8-bc93-6894a57f9324"

Body

application/json
network
enum<string>
required

The network the user operation is for.

Available options:
base-sepolia,
base,
arbitrum,
optimism,
zora,
polygon,
bnb,
avalanche,
ethereum,
ethereum-sepolia
Example:

"base"

calls
object[]
required

The list of calls to make from the Smart Account.

useCdpPaymaster
boolean
required

Whether to use the CDP Paymaster for the user operation.

Example:

true

paymasterUrl
string<uri>

The URL of the paymaster to use for the user operation. If using the CDP Paymaster, use the useCdpPaymaster option.

Required string length: 11 - 2048
Pattern: ^https?://.*$
Example:

"https://api.developer.coinbase.com/rpc/v1/base/<token>"

walletSecretId
string

Required when not using delegated signing. The ID of the Temporary Wallet Secret that was used to sign the X-Wallet-Auth Header.

Pattern: ^[a-zA-Z0-9-]{1,100}$
Example:

"e051beeb-7163-4527-a5b6-35e301529ff2"

dataSuffix
string

The EIP-8021 data suffix (hex-encoded) that enables transaction attribution for the user operation.

Pattern: ^0x[0-9a-fA-F]+$
Example:

"0xdddddddd62617365617070070080218021802180218021802180218021"

Response

The user operation was successfully prepared, signed, and sent.

network
enum<string>
required

The network the user operation is for.

Available options:
base-sepolia,
base,
arbitrum,
optimism,
zora,
polygon,
bnb,
avalanche,
ethereum,
ethereum-sepolia
Example:

"base"

userOpHash
string
required

The hash of the user operation. This is not the transaction hash, as a transaction consists of multiple user operations. The user operation hash is the hash of this particular user operation which gets signed by the owner of the Smart Account.

Pattern: ^0x[0-9a-fA-F]{64}$
Example:

"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"

calls
object[]
required

The list of calls in the user operation.

Example:
[
{
"to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"value": "0",
"data": "0xa9059cbb000000000000000000000000fc807d1be4997e5c7b33e4d8d57e60c5b0f02b1a0000000000000000000000000000000000000000000000000000000000000064"
},
{
"to": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"value": "1000000000000000",
"data": "0x"
}
]
status
enum<string>
required

The status of the user operation.

Available options:
pending,
signed,
broadcast,
complete,
dropped,
failed
Example:

"pending"

transactionHash
string

The hash of the transaction that included this particular user operation. This gets set after the user operation is broadcasted and the transaction is included in a block.

Pattern: ^0x[0-9a-fA-F]{64}$|^$
Example:

"0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"

receipts
object[]

The list of receipts associated with the user operation.

Example:
[
{
"revert": {
"data": "0x123",
"message": "reason for failure"
},
"blockHash": "0x386544b58930c0ec9e8f3ed09fb4cdb76b9ae0a1a37ddcacebe3925b57978e65",
"blockNumber": 29338819,
"gasUsed": "100000"
}
]