POST
/
2025-06-09
/
wallets
/
{walletLocator}
/
transactions
Create Transaction
curl --request POST \
  --url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/transactions \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <x-api-key>' \
  --data '{
  "params": {
    "transaction": "<string>",
    "requiredSigners": [
      [
        "passkey:cWtP7gmZbd98HbKUuGXx5Q",
        "api-key:123456789",
        "external-wallet:0x1234567890123456789012345678901234567890",
        "email:test@example.com",
        "phone:+1234567890"
      ]
    ],
    "signer": [
      "passkey:cWtP7gmZbd98HbKUuGXx5Q",
      "api-key:123456789",
      "external-wallet:0x1234567890123456789012345678901234567890",
      "email:test@example.com",
      "phone:+1234567890"
    ]
  }
}'
{
  "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>"
    }
  }
}

Headers

X-API-KEY
string
required

API key required for authentication

x-idempotency-key
string

Unique key to prevent duplicate transaction creation

Path Parameters

walletLocator
string
required

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)

Body

application/json

Input schema for creating a new transaction. The parameters vary based on the wallet type (EVM vs Solana vs Stellar). Parameters for a transaction from a Solana Smart Wallet

Response

201
application/json

The transaction has been successfully created.

Complete transaction response including status, signing requirements, and wallet type specific data