> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streambird.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Siwe Wallet Registration

> Verifies the signature created by the wallet's private key signing a SIWE challenge using the [SIWE EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) (Sign in with Ethereum) spec using the `nonce` returned by `GetWalletRegistrationNonce` and the wallet address used during registration. If successful, a wallet will be created and associated with the user. Wallet imported will be marked as `is_imported` and `is_read_only` true. If it is an existing associated wallet for the specified user, we allow you to create a MoonKey managed session.
## Returns

A successful response returns a `Wallet` object.



## OpenAPI

````yaml post /v1/auth/wallets/siwe/verify
openapi: 3.1.0
info:
  title: MoonKey Auth API
  description: >-
    Explore all the details of MoonKey Auth API. All of our APIs are RESTful and
    accept and return JSON.
  version: v1
servers:
  - url: https://api.moonkey.fun
    description: Production
    variables: {}
security:
  - Authorization: []
tags:
  - name: Users
    description: User management API
  - name: Magic Links
    description: ''
  - name: OTPs
    description: >-
      Send OTP (One-time passcodes) by all the supported delivery methods such
      as SMS, email.
  - name: OAuth
    description: ''
  - name: Wallets Login
    description: ''
  - name: Managed Wallets
    description: ''
  - name: Wallet Import
    description: >-
      Import existing wallets into the platform using secure HPKE encryption.
      This flow ensures raw entropy (seed phrases or private keys) never touches
      the server in plaintext.
externalDocs:
  url: ''
  description: ''
