curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"params": {
"calls": [
{
"abi": [
{
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"args": [
"0x9fda6b2c3e4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
"1000000"
],
"functionName": "transfer"
}
],
"chain": "base-sepolia"
}
}
'{
"chainType": "aptos",
"createdAt": 123,
"id": "<string>",
"onChain": {
"call": {
"data": "<unknown>",
"to": "<string>"
},
"explorerLink": "<string>",
"txId": "<string>"
},
"params": {
"call": {
"abi": [
"<unknown>"
],
"address": "<string>",
"args": [
"<unknown>"
],
"functionName": "<string>"
},
"chain": "abstract"
},
"status": "awaiting-approval",
"walletType": "mpc",
"approvals": {
"pending": [
{
"quorumApprovals": {
"pending": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>"
}
],
"remaining": 123,
"submitted": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>",
"signature": "<string>",
"submittedAt": 123
}
],
"threshold": 123
},
"signer": {
"locator": "<string>",
"type": "quorum"
}
}
],
"submitted": [
{
"quorumApprovals": {
"pending": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>"
}
],
"remaining": 123,
"submitted": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>",
"signature": "<string>",
"submittedAt": 123
}
],
"threshold": 123
},
"signer": {
"locator": "<string>",
"type": "quorum"
}
}
],
"required": 123
},
"completedAt": 123,
"error": {
"message": "<string>",
"reason": "program_error",
"logs": "<unknown>",
"revertData": {}
},
"fees": {
"mode": "project",
"actual": "<unknown>",
"billed": {
"usd": 123
},
"billing": {
"status": "failed"
},
"estimate": "<unknown>"
},
"sendParams": {
"params": {
"recipient": "<string>",
"recipientAddress": "<string>",
"amount": "<string>"
},
"token": "<string>"
}
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}{
"error": {
"message": "<string>",
"reason": "program_error",
"logs": "<unknown>",
"revertData": {}
},
"message": "<string>"
}Create Transaction
Creates a new transaction for the specified wallet. Transaction will be automatically broadcast once it has all necessary approvals.
API scope required: wallets:transactions.create
curl --request POST \
--url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"params": {
"calls": [
{
"abi": [
{
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"args": [
"0x9fda6b2c3e4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f",
"1000000"
],
"functionName": "transfer"
}
],
"chain": "base-sepolia"
}
}
'{
"chainType": "aptos",
"createdAt": 123,
"id": "<string>",
"onChain": {
"call": {
"data": "<unknown>",
"to": "<string>"
},
"explorerLink": "<string>",
"txId": "<string>"
},
"params": {
"call": {
"abi": [
"<unknown>"
],
"address": "<string>",
"args": [
"<unknown>"
],
"functionName": "<string>"
},
"chain": "abstract"
},
"status": "awaiting-approval",
"walletType": "mpc",
"approvals": {
"pending": [
{
"quorumApprovals": {
"pending": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>"
}
],
"remaining": 123,
"submitted": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>",
"signature": "<string>",
"submittedAt": 123
}
],
"threshold": 123
},
"signer": {
"locator": "<string>",
"type": "quorum"
}
}
],
"submitted": [
{
"quorumApprovals": {
"pending": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>"
}
],
"remaining": 123,
"submitted": [
{
"member": {
"address": "<string>",
"locator": "<string>",
"type": "api-key"
},
"message": "<string>",
"signature": "<string>",
"submittedAt": 123
}
],
"threshold": 123
},
"signer": {
"locator": "<string>",
"type": "quorum"
}
}
],
"required": 123
},
"completedAt": 123,
"error": {
"message": "<string>",
"reason": "program_error",
"logs": "<unknown>",
"revertData": {}
},
"fees": {
"mode": "project",
"actual": "<unknown>",
"billed": {
"usd": 123
},
"billing": {
"status": "failed"
},
"estimate": "<unknown>"
},
"sendParams": {
"params": {
"recipient": "<string>",
"recipientAddress": "<string>",
"amount": "<string>"
},
"token": "<string>"
}
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}{
"error": true,
"message": "<error message>",
"code": "DEVICE_SIGNER_NOT_SUPPORTED"
}{
"error": {
"message": "<string>",
"reason": "program_error",
"logs": "<unknown>",
"revertData": {}
},
"message": "<string>"
}Headers
Unique string, such as a UUID, that identifies this request. It is not the transaction ID. To retry the request, send it again with the same key. If a transaction already exists for this key in the project, the API returns that transaction in its current status and ignores the new request body. Keys do not expire and are not returned in responses. See Transfer Tokens for details.
Path Parameters
A wallet locator can be of the format:
<walletAddress>email:<email>:<chainType>[:<walletType>][:alias:<alias>](walletType defaults to 'smart')userId:<userId>:<chainType>[:<walletType>][:alias:<alias>](white label user example)phoneNumber:<phoneNumber>:<chainType>[:<walletType>][:alias:<alias>]twitter:<handle>:<chainType>[:<walletType>][:alias:<alias>]x:<handle>:<chainType>[:<walletType>][:alias:<alias>]me:<chainType>[:<walletType>][:alias:<alias>](Use when calling from the client side with a client API key)chainType[:<walletType>]:alias:<alias>
Body
- Solana MPC Wallet
- Solana Smart Wallet
- Stellar Smart Wallet
- EVM MPC Wallet
- EVM Smart Wallet
Input schema for creating a new transaction. The parameters vary based on the wallet type (EVM vs Solana vs Stellar).
Response
The transaction has been successfully created.
- EVM MPC Wallet
- EVM Smart Wallet
- Stellar Smart Wallet
- Solana Smart Wallet
- Solana MPC Wallet
Complete transaction response including status, signing requirements, and wallet type specific data
Was this page helpful?

