Skip to main content
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": "<string>",
      "signature": {
        "r": "<string>",
        "s": "<string>"
      },
      "metadata": {
        "authenticatorData": "<string>",
        "challengeIndex": 123,
        "clientDataJSON": "<string>",
        "typeIndex": 123,
        "userVerificationRequired": true
      }
    }
  ]
}
'
{
  "id": "<string>",
  "params": {
    "message": "<string>",
    "signer": {
      "type": "external-wallet",
      "address": "<string>",
      "locator": "<string>"
    }
  },
  "approvals": {
    "pending": [
      {
        "signer": {
          "type": "external-wallet",
          "address": "<string>",
          "locator": "<string>"
        },
        "message": "<string>"
      }
    ],
    "submitted": [
      {
        "signature": "<string>",
        "submittedAt": 123,
        "signer": {
          "type": "external-wallet",
          "address": "<string>",
          "locator": "<string>"
        },
        "message": "<string>",
        "metadata": {
          "deviceInfo": "<string>",
          "ipAddress": "<string>",
          "userAgent": "<string>"
        }
      }
    ],
    "required": 123
  },
  "createdAt": 123,
  "completedAt": 123,
  "error": "<unknown>",
  "outputSignature": "<string>"
}

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>][: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>
signatureId
string
required

Body

application/json
approvals
(Passkey signature submission payload · object | External wallet signature submission payload · object | Server signer signature submission payload · object | Email signer signature submission payload · object | Phone signer signature submission payload · object | Device signer signature submission payload · object)[]
required

Array of approvals to submit for this transaction

Minimum array length: 1

Schema for WebAuthn signature data

Response

The signature has been successfully approved.

id
string
required

Unique identifier for the signature

type
enum<string>
required

The type of signature

Available options:
message,
typed-data,
auth-entries
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
Message signature parameters · object
required

Type-specific signature parameters

approvals
object
required

Complete approval data including requirements, pending and submitted signatures

createdAt
required

ISO timestamp when the signature was created

completedAt

ISO timestamp when the transaction reached finality

error
any

Error message if the signature fails

outputSignature
string

The wallet's output signature of the request