paths:
  /v1/auth/wallets/siwe/verify:
    parameters: []
    post:
      tags:
        - Wallets Login
      summary: Verify Siwe Wallet Registration
      description: >-
        Verifies the signature created by the wallet's private key signing a
        SIWE challenge using the [SIWE
        EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) (Sign in with
        Ethereum) spec using the `nonce` returned by
        `GetWalletRegistrationNonce` and the wallet address used during
        registration. If successful, a wallet will be created and associated
        with the user. Wallet imported will be marked as `is_imported` and
        `is_read_only` true. If it is an existing associated wallet for the
        specified user, we allow you to create a MoonKey managed session.

        ## Returns


        A successful response returns a `Wallet` object.
      operationId: VerifySiweWalletRegistration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifySiweWalletRegistrationRequest'
            examples:
              VerifySiweWalletRegistrationReq:
                value:
                  wallet_type: ethereum
                  public_address: '0xf082baC1eFbEF5156c788E4C6f586447c14eCF96'
                  siwe_challenge: >-
                    api.moonkey.fun wants you to sign in with your Ethereum
                    account:

                    0xf082baC1eFbEF5156c788E4C6f586447c14eCF96


                    By signing in you accept the Terms of Service


                    URI: https://api.moonkey.fun/

                    Version: 1

                    Chain ID: 1

                    Nonce: 2Dht-Du_BK3wgFrjFWXp1nbCkmzHTfmFGEniTD7NiuY

                    Issued At: 2022-07-04T02:07:27.184Z

                    Expiration Time: 2022-07-04T03:07:27.184Z
                  signature: >-
                    0xa6575d640856f2a0cffec992a868cb2ba52924705639d3ddc10bd454688d229d62e59024a9ad484b4f5215bbf081b4e40c83d24ea2908e82a9a5fc9ff804de1d1c
                  session_expires_in: 1000
                  session_jwt: >-
                    eyJhbGciOiJSUzI1NiIsImtpZCI6Imp3a18yN0Q1dU9UaFIyZHNncmFYN1dWb0VMRzRxRVgiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2NDkwODM0NjQsImlhdCI6MTY0OTAyMzQ2NCwiaXNzIjoiYXBpLnN0cmVhbWJpcmQuaW8vNmU3YzlmMWItNWU2Ni00MDBjLTk5YTctNzgzNDExZTAzYWFjIiwianRpIjoic2Vzc18yN0oxZG1OdWt5WFFtRlk4MjY3V1lJY1Z5QXciLCJuYmYiOjE2NDkwMjM0NjQsInNlc3Npb24iOnsiaWQiOiJzZXNzXzI3SjFkbU51a3lYUW1GWTgyNjdXWUljVnlBdyIsInVzZXJfaWQiOiJ1c2VyXzI2a2tha3RybDNabmhRNk1qMmg5bUM3QTlwcyIsInN0YXJ0ZWRfYXQiOjE2NDkwMjM0NjQsImV4cGlyZXNfYXQiOjE2NDkwODM0NjQsImxhc3RfYWN0aXZlX2F0IjoxNjQ5MDIzNDY0LCJmYWN0b3JzIjpbeyJkZWxpdmVyeV9jaGFubmVsIjoiZXRoX3dhbGxldCIsInR5cGUiOiJ3YWxsZXQiLCJtZXRob2QiOnsibWV0aG9kX2lkIjoid2FsbGV0XzI2a2tha2FSTHY1QmlTZFQxQVhGaVhybHpJaCIsIm1ldGhvZF90eXBlIjoid2FsbGV0Iiwid2FsbGV0X3B1YmxpY19hZGRyZXNzIjoiMHhmN2U5ZDYzMWJmYmQ5MGMxOTY5MTU2NmRiNGFiOTY2OTdhMjY2M2M2Iiwid2FsbGV0X3R5cGUiOiJFVEgiLCJ3YWxsZXRfaWQiOiJ3YWxsZXRfMjZra2FrYVJMdjVCaVNkVDFBWEZpWHJsekloIiwibGFzdF92ZXJpZmllZF9hdCI6MTY0OTAyMzQ2NH19XSwiZGV2aWNlX2ZpbmdlcnByaW50Ijp7InVzZXJfYWdlbnQiOiIiLCJpcCI6IiJ9LCJ1cGRhdGVkX2F0IjoxNjQ5MDIzNDY0LCJjcmVhdGVkX2F0IjoxNjQ5MDIzNDY0fSwic3ViIjoidXNlcl8yNmtrYWt0cmwzWm5oUTZNajJoOW1DN0E5cHMifQ.AE4JinNKZ6h9ywoHkF39m6zzzb7XexTJJOZMKLwAUJ26n9v04H8aftbbhBypah6iL6Nq0ni1dBkDyoCqgGuYsjK5Zr9XvJijlgKy1j2PUjCBAzc6CmvRlUqh9Ek2PZNyKdtzjDaWUr0e-Gw8WV_1c0G8zF1pylkr0Rk3aysTuXlRh7NWOt8-s7_tZ9Ip9FF2LnzSzz4nDF_EiJ_lI_hbKUDHiizlZQQX3vOXxe7epBhmy_F0otObanJeiz3B0yjaAgjS9hGothupHuVdlmlpksTi118AMXXSgwHRUc6ythWC2Dbvbe4sVnkN1uq_liJ20KemOZgxkQ_O8l6Bx7Ri3Q
        description: ''
      responses:
        '200':
          description: Verify Siwe Wallet Registration response
          content:
            application/json:
              schema:
                description: ''
                type: object
                properties:
                  id:
                    type: string
                    minLength: 1
                  app_id:
                    type: string
                    minLength: 1
                  user_id:
                    type: string
                    minLength: 1
                  public_address:
                    type: string
                    minLength: 1
                  wallet_type:
                    type: string
                    minLength: 1
                  is_default:
                    type: boolean
                  is_ready_only:
                    type: boolean
                  is_imported:
                    type: boolean
                  updated_at:
                    type: number
                  created_at:
                    type: number
                  session_token:
                    type: string
                  session_jwt:
                    type: string
                  session:
                    $ref: '#/components/schemas/Session'
                required:
                  - id
                  - app_id
                  - user_id
                  - public_address
                  - wallet_type
                  - is_default
                  - is_ready_only
                  - is_imported
                  - updated_at
                  - created_at
              examples:
                VerifySiweWalletRegistrationResp:
                  value:
                    id: wallet_2BpCqurnVmDESIkexSQ1iIj8CQr
                    app_id: app_24ydphdixx2ydhF0E5WUFUKWNqi
                    user_id: user_2BpCqz8xdXrNllJ8CxXmyzMoZYb
                    public_address: '0xf082bac1efbef5156c788e4c6f586447c14ecf96'
                    wallet_type: ethereum
                    verified: true
                    is_default: false
                    is_read_only: true
                    is_imported: true
                    updated_at: 1657595025
                    created_at: 1657593833
                    session_token: >-
                      b2xp7GcTszj1OHjgNUlrniVyoAA5Dpuraz23gAGofTtGKIwVfedeYyhcGoki4ZuD
                    session_jwt: >-
                      eyJhbGciOiJSUzI1NiIsImtpZCI6Imp3a18yN0Q1dU9UaFIyZHNncmFYN1dWb0VMRzRxRVgiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2NTc2NTU5MTAsImh0dHBzOi8vc3RyZWFtYmlyZC5pby9qd3Qvc2Vzc2lvbiI6eyJpZCI6InNlc3NfMkJwSDN4NmdiQ3MzWEM1dVNLZGgzVHVMVTNIIiwidXNlcl9pZCI6InVzZXJfMkJwQ3F6OHhkWHJObGxKOEN4WG15ek1vWlliIiwic3RhcnRlZF9hdCI6MTY1NzU5NTkxMCwiZXhwaXJlc19hdCI6MTY1NzY1NTkxMCwibGFzdF9hY3RpdmVfYXQiOjE2NTc1OTU5MTAsImZhY3RvcnMiOlt7ImRlbGl2ZXJ5X2NoYW5uZWwiOiJldGhfd2FsbGV0IiwidHlwZSI6IndhbGxldCIsIm1ldGhvZCI6eyJtZXRob2RfaWQiOiJ3YWxsZXRfMkJwQ3F1cm5WbURFU0lrZXhTUTFpSWo4Q1FyIiwibWV0aG9kX3R5cGUiOiJ3YWxsZXQiLCJ3YWxsZXRfcHVibGljX2FkZHJlc3MiOiIweGYwODJiYWMxZWZiZWY1MTU2Yzc4OGU0YzZmNTg2NDQ3YzE0ZWNmOTYiLCJ3YWxsZXRfdHlwZSI6IkVUSCIsIndhbGxldF9pZCI6IndhbGxldF8yQnBDcXVyblZtREVTSWtleFNRMWlJajhDUXIiLCJsYXN0X3ZlcmlmaWVkX2F0IjoxNjU3NTk1OTEwfX1dLCJkZXZpY2VfZmluZ2VycHJpbnQiOnsidXNlcl9hZ2VudCI6IiIsImlwIjoiIn0sInVwZGF0ZWRfYXQiOjE2NTc1OTU5MTAsImNyZWF0ZWRfYXQiOjE2NTc1OTU5MTB9LCJpYXQiOjE2NTc1OTU5MTAsImlzcyI6ImFwaS5zdHJlYW1iaXJkLmlvLzZlN2M5ZjFiLTVlNjYtNDAwYy05OWE3LTc4MzQxMWUwM2FhYyIsImp0aSI6InNlc3NfMkJwSDN4NmdiQ3MzWEM1dVNLZGgzVHVMVTNIIiwibmJmIjoxNjU3NTk1OTEwLCJzdWIiOiJ1c2VyXzJCcENxejh4ZFhyTmxsSjhDeFhteXpNb1pZYiJ9.NKVjHNw_65ODij-5tQZVFNPsNI9YC46ycsbpTm3VozKLXvAnKitOdEu8OB3SQKnGc8EVYU_TJ_VXAHFST6b5xi2ftbDUQlmXv6R-vrfRP7M1qYo6aBxa6uG2wzTlJe4VKDkQT53Y5mvRCi-52-AWpWShhO4JyP-bmcZcwPpFpFAi2gMK4SwSHGJCJw5VyWIImk0jmwXfUOYl0WrGh9gNxTwERoNwgVxUEtDBRMVF7dfGGTv9YgQ1e0XJ_gvYkoauCIYEALQNp_9VNJzoed_lZNZvWkqw2uHPWnxCrAq7CZO3o-kt-3sRppOCLRPAB2VyCOMhOhRCuSphXhILXA3P2w
                    session:
                      id: sess_2BpH3x6gbCs3XC5uSKdh3TuLU3H
                      user_id: user_2BpCqz8xdXrNllJ8CxXmyzMoZYb
                      started_at: 1657595910
                      expires_at: 1657655910
                      last_active_at: 1657595910
                      factors:
                        - delivery_channel: eth_wallet
                          type: wallet
                          method:
                            method_id: wallet_2BpCqurnVmDESIkexSQ1iIj8CQr
                            method_type: wallet
                            wallet_public_address: '0xf082bac1efbef5156c788e4c6f586447c14ecf96'
                            wallet_type: ethereum
                            wallet_id: wallet_2BpCqurnVmDESIkexSQ1iIj8CQr
                            last_verified_at: 1657595910
                      device_fingerprint:
                        user_agent: ''
                        ip: ''
                      permissions: null
                      updated_at: 1657595910
                      created_at: 1657595910
