---
title: "Create Signature"
method: POST
path: "/2025-06-09/wallets/{walletLocator}/signatures"
---

# Create Signature

`POST /2025-06-09/wallets/{walletLocator}/signatures`

Creates a new signature for signing messages or typed data.

**API scope required**: `wallets:signatures.create`

## Path parameters

- `walletLocator` string, required

## Headers

- `X-API-KEY` string, required
- `x-idempotency-key` string

## Request body

- union — Input schema for creating a new signature. The parameters vary based on the signature type.
  - object — Parameters for a message signature
    - `type` 'message', required
    - `params` object, required — Parameters for a message signature
      - `message` string, required — The message in plain text to sign
      - `signer` string — The locator for the signer who will submit this signature. Defaults to the wallet's admin signer.
      - `chain` 'arbitrum-sepolia' | 'arc-testnet' | 'avalanche-fuji' | 'curtis' | 'base-goerli' | 'base-sepolia' | 'bsc-testnet' | 'chiliz-spicy-testnet' | 'coti-testnet' | 'ethereum-goerli' | 'ethereum-sepolia' | 'hedera-testnet' | 'hypersonic-testnet' | 'lightlink-pegasus' | 'mantle-sepolia' | 'optimism-goerli' | 'optimism-sepolia' | 'polygon-amoy' | 'polygon-mumbai' | 'crossmint-private-testnet-ethereum' | 'crossmint-private-testnet-polygon' | 'rari-testnet' | 'scroll-sepolia' | 'sei-atlantic-2-testnet' | 'shape-sepolia' | 'skale-nebula-testnet' | 'soneium-minato-testnet' | 'space-testnet' | 'story-testnet' | 'verify-testnet' | 'viction-testnet' | 'xai-sepolia-testnet' | 'zkatana' | 'zkyoto' | 'zora-goerli' | 'zora-sepolia' | 'mode-sepolia' | 'u2u-nebulas' | 'zenchain-testnet' | 'abstract-testnet' | 'world-chain-sepolia' | 'plume-testnet' | 'flow-testnet' | 'tempo-testnet' | 'robinhood-chain-testnet' | 'ethereum' | 'polygon' | 'bsc' | 'optimism' | 'arbitrum' | 'base' | 'zora' | 'arbitrumnova' | 'astar-zkevm' | 'apechain' | 'hedera' | 'coti' | 'lightlink' | 'mantle' | 'skale-nebula' | 'sei-pacific-1' | 'chiliz' | 'avalanche' | 'xai' | 'shape' | 'rari' | 'scroll' | 'viction' | 'mode' | 'space' | 'soneium' | 'story' | 'u2u-solaris' | 'abstract' | 'world-chain' | 'plume' | 'flow' | 'tempo' | 'robinhood-chain' — The chain on which the signature will be submitted. Required for EVM wallets, optional for others.
  - object — Parameters for a typed data signature
    - `type` 'typed-data', required
    - `params` object, required — Parameters for a typed data signature
      - `typedData` object, required
        - `domain` object, required
          - `name` string, required
          - `version` string, required
          - `chainId` number, required
          - `verifyingContract` string, required — The recipient address for this transaction call
          - `salt` string — WebAuthn authenticator data as hex string
        - `types` object, required
        - `primaryType` string, required
        - `message` object, required
      - `chain` 'arbitrum-sepolia' | 'arc-testnet' | 'avalanche-fuji' | 'curtis' | 'base-goerli' | 'base-sepolia' | 'bsc-testnet' | 'chiliz-spicy-testnet' | 'coti-testnet' | 'ethereum-goerli' | 'ethereum-sepolia' | 'hedera-testnet' | 'hypersonic-testnet' | 'lightlink-pegasus' | 'mantle-sepolia' | 'optimism-goerli' | 'optimism-sepolia' | 'polygon-amoy' | 'polygon-mumbai' | 'crossmint-private-testnet-ethereum' | 'crossmint-private-testnet-polygon' | 'rari-testnet' | 'scroll-sepolia' | 'sei-atlantic-2-testnet' | 'shape-sepolia' | 'skale-nebula-testnet' | 'soneium-minato-testnet' | 'space-testnet' | 'story-testnet' | 'verify-testnet' | 'viction-testnet' | 'xai-sepolia-testnet' | 'zkatana' | 'zkyoto' | 'zora-goerli' | 'zora-sepolia' | 'mode-sepolia' | 'u2u-nebulas' | 'zenchain-testnet' | 'abstract-testnet' | 'world-chain-sepolia' | 'plume-testnet' | 'flow-testnet' | 'tempo-testnet' | 'robinhood-chain-testnet' | 'ethereum' | 'polygon' | 'bsc' | 'optimism' | 'arbitrum' | 'base' | 'zora' | 'arbitrumnova' | 'astar-zkevm' | 'apechain' | 'hedera' | 'coti' | 'lightlink' | 'mantle' | 'skale-nebula' | 'sei-pacific-1' | 'chiliz' | 'avalanche' | 'xai' | 'shape' | 'rari' | 'scroll' | 'viction' | 'mode' | 'space' | 'soneium' | 'story' | 'u2u-solaris' | 'abstract' | 'world-chain' | 'plume' | 'flow' | 'tempo' | 'robinhood-chain', required — The chain on which the signature will be submitted
      - `signer` string — The locator for the signer who will approve this signature
      - `isSmartWalletSignature` boolean — Whether the signature corresponds to the smart wallet or to the signer. If true, the signature will be wrapped with ERC6492.
  - object — Parameters for signing Stellar authorization entries (SEP-45)
    - `type` 'auth-entries', required
    - `params` object, required — Parameters for signing Stellar authorization entries (SEP-45)
      - `authorizationEntries` string, required — Base64-encoded XDR array of all authorization entries from the SEP-45 challenge (4-byte BE count prefix + concatenated entry XDR)
      - `signer` string — The locator for the signer who will approve this entry. Defaults to the wallet's admin signer.

