POST
/
2025-06-09
/
wallets
/
{walletLocator}
/
signatures
/
{signatureId}
/
approvals
Approve Signature
curl --request POST \
  --url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/signatures/{signatureId}/approvals \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <x-api-key>' \
  --data '{
  "approvals": [
    {
      "signer": "external-wallet:0x1234...",
      "signature": "0x1234567890abcdef..."
    }
  ]
}'
{
  "id": "sig-b984491a-5785-43c0-8811-45d46fe6e520",
  "type": "message",
  "chainType": "evm",
  "walletType": "smart",
  "status": "awaiting-approval",
  "params": {
    "message": "Hello, world!",
    "signer": {
      "type": "external-wallet",
      "address": "0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E",
      "locator": "external-wallet:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E"
    },
    "chain": "polygon"
  },
  "approvals": {
    "pending": [
      {
        "signer": {
          "type": "external-wallet",
          "address": "0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E",
          "locator": "external-wallet:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E"
        },
        "message": "Hello world!"
      }
    ],
    "submitted": []
  },
  "createdAt": "2024-01-01T00:00:00Z"
}

Headers

X-API-KEY
string
required

API key required for authentication

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)
signatureId
string
required

Body

application/json

Input for submitting one or more approvals

approvals
(Passkey signature submission payload · object | External wallet signature submission payload · object | Email signer signature submission payload · object | Phone signer signature submission payload · object)[]
required

Array of approvals to submit for this transaction

Minimum length: 1

Response

The signature has been successfully approved.

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

id
string
required

Unique identifier for the signature

type
enum<string>
required

The type of signature

Available options:
message,
typed-data
chainType
enum<string>
required

The blockchain type of the wallet

Available options:
evm,
solana,
aptos,
sui,
stellar
walletType
enum<string>
required

The wallet type (smart or mpc)

Available options:
smart,
mpc
status
enum<string>
required

Current status of the signature

Available options:
awaiting-approval,
pending,
failed,
success
params
object
required

Type-specific signature parameters Parameters for a message signature

createdAt
required

ISO timestamp when the signature was created ISO 8601 formatted timestamp

Example:

"2024-01-01T00:00:00.000Z"

approvals
object

Complete approval data including requirements, pending and submitted signatures

completedAt

ISO timestamp when the transaction reached finality ISO 8601 formatted timestamp

Example:

"2024-01-01T00:00:00.000Z"

error
any

Error message if the signature fails

outputSignature
string

The wallet's output signature of the request