components:
  schemas:
    VerifySiweWalletRegistrationRequest:
      type: object
      properties:
        wallet_type:
          type: string
          minLength: 1
          description: >-
            Determines the type of wallet to register. Possible values:
            ethereum, solana (more coming soon!).
        signature:
          type: string
          minLength: 1
          description: >-
            Signed message using the associated private key of the wallet
            address. We ethereum signed message to be base64 encoded (e.g.
            0x...) and solana signed message will be bs58 encoded or base64
            encoded.
        public_address:
          type: string
          minLength: 1
          description: Public wallet address of the wallet.
        siwe_challenge:
          type: string
          description: >-
            `Required` SIWE challenge using the [SIWE
            EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) (Sign in with
            Ethereum) spec using the `nonce` returned by
            `GetWalletRegistrationNonce` and the wallet address used during
            registration.
        session_expires_in:
          type: number
          description: >-
            `Optional` Extend the session expiration time to N minutes from now,
            must be between 5 to 525600 minutes (365 days). This parameter will
            create a new session if there is no existing session along with a
            `session_token` and `session_jwt`. However, if a valid
            `session_token` or `session_jwt` is sent in, it will extend that
            session by the minutes specified. If not sent in, no session will be
            created by default.
        session_token:
          type: string
          description: '`Optional` Unique session token to verify.'
        session_jwt:
          type: string
          description: '`Optional` Unique Session JWT to verify.'
      required:
        - wallet_type
        - signature
        - public_address
        - siwe_challenge
    Session:
      description: ''
      type: object
      x-examples:
        Session:
          id: sess_24tZ6tlJ7CxlTwB6Zoj6SHQ9vU3
          user_id: user_24wFP9pDa9YiMJLun94iKykoZs2
          session_token: 7hssInGtOjKGUh8w7T4NjgLIKKSw6UdZ8uOduBYmJzrtfV6GrNtaUYoGehRS6jBh
          started_at: 1643496805
          expires_at: 1643502805
          last_active_at: 1643496805
          factors:
            - delivery_channel: sms
              type: otp
              method:
                method_id: pn_24oXBLRv6BoHXbNZoTAZkAFlRsy
                method_type: phone_number
                phone_number_id: pn_24oXBLRv6BoHXbNZoTAZkAFlRsy
                phone_number: '+14152222222'
                last_verified_at: 1643496805
          device_fingerprint:
            user_agent: ''
            ip: 123.2.1.1
          updated_at: 1643496805
          created_at: 1643496805
      title: Session
      properties:
        id:
          type: string
          minLength: 1
        user_id:
          type: string
          minLength: 1
        session_token:
          type: string
          minLength: 1
        started_at:
          type: number
        expires_at:
          type: number
        last_active_at:
          type: number
        factors:
          type: array
          uniqueItems: true
          minItems: 1
          items:
            type: object
            properties:
              delivery_channel:
                type: string
                minLength: 1
                description: >-
                  Delivery channel for this factor. Possible values: sms, email,
                  totp_authenticator, totp_recovery_code, google_oauth,
                  apple_oauth, microsoft_oauth, discord_oauth, okta_oauth,
                  github_oauth, slack_oauth, facebook_oauth,
                  webauthn_credential, eth_wallet, sol_wallet.
              type:
                type: string
                minLength: 1
                description: >-
                  Authentication type of factor. Possible values: otp, oauth,
                  wallet, totp, webauthn.
              method:
                type: object
                required:
                  - method_id
                  - method_type
                  - last_verified_at
                properties:
                  id:
                    type: string
                  method_id:
                    type: string
                    minLength: 1
                  method_type:
                    type: string
                    minLength: 1
                    description: >-
                      Identifier method type. Possible values: email, wallet,
                      phone_number, webauthn.
                  last_verified_at:
                    type: number
                  phone_number_id:
                    type: string
                    minLength: 1
                  phone_number:
                    type: string
                    minLength: 1
                  email_id:
                    type: string
                  email:
                    type: string
                  wallet_type:
                    type: string
                  wallet_id:
                    type: string
                  wallet_public_address:
                    type: string
                  totp_id:
                    type: string
                  webauthn_credential_id:
                    type: string
                  provider_subject:
                    type: string
            required:
              - delivery_channel
              - type
              - method
        device_fingerprint:
          type: object
          required:
            - user_agent
            - ip
          properties:
            user_agent:
              type: string
            ip:
              type: string
              minLength: 1
        updated_at:
          type: number
        created_at:
          type: number
      required:
        - id
        - user_id
        - session_token
        - started_at
        - expires_at
        - last_active_at
        - factors
        - device_fingerprint
        - updated_at
        - created_at
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Auth Platform API includes all the Auth related features. All Users,
        Phone Numbers, Emails, and OTPs are associated with an `App` as the
        container.


        Endpoints only accept App's `Secret API keys` other than certain
        endpoints that are used client side or via SDK that accept the
        `public_token`.


        ## Authentication using App Api Key


        ## Header:


        ```

        Authorization: Bearer {api_key}

        ```


        ## Authenticated Request


        ```curl

        curl \
          -X GET https://api.moonkey.fun/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \
          -H "Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r"
        ```

````