## Response `201`

The signature has been successfully created.

- WalletsSignatureV2025ResponseDTO
  - `id` string, required — Unique identifier for the signature
  - `type` 'message' | 'typed-data' | 'auth-entries', required — The type of signature
  - `chainType` 'evm' | 'solana' | 'aptos' | 'sui' | 'stellar', required — The blockchain type of the wallet
  - `walletType` 'smart' | 'mpc', required — The wallet type (smart or mpc)
  - `status` 'awaiting-approval' | 'pending' | 'failed' | 'success', required — Current status of the signature
  - `params` union, required — Type-specific signature parameters
    - object — Parameters for a message signature
      - `message` string, required — The message in plain text to sign
      - `signer` union — The full signer object who will submit this signature. Defaults to the wallet's admin signer.
        - object — Full External Wallet signer object
          - `type` 'external-wallet', required
          - `address` string, required — The address of the external wallet
          - `locator` string, required — The locator of the external wallet signer
        - object — Full Passkey signer object
          - `type` 'passkey', required
          - `id` string, required — The ID of the passkey
          - `locator` string, required — The locator of the passkey signer
        - object — Full API Key signer object
          - `type` 'api-key', required
          - `address` string, required — The address of the api key
          - `locator` string, required — The locator of the api key signer
        - object — Full Device signer object
          - `type` 'device', required
          - `publicKey` object, required — The p256 public key of the device signer
            - `x` string, required
            - `y` string, required
          - `locator` string, required — The locator of the device signer
          - `name` string — Optional human-readable name for the device signer
        - object
          - `type` 'email', required
          - `email` string, email, required
          - `locator` string, required
        - object
          - `type` 'phone', required
          - `phone` string, required
          - `locator` string, required
        - object
          - `type` 'server', required
          - `address` string, required
          - `locator` string, required
      - `chain` 'arbitrum-sepolia' | 'arc-testnet' | 'avalanche-fuji' | 'curtis' | 'base-goerli' | 'base-sepolia' | 'bsc-testnet' | 'chiliz-spicy-testnet' | 'coti-testnet' | 'ethereum-goerli' | 'ethereum-sepolia' | 'hedera-testnet' | 'hypersonic-testnet' | 'lightlink-pegasus' | 'mantle-sepolia' | 'optimism-goerli' | 'optimism-sepolia' | 'polygon-amoy' | 'polygon-mumbai' | 'crossmint-private-testnet-ethereum' | 'crossmint-private-testnet-polygon' | 'rari-testnet' | 'scroll-sepolia' | 'sei-atlantic-2-testnet' | 'shape-sepolia' | 'skale-nebula-testnet' | 'soneium-minato-testnet' | 'space-testnet' | 'story-testnet' | 'verify-testnet' | 'viction-testnet' | 'xai-sepolia-testnet' | 'zkatana' | 'zkyoto' | 'zora-goerli' | 'zora-sepolia' | 'mode-sepolia' | 'u2u-nebulas' | 'zenchain-testnet' | 'abstract-testnet' | 'world-chain-sepolia' | 'plume-testnet' | 'flow-testnet' | 'tempo-testnet' | 'robinhood-chain-testnet' | 'ethereum' | 'polygon' | 'bsc' | 'optimism' | 'arbitrum' | 'base' | 'zora' | 'arbitrumnova' | 'astar-zkevm' | 'apechain' | 'hedera' | 'coti' | 'lightlink' | 'mantle' | 'skale-nebula' | 'sei-pacific-1' | 'chiliz' | 'avalanche' | 'xai' | 'shape' | 'rari' | 'scroll' | 'viction' | 'mode' | 'space' | 'soneium' | 'story' | 'u2u-solaris' | 'abstract' | 'world-chain' | 'plume' | 'flow' | 'tempo' | 'robinhood-chain' — The chain on which the signature will be submitted
    - object — Parameters for a typed data signature
      - `typedData` object, required
        - `domain` object, required
          - `name` string, required
          - `version` string, required
          - `chainId` number, required
          - `verifyingContract` string, required — An EVM address string
          - `salt` string — WebAuthn authenticator data as hex string
        - `types` object, required
        - `primaryType` string, required
        - `message` object, required
      - `chain` 'arbitrum-sepolia' | 'arc-testnet' | 'avalanche-fuji' | 'curtis' | 'base-goerli' | 'base-sepolia' | 'bsc-testnet' | 'chiliz-spicy-testnet' | 'coti-testnet' | 'ethereum-goerli' | 'ethereum-sepolia' | 'hedera-testnet' | 'hypersonic-testnet' | 'lightlink-pegasus' | 'mantle-sepolia' | 'optimism-goerli' | 'optimism-sepolia' | 'polygon-amoy' | 'polygon-mumbai' | 'crossmint-private-testnet-ethereum' | 'crossmint-private-testnet-polygon' | 'rari-testnet' | 'scroll-sepolia' | 'sei-atlantic-2-testnet' | 'shape-sepolia' | 'skale-nebula-testnet' | 'soneium-minato-testnet' | 'space-testnet' | 'story-testnet' | 'verify-testnet' | 'viction-testnet' | 'xai-sepolia-testnet' | 'zkatana' | 'zkyoto' | 'zora-goerli' | 'zora-sepolia' | 'mode-sepolia' | 'u2u-nebulas' | 'zenchain-testnet' | 'abstract-testnet' | 'world-chain-sepolia' | 'plume-testnet' | 'flow-testnet' | 'tempo-testnet' | 'robinhood-chain-testnet' | 'ethereum' | 'polygon' | 'bsc' | 'optimism' | 'arbitrum' | 'base' | 'zora' | 'arbitrumnova' | 'astar-zkevm' | 'apechain' | 'hedera' | 'coti' | 'lightlink' | 'mantle' | 'skale-nebula' | 'sei-pacific-1' | 'chiliz' | 'avalanche' | 'xai' | 'shape' | 'rari' | 'scroll' | 'viction' | 'mode' | 'space' | 'soneium' | 'story' | 'u2u-solaris' | 'abstract' | 'world-chain' | 'plume' | 'flow' | 'tempo' | 'robinhood-chain', required — The chain on which the signature will be submitted
      - `signer` union — The full signer object who will approve this signature
        - object — Full External Wallet signer object
          - `type` 'external-wallet', required
          - `address` string, required — The address of the external wallet
          - `locator` string, required — The locator of the external wallet signer
        - object — Full Passkey signer object
          - `type` 'passkey', required
          - `id` string, required — The ID of the passkey
          - `locator` string, required — The locator of the passkey signer
        - object — Full API Key signer object
          - `type` 'api-key', required
          - `address` string, required — The address of the api key
          - `locator` string, required — The locator of the api key signer
        - object — Full Device signer object
          - `type` 'device', required
          - `publicKey` object, required — The p256 public key of the device signer
            - `x` string, required
            - `y` string, required
          - `locator` string, required — The locator of the device signer
          - `name` string — Optional human-readable name for the device signer
        - object
          - `type` 'email', required
          - `email` string, email, required
          - `locator` string, required
        - object
          - `type` 'phone', required
          - `phone` string, required
          - `locator` string, required
        - object
          - `type` 'server', required
          - `address` string, required
          - `locator` string, required
      - `isSmartWalletSignature` boolean — Whether the signature corresponds to the smart wallet or to the signer. If true, the signature will be wrapped with ERC6492.
    - object — Parameters for Stellar authorization entries signature (SEP-45)
      - `authorizationEntries` string, required — Base64-encoded XDR array of the authorization entries
      - `signer` union — The full signer object who will approve this entry
        - object — Full External Wallet signer object
          - `type` 'external-wallet', required
          - `address` string, required — The address of the external wallet
          - `locator` string, required — The locator of the external wallet signer
        - object — Full Passkey signer object
          - `type` 'passkey', required
          - `id` string, required — The ID of the passkey
          - `locator` string, required — The locator of the passkey signer
        - object — Full API Key signer object
          - `type` 'api-key', required
          - `address` string, required — The address of the api key
          - `locator` string, required — The locator of the api key signer
        - object — Full Device signer object
          - `type` 'device', required
          - `publicKey` object, required — The p256 public key of the device signer
            - `x` string, required
            - `y` string, required
          - `locator` string, required — The locator of the device signer
          - `name` string — Optional human-readable name for the device signer
        - object
          - `type` 'email', required
          - `email` string, email, required
          - `locator` string, required
        - object
          - `type` 'phone', required
          - `phone` string, required
          - `locator` string, required
        - object
          - `type` 'server', required
          - `address` string, required
          - `locator` string, required
  - `approvals` object, required — Complete approval data including requirements, pending and submitted signatures
    - `pending` union[] — List of pending signatures
      - union
        - object — Approval entry for a quorum (multisig) admin signer
          - `signer` object, required — The quorum signer this approval entry belongs to
            - `type` 'quorum', required
            - `locator` string, required — The derived `quorum:<id>` locator of the quorum signer
          - `quorumApprovals` object, required — Per-member progress of an m-of-n quorum signer
            - `threshold` number, required — Number of member approvals required to satisfy the quorum
            - `remaining` number, required — Number of member approvals still outstanding to reach the threshold
            - `pending` object[], required — Quorum members that have not yet submitted
              - …
            - `submitted` object[], required — Quorum members that have already submitted
              - …
        - object
          - `signer` union, required — The full signer object who submitted this signature
            - object — Full External Wallet signer object
              - …
            - object — Full Passkey signer object
              - …
            - object — Full API Key signer object
              - …
            - object — Full Device signer object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `message` string, required — The message that needs to be signed
    - `submitted` union[] — Record of all submitted signatures
      - union
        - object — Approval entry for a quorum (multisig) admin signer
          - `signer` object, required — The quorum signer this approval entry belongs to
            - `type` 'quorum', required
            - `locator` string, required — The derived `quorum:<id>` locator of the quorum signer
          - `quorumApprovals` object, required — Per-member progress of an m-of-n quorum signer
            - `threshold` number, required — Number of member approvals required to satisfy the quorum
            - `remaining` number, required — Number of member approvals still outstanding to reach the threshold
            - `pending` object[], required — Quorum members that have not yet submitted
              - …
            - `submitted` object[], required — Quorum members that have already submitted
              - …
        - object
          - `signature` string, required — The cryptographic signature
          - `submittedAt` union, required — ISO timestamp when the signature was created
            - number — ISO 8601 formatted timestamp
            - string
          - `signer` union, required — The full signer object who submitted this signature
            - object — Full External Wallet signer object
              - …
            - object — Full Passkey signer object
              - …
            - object — Full API Key signer object
              - …
            - object — Full Device signer object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `message` string, required — The message that was signed
          - `metadata` object — Additional metadata about the signature submission
            - `deviceInfo` string
            - `ipAddress` string
            - `userAgent` string
    - `required` number — Number of required approvals for the transaction
  - `createdAt` union, required — ISO timestamp when the signature was created
    - number — ISO 8601 formatted timestamp
    - string
  - `completedAt` union — ISO timestamp when the transaction reached finality
    - number — ISO 8601 formatted timestamp
    - string
  - `error` unknown
  - `outputSignature` string — The wallet's output signature of the request

## Other responses

- `400` — Returns an error if the signature type is not supported
- `404` — Returns an error if a wallet with the specified locator not found

---

[API](https://skmtc.net/crossmint/apis/onramp.md) · [All operations](https://skmtc.net/crossmint/apis/onramp/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/crossmint/onramp/revisions/e2143d192130/schema)
