Simulates an EVM Account Abstraction UserOp and returns the expected outcome.
POST
/
sdk
/
{environmentId}
/
evm
/
simulateUserOp
Simulate an EVM AA UserOp
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"chainId": "An example name",
"operation": {},
"entryPoint": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"value": "An example name",
"domain": "An example name"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp"
payload = {
"chainId": "An example name",
"operation": {},
"entryPoint": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"value": "An example name",
"domain": "An example name"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chainId: 'An example name',
operation: {},
entryPoint: '0xbF394748301603f18d953C90F0b087CBEC0E1834',
value: 'An example name',
domain: 'An example name'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chainId' => 'An example name',
'operation' => [
],
'entryPoint' => '0xbF394748301603f18d953C90F0b087CBEC0E1834',
'value' => 'An example name',
'domain' => 'An example name'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp"
payload := strings.NewReader("{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}"
response = http.request(request)
puts response.read_body{
"inAssets": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"transferIn": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
],
"transferOut": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
]
}
],
"outAssets": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"transferIn": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
],
"transferOut": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
]
}
],
"priceData": {
"nativeTokenUsdPrice": 123
},
"showTotalFiat": true,
"counterparties": [
"0xbF394748301603f18d953C90F0b087CBEC0E1834"
],
"validation": {
"reason": "<string>",
"description": "<string>",
"classification": "<string>"
},
"assetExposures": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"spenderToInfo": {}
}
]
}{
"error": "<string>"
}{
"error": "Resources already exists for this Object",
"payload": {
"email": "joe@email.com",
"embeddedWalletName": "<string>",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"signInEnabled": true,
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chain": "<string>",
"refId": "95b11417-f18f-457f-8804-68e361f9164f",
"signerRefId": "95b11417-f18f-457f-8804-68e361f9164f",
"email": "jsmith@example.com",
"name_service": {
"avatar": "<string>",
"name": "<string>"
},
"public_identifier": "<string>",
"wallet_name": "<string>",
"wallet_properties": {
"turnkeySubOrganizationId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyPrivateKeyId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyHDWalletId": "95b11417-f18f-457f-8804-68e361f9164f",
"isAuthenticatorAttached": true,
"turnkeyUserId": "95b11417-f18f-457f-8804-68e361f9164f",
"isSessionKeyCompatible": true
},
"oauth_username": "<string>",
"oauth_display_name": "<string>",
"oauth_account_id": "<string>",
"phoneNumber": "9171113333",
"phoneCountryCode": "1",
"isoCountryCode": "US",
"oauth_account_photos": [
"<string>"
],
"oauth_emails": [
"<string>"
],
"oauth_metadata": {},
"previous_users": [
"95b11417-f18f-457f-8804-68e361f9164f"
],
"embedded_wallet_id": "<string>",
"wallet_additional_addresses": [
{
"address": "<string>",
"publicKey": "<string>"
}
],
"lastSelectedAt": "2023-11-07T05:31:56Z",
"verifiedAt": "2023-11-07T05:31:56Z"
}
],
"lastVerifiedCredentialId": "95b11417-f18f-457f-8804-68e361f9164f",
"sessionId": "95b11417-f18f-457f-8804-68e361f9164f",
"alias": "An example name",
"country": "US",
"email": "jsmith@example.com",
"firstName": "An example name",
"jobTitle": "An example name",
"lastName": "An example name",
"phoneNumber": "<string>",
"policiesConsent": true,
"tShirtSize": "An example name",
"team": "An example name",
"username": "An example name",
"firstVisit": "2023-11-07T05:31:56Z",
"lastVisit": "2023-11-07T05:31:56Z",
"newUser": true,
"metadata": {},
"btcWallet": "<string>",
"kdaWallet": "<string>",
"ltcWallet": "<string>",
"ckbWallet": "<string>",
"kasWallet": "<string>",
"dogeWallet": "<string>",
"emailNotification": true,
"discordNotification": true,
"newsletterNotification": true,
"lists": [
"<string>"
],
"scope": "superuser marketing operations",
"missingFields": [
{
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
},
"fromUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
},
"currentUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
}
}
]
},
"additionalMessages": [
"<string>"
]
}
}{
"error": "Internal Server Error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
ID of the environment
Required string length:
36Pattern:
^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Example:
"95b11417-f18f-457f-8804-68e361f9164f"
Body
application/json
Maximum string length:
255Pattern:
^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$Example:
"An example name"
Valid blockchain wallet address, must be an alphanumeric string without any special characters
Maximum string length:
255Pattern:
^[A-Za-z0-9]{18,100}$Example:
"0xbF394748301603f18d953C90F0b087CBEC0E1834"
Maximum string length:
255Pattern:
^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$Example:
"An example name"
Maximum string length:
255Pattern:
^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$Example:
"An example name"
Response
Simulated transaction result
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Valid blockchain wallet address, must be an alphanumeric string without any special characters
Maximum string length:
255Pattern:
^[A-Za-z0-9]{18,100}$Example:
"0xbF394748301603f18d953C90F0b087CBEC0E1834"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Last modified on January 21, 2026
Was this page helpful?
Previous
Sign in with an external auth provider tokenAuthenticates a user using a token from an external auth provider.
Next
⌘I
Simulate an EVM AA UserOp
curl --request POST \
--url https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"chainId": "An example name",
"operation": {},
"entryPoint": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"value": "An example name",
"domain": "An example name"
}
'import requests
url = "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp"
payload = {
"chainId": "An example name",
"operation": {},
"entryPoint": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"value": "An example name",
"domain": "An example name"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chainId: 'An example name',
operation: {},
entryPoint: '0xbF394748301603f18d953C90F0b087CBEC0E1834',
value: 'An example name',
domain: 'An example name'
})
};
fetch('https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chainId' => 'An example name',
'operation' => [
],
'entryPoint' => '0xbF394748301603f18d953C90F0b087CBEC0E1834',
'value' => 'An example name',
'domain' => 'An example name'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp"
payload := strings.NewReader("{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dynamicauth.com/api/v0/sdk/{environmentId}/evm/simulateUserOp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chainId\": \"An example name\",\n \"operation\": {},\n \"entryPoint\": \"0xbF394748301603f18d953C90F0b087CBEC0E1834\",\n \"value\": \"An example name\",\n \"domain\": \"An example name\"\n}"
response = http.request(request)
puts response.read_body{
"inAssets": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"transferIn": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
],
"transferOut": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
]
}
],
"outAssets": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"transferIn": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
],
"transferOut": [
{
"rawValue": "<string>",
"summary": "<string>",
"usdPrice": "<string>",
"value": "<string>"
}
]
}
],
"priceData": {
"nativeTokenUsdPrice": 123
},
"showTotalFiat": true,
"counterparties": [
"0xbF394748301603f18d953C90F0b087CBEC0E1834"
],
"validation": {
"reason": "<string>",
"description": "<string>",
"classification": "<string>"
},
"assetExposures": [
{
"asset": {
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chainName": "<string>",
"decimals": 123,
"logoUrl": "<string>",
"name": "<string>",
"symbol": "<string>",
"type": "<string>",
"chainId": 123
},
"spenderToInfo": {}
}
]
}{
"error": "<string>"
}{
"error": "Resources already exists for this Object",
"payload": {
"email": "joe@email.com",
"embeddedWalletName": "<string>",
"mergeConflicts": {
"fromUser": {
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"projectEnvironmentId": "95b11417-f18f-457f-8804-68e361f9164f",
"verifiedCredentials": [
{
"id": "95b11417-f18f-457f-8804-68e361f9164f",
"signInEnabled": true,
"address": "0xbF394748301603f18d953C90F0b087CBEC0E1834",
"chain": "<string>",
"refId": "95b11417-f18f-457f-8804-68e361f9164f",
"signerRefId": "95b11417-f18f-457f-8804-68e361f9164f",
"email": "jsmith@example.com",
"name_service": {
"avatar": "<string>",
"name": "<string>"
},
"public_identifier": "<string>",
"wallet_name": "<string>",
"wallet_properties": {
"turnkeySubOrganizationId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyPrivateKeyId": "95b11417-f18f-457f-8804-68e361f9164f",
"turnkeyHDWalletId": "95b11417-f18f-457f-8804-68e361f9164f",
"isAuthenticatorAttached": true,
"turnkeyUserId": "95b11417-f18f-457f-8804-68e361f9164f",
"isSessionKeyCompatible": true
},
"oauth_username": "<string>",
"oauth_display_name": "<string>",
"oauth_account_id": "<string>",
"phoneNumber": "9171113333",
"phoneCountryCode": "1",
"isoCountryCode": "US",
"oauth_account_photos": [
"<string>"
],
"oauth_emails": [
"<string>"
],
"oauth_metadata": {},
"previous_users": [
"95b11417-f18f-457f-8804-68e361f9164f"
],
"embedded_wallet_id": "<string>",
"wallet_additional_addresses": [
{
"address": "<string>",
"publicKey": "<string>"
}
],
"lastSelectedAt": "2023-11-07T05:31:56Z",
"verifiedAt": "2023-11-07T05:31:56Z"
}
],
"lastVerifiedCredentialId": "95b11417-f18f-457f-8804-68e361f9164f",
"sessionId": "95b11417-f18f-457f-8804-68e361f9164f",
"alias": "An example name",
"country": "US",
"email": "jsmith@example.com",
"firstName": "An example name",
"jobTitle": "An example name",
"lastName": "An example name",
"phoneNumber": "<string>",
"policiesConsent": true,
"tShirtSize": "An example name",
"team": "An example name",
"username": "An example name",
"firstVisit": "2023-11-07T05:31:56Z",
"lastVisit": "2023-11-07T05:31:56Z",
"newUser": true,
"metadata": {},
"btcWallet": "<string>",
"kdaWallet": "<string>",
"ltcWallet": "<string>",
"ckbWallet": "<string>",
"kasWallet": "<string>",
"dogeWallet": "<string>",
"emailNotification": true,
"discordNotification": true,
"newsletterNotification": true,
"lists": [
"<string>"
],
"scope": "superuser marketing operations",
"missingFields": [
{
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
}
]
},
"conflicts": [
{
"field": {
"name": "<string>",
"required": true,
"enabled": true,
"unique": true,
"verify": true,
"validationRules": {
"unique": true,
"regex": "^0x",
"validOptions": [
{
"label": "small"
},
{
"label": "medium"
},
{
"label": "large"
}
],
"checkboxText": "Agree to the terms and conditions"
},
"label": "<string>",
"position": 123
},
"fromUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
},
"currentUser": {
"userId": "95b11417-f18f-457f-8804-68e361f9164f",
"value": "An example name"
}
}
]
},
"additionalMessages": [
"<string>"
]
}
}{
"error": "Internal Server Error"
}