> ## Documentation Index
> Fetch the complete documentation index at: https://crossmint-wallets-docs-2-5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve Signature

> Submit approval for a signature to sign a message or typed data.

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



## OpenAPI

````yaml post /2022-06-09/wallets/{walletLocator}/signatures/{signatureId}/approvals
openapi: 3.0.0
info:
  title: Crossmint Wallets API
  description: Crossmint Wallets API
  version: 1.0.0
  contact:
    name: Crossmint Support
    url: https://www.crossmint.com
    email: support@crossmint.com
servers:
  - url: https://staging.crossmint.com/api
    description: Staging environment (testnets)
  - url: https://www.crossmint.com/api
    description: Production environment (mainnets)
security: []
tags: []
paths:
  /2022-06-09/wallets/{walletLocator}/signatures/{signatureId}/approvals:
    post:
      summary: Approve Signature
      description: |-
        Submit approval for a signature to sign a message or typed data.

        **API scope required**: `wallets:signatures.create`
      operationId: WalletsV1Controller-submitSignatureApprovals-4
      parameters:
        - name: X-API-KEY
          in: header
          description: API key required for authentication
          required: true
          schema:
            type: string
        - name: walletLocator
          required: true
          in: path
          description: |-
            A wallet locator can be of the format:
            - `<walletAddress>`
            - `email:<email>:<walletType>`
            - `userId:<userId>:<walletType>`
            - `userId:<userId>:<walletType>` (white label user example)
            - `phoneNumber:<phoneNumber>:<walletType>`
            - `twitter:<handle>:<walletType>`
            - `x:<handle>:<walletType>`
          example:
            - '0x1234567890123456789012345678901234567890'
            - email:user@example.com:evm-smart-wallet
            - userId:507f1f77bcf86cd799439011:solana-mpc-wallet
            - userId:did:example:cm4lr5piw0h6t1bjho0onryql:evm-smart-wallet
            - phoneNumber:+12125551234:evm-smart-wallet
            - twitter:johndoe:evm-smart-wallet
            - x:@johndoe:evm-smart-wallet
          schema:
            type: string
        - name: signatureId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitApprovalDTO'
      responses:
        '201':
          description: The signature has been successfully approved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletsV1Alpha2SignatureResponseDTO'
        '400':
          description: Returns an error if the signature is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletV1Alpha2ErrorDTO'
        '404':
          description: Returns an error if the wallet or signature not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletV1Alpha2ErrorDTO'
