curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions/{transactionId}/approvals \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"approvals": [
{
"signer": "external-wallet:0x1234...",
"signature": "0x1234567890abcdef..."
}
]
}'
{
"chainType": "evm",
"walletType": "smart",
"params": {
"calls": [
{
"address": "<string>",
"functionName": "<string>",
"abi": [
{
"type": "error",
"inputs": [
"<any>"
],
"name": "<string>"
}
],
"args": [
"<any>"
],
"value": "0"
}
],
"chain": "abstract",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
}
},
"onChain": {
"userOperation": {
"sender": "<string>",
"nonce": "<string>",
"callData": "<string>",
"callGasLimit": "<string>",
"verificationGasLimit": "<string>",
"preVerificationGas": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"paymaster": "<string>",
"paymasterVerificationGasLimit": "<string>",
"paymasterData": "<string>",
"paymasterPostOpGasLimit": "<string>",
"signature": "<string>",
"factory": "<string>",
"factoryData": "<string>"
},
"userOperationHash": "<string>",
"txId": "<string>",
"explorerLink": "<string>"
},
"id": "<string>",
"status": "awaiting-approval",
"approvals": {
"pending": [
{
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>"
}
],
"submitted": [
{
"signature": "<string>",
"submittedAt": "2024-01-01T00:00:00.000Z",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>",
"metadata": {
"deviceInfo": "<string>",
"ipAddress": "<string>",
"userAgent": "<string>"
}
}
],
"required": 123
},
"createdAt": "2024-01-01T00:00:00.000Z",
"completedAt": "2024-01-01T00:00:00.000Z",
"error": {
"reason": "build_failed",
"message": "<string>"
},
"sendParams": {
"token": "<string>",
"params": {
"amount": "<string>",
"recipient": "<string>",
"recipientAddress": "<string>"
}
}
}
Submit approval signature for a pending transaction. Required for transactions using external signers.
API scope required: wallets:transactions.sign
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions/{transactionId}/approvals \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <x-api-key>' \
--data '{
"approvals": [
{
"signer": "external-wallet:0x1234...",
"signature": "0x1234567890abcdef..."
}
]
}'
{
"chainType": "evm",
"walletType": "smart",
"params": {
"calls": [
{
"address": "<string>",
"functionName": "<string>",
"abi": [
{
"type": "error",
"inputs": [
"<any>"
],
"name": "<string>"
}
],
"args": [
"<any>"
],
"value": "0"
}
],
"chain": "abstract",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
}
},
"onChain": {
"userOperation": {
"sender": "<string>",
"nonce": "<string>",
"callData": "<string>",
"callGasLimit": "<string>",
"verificationGasLimit": "<string>",
"preVerificationGas": "<string>",
"maxFeePerGas": "<string>",
"maxPriorityFeePerGas": "<string>",
"paymaster": "<string>",
"paymasterVerificationGasLimit": "<string>",
"paymasterData": "<string>",
"paymasterPostOpGasLimit": "<string>",
"signature": "<string>",
"factory": "<string>",
"factoryData": "<string>"
},
"userOperationHash": "<string>",
"txId": "<string>",
"explorerLink": "<string>"
},
"id": "<string>",
"status": "awaiting-approval",
"approvals": {
"pending": [
{
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>"
}
],
"submitted": [
{
"signature": "<string>",
"submittedAt": "2024-01-01T00:00:00.000Z",
"signer": {
"type": "external-wallet",
"address": "<string>",
"locator": "<string>"
},
"message": "<string>",
"metadata": {
"deviceInfo": "<string>",
"ipAddress": "<string>",
"userAgent": "<string>"
}
}
],
"required": 123
},
"createdAt": "2024-01-01T00:00:00.000Z",
"completedAt": "2024-01-01T00:00:00.000Z",
"error": {
"reason": "build_failed",
"message": "<string>"
},
"sendParams": {
"token": "<string>",
"params": {
"amount": "<string>",
"recipient": "<string>",
"recipientAddress": "<string>"
}
}
}
API key required for authentication
A wallet locator can be of the format:
<walletAddress>
email:<email>:<chainType>[:<walletType>]
(walletType defaults to 'smart')userId:<userId>:<chainType>[:<walletType>]
(white label user example)phoneNumber:<phoneNumber>:<chainType>[:<walletType>]
twitter:<handle>:<chainType>[:<walletType>]
x:<handle>:<chainType>[:<walletType>]
me:<chainType>[:<walletType>]
(Use when calling from the client side with a client API key)Input for submitting one or more approvals
The approval has successfully been submitted to the transaction.
Complete transaction response including status, signing requirements, and wallet type specific data
Was this page helpful?