Skip to main content
POST
/
2025-06-09
/
wallets
/
{walletLocator}
/
signatures
Create Signature
curl --request POST \
  --url https://staging.crossmint.com/api/2025-06-09/wallets/{walletLocator}/signatures \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <x-api-key>' \
  --data '
{
  "type": "message",
  "params": {
    "message": "Hello, world!",
    "signer": "external-wallet:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E",
    "chain": "ethereum"
  }
}
'
{
  "id": "<string>",
  "params": {
    "message": "<string>",
    "signer": {
      "address": "<string>",
      "locator": "<string>"
    }
  },
  "approvals": {
    "pending": [
      {
        "signer": {
          "address": "<string>",
          "locator": "<string>"
        },
        "message": "<string>"
      }
    ],
    "submitted": [
      {
        "signature": "<string>",
        "submittedAt": 123,
        "signer": {
          "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

x-idempotency-key
string

Unique key to prevent duplicate signature creation

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>

Body

application/json

Input schema for creating a new signature. The parameters vary based on the signature type.

type
enum<string>
required
Available options:
message
params
object
required

Parameters for a message signature

Response

The signature has been successfully created.

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