components:
  schemas:
    SubmitApprovalDTO:
      type: object
      properties:
        approvals:
          oneOf:
            - type: array
              items:
                oneOf:
                  - type: object
                    properties:
                      signer:
                        type: string
                        description: The locator for the EVM signer
                        example: evm-keypair:0x1234...
                      signature:
                        type: string
                        description: The EVM cryptographic signature
                        example: 0x4551567890abcdef...
                    required:
                      - signer
                      - signature
                    title: EVM keypair signature submission payload
                    description: An EVM signature submission for a transaction
                  - type: object
                    properties:
                      signer:
                        type: string
                        description: The locator for the EVM signer
                        example: evm-passkey:-y--aq1hqKC_ipuPHa-8aQ
                      signature:
                        type: object
                        properties:
                          r:
                            type: string
                            description: >-
                              R component of the signature as a stringified
                              bigint
                          s:
                            type: string
                            description: >-
                              S component of the signature as a stringified
                              bigint
                        required:
                          - r
                          - s
                        description: The signature components
                      metadata:
                        type: object
                        properties:
                          authenticatorData:
                            type: string
                            description: WebAuthn authenticator data as hex string
                          challengeIndex:
                            type: number
                            description: Index of the challenge used
                          clientDataJSON:
                            type: string
                            description: WebAuthn client data JSON string
                          typeIndex:
                            type: number
                            description: Index of the signature type
                          userVerificationRequired:
                            type: boolean
                            description: Whether user verification was required
                        required:
                          - authenticatorData
                          - challengeIndex
                          - clientDataJSON
                          - typeIndex
                          - userVerificationRequired
                        description: WebAuthn signature metadata
                    required:
                      - signer
                      - signature
                      - metadata
                    description: Schema for WebAuthn signature data
                    title: EVM passkey signature submission payload
              minItems: 1
              title: EVM signature submissions
            - type: array
              items:
                type: object
                properties:
                  signer:
                    type: string
                    description: The locator for the Solana signer
                    example: solana-keypair:BKw3w...
                  signature:
                    type: string
                    description: The Solana cryptographic signature
                    example: 5j3WJ6tQr4GwsVP...
                required:
                  - signer
                  - signature
                title: Solana signature submission
                description: A Solana signature submission for a transaction
              minItems: 1
              title: Solana signature submissions
          description: Array of approvals to submit for this transaction
      required:
        - approvals
      description: Input for submitting one or more approvals
      example:
        approvals:
          - signer: evm-keypair:0x1234...
            signature: 0x1234567890abcdef...
    WalletsV1Alpha2SignatureResponseDTO:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the signature
        type:
          type: string
          enum:
            - evm-message
            - solana-message
            - evm-typed-data
            - aptos-message
            - cardano-message
            - sui-message
          description: The type of signature
        status:
          type: string
          enum:
            - awaiting-approval
            - pending
            - failed
            - success
          description: Current status of the signature
        params:
          oneOf:
            - type: object
              properties:
                message:
                  type: string
                  description: The message in plain text to sign
                signer:
                  type: string
                  title: Signer Locator
                  description: >-
                    The locator for the signer who will submit this signature.
                    Defaults to the wallet's admin signer.
                  example:
                    - evm-keypair:0x1234567890123456789012345678901234567890
                    - evm-passkey:credential-id-123
                    - >-
                      evm-fireblocks-custodial:0x1234567890123456789012345678901234567890
                    - >-
                      solana-keypair:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                    - >-
                      solana-fireblocks-custodial:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                chain:
                  type: string
                  enum:
                    - arbitrum-sepolia
                    - avalanche-fuji
                    - curtis
                    - barret-testnet
                    - 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
                    - ethereum
                    - polygon
                    - bsc
                    - optimism
                    - arbitrum
                    - base
                    - zora
                    - arbitrumnova
                    - astar-zkevm
                    - apechain
                    - apex
                    - boss
                    - 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
                  description: The chain on which the signature will be submitted
              required:
                - message
                - chain
              description: Parameters for an EVM message signature
              title: EVM message signature parameters
            - type: object
              properties:
                message:
                  type: string
                  description: The message in plain text to sign
              required:
                - message
              description: Parameters for a Solana message signature
              title: Solana message signature parameters
            - type: object
              properties:
                typedData:
                  type: object
                  properties:
                    domain:
                      type: object
                      properties:
                        name:
                          type: string
                        version:
                          type: string
                        chainId:
                          type: number
                        verifyingContract:
                          type: string
                          description: An EVM address string
                        salt:
                          type: string
                      required:
                        - name
                        - version
                        - chainId
                        - verifyingContract
                    types:
                      type: object
                      additionalProperties:
                        type: array
                        items:
                          type: object
                          properties:
                            name:
                              type: string
                            type:
                              type: string
                          required:
                            - name
                            - type
                    primaryType:
                      type: string
                    message:
                      type: object
                      additionalProperties: {}
                  required:
                    - domain
                    - types
                    - primaryType
                    - message
                chain:
                  type: string
                  enum:
                    - arbitrum-sepolia
                    - avalanche-fuji
                    - curtis
                    - barret-testnet
                    - 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
                    - ethereum
                    - polygon
                    - bsc
                    - optimism
                    - arbitrum
                    - base
                    - zora
                    - arbitrumnova
                    - astar-zkevm
                    - apechain
                    - apex
                    - boss
                    - 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
                  description: The chain on which the signature will be submitted
                signer:
                  type: string
                  title: Signer Locator
                  description: The locator for the signer who will approve this signature
                  example:
                    - evm-keypair:0x1234567890123456789012345678901234567890
                    - evm-passkey:credential-id-123
                    - >-
                      evm-fireblocks-custodial:0x1234567890123456789012345678901234567890
                    - >-
                      solana-keypair:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                    - >-
                      solana-fireblocks-custodial:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                isSmartWalletSignature:
                  type: boolean
                  description: >-
                    Whether the signature corresponds to the smart wallet or to
                    the signer. If true, the signature will be wrapped with
                    ERC6492.
              required:
                - typedData
                - chain
              description: Parameters for an EVM typed data signature
              title: EVM typed data signature parameters
          description: Type-specific signature parameters
        approvals:
          type: object
          properties:
            pending:
              type: array
              items:
                type: object
                properties:
                  signer:
                    type: string
                    description: The locator of the signer that's pending approval
                  message:
                    type: string
                    description: The message that needs to be signed
                required:
                  - signer
                  - message
              description: List of pending signatures
            submitted:
              type: array
              items:
                type: object
                properties:
                  signature:
                    type: string
                    description: The cryptographic signature
                  submittedAt:
                    type: number
                    description: When the signature was submitted
                    example: '2024-01-01T00:00:00.000Z'
                  signer:
                    type: string
                    title: Signer Locator
                    description: The locator of the signer who submitted this signature
                    example:
                      - evm-keypair:0x1234567890123456789012345678901234567890
                      - evm-passkey:credential-id-123
                      - >-
                        evm-fireblocks-custodial:0x1234567890123456789012345678901234567890
                      - >-
                        solana-keypair:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                      - >-
                        solana-fireblocks-custodial:DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ
                  message:
                    type: string
                    description: The message that was signed
                  metadata:
                    type: object
                    properties:
                      deviceInfo:
                        type: string
                      ipAddress:
                        type: string
                      userAgent:
                        type: string
                    description: Additional metadata about the signature submission
                required:
                  - signature
                  - submittedAt
                  - signer
                  - message
              description: Record of all submitted signatures
            required:
              type: number
              description: Number of required approvals for the transaction
          required:
            - pending
            - submitted
          description: >-
            Complete approval data including requirements, pending and submitted
            signatures
        createdAt:
          type: number
          description: ISO timestamp when the signature was created
          example: '2024-01-01T00:00:00.000Z'
        completedAt:
          type: number
          description: ISO timestamp when the transaction reached finality
          example: '2024-01-01T00:00:00.000Z'
        error:
          description: Error message if the signature fails
        outputSignature:
          type: string
          description: The wallet's output signature of the request
      required:
        - id
        - type
        - status
        - params
        - createdAt
      description: >-
        Complete signature response including status, signing requirements, and
        wallet type specific data
      example:
        id: tx-b984491a-5785-43c0-8811-45d46fe6e520
        walletType: evm-smart-wallet
        type: evm-message
        status: awaiting-approval
        params:
          message: Hello, world!
          signer: evm-keypair:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E
          chain: polygon
        approvals:
          pending:
            - signer: evm-keypair:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E
              message: Hello world!
          submitted: []
        createdAt: '2024-01-01T00:00:00Z'
    WalletV1Alpha2ErrorDTO:
      type: object
      properties:
        error:
          type: boolean
          enum:
            - true
        message:
          type: string
          description: Error message
          example: <error message>
      required:
        - error
        - message
      description: Wallet error

````