# moonkey docs ## Docs - [Authentication](https://docs.streambird.io/api-reference/authentication.md): Learn how to authenticate your API requests to MoonKey - [Create Embeddable Magic Link](https://docs.streambird.io/api-reference/magic-links/create-embeddable-magic-link.md): Create an embeddable token for Magic Link for a specific user. The token can be used with a custom email or any other methods of delivery to your user. ## Returns - [Invite User by Magic Link](https://docs.streambird.io/api-reference/magic-links/invite-user-by-magic-link.md): Create an email Magic Link to the provided email for invite verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns - [Login or Create User by Magic Link](https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link.md): Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns - [Verify Token](https://docs.streambird.io/api-reference/magic-links/verify-token.md): Verify the magic token of a magic link to authenticate the user. This endpoints verifies that the magic token sent in is valid and returns the method ID and verified user ID. ## Returns - [Create Wallet](https://docs.streambird.io/api-reference/managed-wallets/create-wallet.md): Create a wallet for a given user. If an existing wallet of the given wallet type has been created for that user, it will be returned. ## Returns - [Ethereum Sign EIP-7702 Authorization](https://docs.streambird.io/api-reference/managed-wallets/ethereum/sign-7702-authorization.md): Sign an EIP-7702 authorization using a managed wallet. An EIP-7702 authorization allows an externally owned account (EOA) to authorize a delegation / contract address without signing or submitting a transaction. - [Ethereum Sign Message](https://docs.streambird.io/api-reference/managed-wallets/ethereum/sign-message.md): Sign a personal message using a managed wallet. Managed wallet means the private key is never exposed to the client and always stored encrypted in our vault. - [Ethereum Sign Transaction](https://docs.streambird.io/api-reference/managed-wallets/ethereum/sign-transaction.md): Sign an Ethereum transaction using a managed wallet. A managed wallet means the private key is never exposed to the client and is always stored encrypted in the vault. - [Get Wallet](https://docs.streambird.io/api-reference/managed-wallets/get-wallet.md): Get wallet using wallet ID. ## Returns - [Get Wallet Balance](https://docs.streambird.io/api-reference/managed-wallets/get-wallet-balance.md): Get wallet balance of a specific token/asset for a specific wallet. ## Returns - [List Wallet](https://docs.streambird.io/api-reference/managed-wallets/list-wallet.md): List wallets within the app. ## Returns - [Solana Sign Message](https://docs.streambird.io/api-reference/managed-wallets/solana/sign-message.md): Sign a message using a managed wallet. Managed wallet means the private key is never exposed to the client and always stored encrypted in our vault. - [Solana Sign Transaction](https://docs.streambird.io/api-reference/managed-wallets/solana/sign-transaction.md): Sign transaction using a managed wallet. Managed wallet means the private key is never exposed to the client and always stored encrypted in our vault. - [Apple](https://docs.streambird.io/api-reference/oauth/apple.md): Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Apple. User will first sign in to their Apple account, Apple will then call the MoonKey callback URL set during the setup process for Apple provider. Once MoonKey completes the OA… - [Discord](https://docs.streambird.io/api-reference/oauth/discord.md): Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Discord. User will first sign in to their Discord account, Discord will then call the MoonKey callback URL set during the setup process for Discord provider. Once MoonKey complete… - [Github](https://docs.streambird.io/api-reference/oauth/github.md): Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Github. User will first sign in to their Github account, Github will then call the MoonKey callback URL set during the setup process for Github provider. Once MoonKey completes th… - [Google](https://docs.streambird.io/api-reference/oauth/google.md): Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Google. User will first sign in to their Google account, Google will then call the MoonKey callback URL set during the setup process for Google provider. Once MoonKey completes th… - [Microsoft](https://docs.streambird.io/api-reference/oauth/microsoft.md): Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Microsoft. User will first sign in to their Microsoft account, Microsoft will then call the MoonKey callback URL set during the setup process for Microsoft provider. Once MoonKey… - [Verify Token](https://docs.streambird.io/api-reference/oauth/verify-token.md): Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original `access_token` and `refresh_token` of the idp providers that can be used dire… - [Create Email OTP](https://docs.streambird.io/api-reference/otps/create-email-otp.md): Send an OTP (one-time passcode) to the provided email for login verification. - [Create SMS OTP](https://docs.streambird.io/api-reference/otps/create-sms-otp.md): Send an SMS OTP (one-time passcode) to the provided phone number for verification. ## Returns - [Login or Create User by Email OTP](https://docs.streambird.io/api-reference/otps/login-or-create-user-by-email-otp.md): Create an OTP (one-time passcode) to the provided email for login verification. If no user account exists for the provided email, a new user will be created and email OTP sent. ## Returns - [Login or Create User by SMS](https://docs.streambird.io/api-reference/otps/login-or-create-user-by-sms.md): Create an SMS OTP (one-time passcode) to the provided phone number for login verification. If no user account exists for the provided phone number, a new user will be created and OTP sent by SMS. ## Returns - [Verify OTP (One-time passcode)](https://docs.streambird.io/api-reference/otps/verify-otp-one-time-passcode.md): Verify an OTP (one-time passcode) against a method ID (email, phone number) to authenticate the user. This endpoints verifies that the OTP sent in is valid for the given method ID. ## Returns - [PasswordStrengthCheck (Enterprise)](https://docs.streambird.io/api-reference/passwords/passwordstrengthcheck-enterprise.md): Perform a password strength check. ## Returns - [Update Password by Session (Enterprise)](https://docs.streambird.io/api-reference/passwords/update-password-by-session-enterprise.md): Update user password using an active session. If the session token does not have an active factor from OTP, magic link, or password, it will return an error. ## Request Body - [Verify Password (Enterprise)](https://docs.streambird.io/api-reference/passwords/verify-password-enterprise.md): Verify user password and generate a session. When a new factor is added, a new `session_token` will be generated but inheriting the same session ID and history (e.g. OTP, magic link factors). ## Returns - [Delete Session](https://docs.streambird.io/api-reference/sessions/delete-session.md): Delete an identity session in an App. You can only send in one of the following: `session_token`, `session_jwt`, `session_id`. If more than one parameter is sent in, a validation error will be returned. ## Returns - [GetJWKs](https://docs.streambird.io/api-reference/sessions/getjwks.md): Get JWK Set using a publishable `PublicToken` or secret `ApiKey`. It serves as a wrapper on top of `GetJWKsByApp` and infers the `app_id` from the api key used. ## Returns - [GetJWKsByApp](https://docs.streambird.io/api-reference/sessions/getjwksbyapp.md): Get JWK Set for the App. ## Request String Example - [List Sessions](https://docs.streambird.io/api-reference/sessions/list-sessions.md): List identity sessions in an App by user ID. ## Query String Example - [Verify Session](https://docs.streambird.io/api-reference/sessions/verify-session.md): Verify session in an application by session token and/or optionally extend the expiration time of the session by N minutes from now if the `session_expires_in` property is present. ## Returns - [Create TOTP (beta)](https://docs.streambird.io/api-reference/totp-time-based-one-time-passcode/create-totp-beta.md): Initiates a TOTP authenticator for the specified user. ## Returns - [Get TOTP Recovery Codes (beta)](https://docs.streambird.io/api-reference/totp-time-based-one-time-passcode/get-totp-recovery-codes-beta.md): Get TOTP (time-based one-time passcode) recovery codes of the given user ID. ## Returns - [TOTP Recovery (beta)](https://docs.streambird.io/api-reference/totp-time-based-one-time-passcode/totp-recovery-beta.md): Verify an TOTP (time-based one-time passcode) recovery code against a user ID to authenticate the user. ## Returns - [Verify TOTP (beta)](https://docs.streambird.io/api-reference/totp-time-based-one-time-passcode/verify-totp-beta.md): Verify an TOTP (time-based one-time passcode) against a user ID to authenticate the user. This endpoints verifies that the TOTP sent in is valid for the given user ID. ## Returns - [Confirm Transfer (beta)](https://docs.streambird.io/api-reference/transfers/confirm-transfer-beta.md): Confirm a transfer to withdraw from wallet. Each transfer expires within 2 minutes to avoid provide the best estimate in the network charge of the specified blockchain. ## Returns - [Create Transfer (beta)](https://docs.streambird.io/api-reference/transfers/create-transfer-beta.md): Create transfer to withdraw from wallet. ## Returns - [Get Transfer (beta)](https://docs.streambird.io/api-reference/transfers/get-transfer-beta.md): Get transfer object by ID. ## Returns - [List Transfer (beta)](https://docs.streambird.io/api-reference/transfers/list-transfer-beta.md): List transfers using available filters and pagination. All transfers are returned in `created_at` descending order. ## Query String Example - [Create User](https://docs.streambird.io/api-reference/users/create-user.md): Creates a user in an App that requires authentication. Each user will have a default wallet created for the wallet_type sent in. ## Returns - [Delete User](https://docs.streambird.io/api-reference/users/delete-user.md): Delete a user by ID. ## Returns - [Delete User Email](https://docs.streambird.io/api-reference/users/delete-user-email.md): Delete an email from the associated user. ## Returns - [Delete User Phone Number](https://docs.streambird.io/api-reference/users/delete-user-phone-number.md): Delete a phone number from the associated user. ## Returns - [Delete User TOTP](https://docs.streambird.io/api-reference/users/delete-user-totp.md): Delete a TOTP attached to a user. ## Returns - [Delete User Wallet](https://docs.streambird.io/api-reference/users/delete-user-wallet.md): Delete a read only imported wallet attached to a user. ## Returns - [Delete User WebAuthn Credential](https://docs.streambird.io/api-reference/users/delete-user-webauthn-credential.md): Delete a WebAuthn credential from the associated user. ## Returns - [Get User](https://docs.streambird.io/api-reference/users/get-user.md): Get a user with their various properties like `emails`, `phone_numbers`, and other attached identifiers. ## Returns - [Search Users (beta)](https://docs.streambird.io/api-reference/users/search-users-beta.md): Search users within an App. ## Returns - [Update User](https://docs.streambird.io/api-reference/users/update-user.md): Update a user by ID. ## Returns - [Begin Wallet Import](https://docs.streambird.io/api-reference/wallet-import/begin-wallet-import.md): Initiates the wallet-import process and returns the HPKE encryption public key required for encrypting wallet entropy. - [Import Wallet](https://docs.streambird.io/api-reference/wallet-import/import-wallet.md): Completes the wallet import process by submitting the HPKE-encrypted wallet entropy. - [Begin Wallet Registration](https://docs.streambird.io/api-reference/wallets-login/begin-wallet-registration.md): Initiates a wallet registration request for the specified user. This endpoint will return a challenge that must be signed by the private key of the wallet address you are registering against the user. Once verified, we will attach the wallet to the user specified. ## Returns - [Get Wallet Registration Nonce](https://docs.streambird.io/api-reference/wallets-login/get-wallet-registration-nonce.md): Initiates a wallet registration request for the specified user. This endpoint will return a `nonce` that must be signed by the private key of the wallet address you are registering against the user using the [SIWE EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) (Sign in with Ethereum) spec. We wi… - [Verify Siwe Wallet Registration](https://docs.streambird.io/api-reference/wallets-login/verify-siwe-wallet-registration.md): 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 successfu… - [Verify Wallet (beta)](https://docs.streambird.io/api-reference/wallets-login/verify-wallet-beta.md): Verifies a wallet signature. This endpoint will verify the signature signed by the wallet private key using the challenge presented by the `BeginWalletRegistration` endpoint for the wallet address specified. If signature is valid, we will return the wallet object with its associated user ID. If the… - [Create WebAuthn Registration (beta)](https://docs.streambird.io/api-reference/webauthn/create-webauthn-registration-beta.md): Verify a signed WebAuthn registration request for the specified user ID and complete and create the WebAuthn registration. This is usually returned by [navigator.credentials.create(options)](https://w3c.github.io/webappsec-credential-management/#algorithm-create-cred) or [webauthn-json](https://gith… - [Initiate WebAuthn Authentication (beta)](https://docs.streambird.io/api-reference/webauthn/initiate-webauthn-authentication-beta.md): Initiate a WebAuthn authentication request. This endpoint requires that a user has at least one WebAuthn credential attached for the provided `domain` from a successful `CreateWebAuthnRegistration`. Pass the JSON object in `public_key_credential_request_options` property into `await get(options)` as… - [Initiate WebAuthn Registration (beta)](https://docs.streambird.io/api-reference/webauthn/initiate-webauthn-registration-beta.md): Initiate a WebAuthn Registration Request. This endpoint requires that a user already exists on MoonKey. Pass the returned JSON object in `public_key_credential_creation_options` property into `await create(options)` as `options` if you are using [webauthn-json](https://github.com/github/webauthn-jso… - [Verify WebAuthn Authentication (beta)](https://docs.streambird.io/api-reference/webauthn/verify-webauthn-authentication-beta.md): Verify and complete a WebAuthn credential authentication request. This endpoint requires that a user already exists and the `BeginWebAuthnAuthentication` has been called. Pass in the response from [navigator.credentials.get(options)](https://w3c.github.io/webappsec-credential-management/#dom-credent… - [Overview](https://docs.streambird.io/authentication/overview.md): Learn about MoonKey's authentication methods and how to integrate them into your application - [Access Tokens](https://docs.streambird.io/authentication/user-authentication/access-tokens.md) - [Email OTP](https://docs.streambird.io/authentication/user-authentication/authentication-methods/email.md): Authenticate users with one-time passcodes sent to their email address - [OAuth (Social Login)](https://docs.streambird.io/authentication/user-authentication/authentication-methods/oauth.md): Enable users to sign in with Google, Apple, and other OAuth providers - [Authentication State](https://docs.streambird.io/authentication/user-authentication/authentication-state.md) - [Overview](https://docs.streambird.io/authentication/user-authentication/sessions/overview.md): Learn how MoonKey manages user sessions and authentication state - [Session Management](https://docs.streambird.io/authentication/user-authentication/sessions/session-management.md): Implement advanced session management with MoonKey's REST API - [Session Token vs JWT](https://docs.streambird.io/authentication/user-authentication/sessions/session-token-vs-jwt.md) - [Logging Users Out](https://docs.streambird.io/authentication/user-authentication/signing-users-out.md) - [Email OTP](https://docs.streambird.io/authentication/user-authentication/ui-components/email-otp.md) - [Login](https://docs.streambird.io/authentication/user-authentication/ui-components/login.md) - [Overview](https://docs.streambird.io/authentication/user-authentication/ui-components/overview.md) - [Whitelabel](https://docs.streambird.io/authentication/user-authentication/whitelabel.md) - [About MoonKey](https://docs.streambird.io/get-started/about.md) - [Create new app](https://docs.streambird.io/get-started/dashboard/create-new-app.md) - [Configure login methods](https://docs.streambird.io/get-started/dashboard/login-methods.md) - [Dashboard](https://docs.streambird.io/get-started/dashboard/overview.md) - [Team member roles](https://docs.streambird.io/get-started/dashboard/team-member-roles.md) - [Domain Whitelisting](https://docs.streambird.io/get-started/domain-whitelisting.md): Configure and manage whitelisted domains for secure authentication flows in MoonKey - [Automatic Wallet Creation](https://docs.streambird.io/get-started/frontend-sdks/react/advance/automatic-wallet-creation.md) - [Configure Appearance](https://docs.streambird.io/get-started/frontend-sdks/react/advance/configure-appearance.md) - [Configure EVM Networks](https://docs.streambird.io/get-started/frontend-sdks/react/advance/configure-evm-networks.md) - [Configure Solana Networks](https://docs.streambird.io/get-started/frontend-sdks/react/advance/configure-solana-networks.md) - [Features](https://docs.streambird.io/get-started/frontend-sdks/react/features.md) - [Installation](https://docs.streambird.io/get-started/frontend-sdks/react/installation.md) - [Quickstart](https://docs.streambird.io/get-started/frontend-sdks/react/quick-start.md) - [Setup](https://docs.streambird.io/get-started/frontend-sdks/react/setup.md) - [Choose your platform](https://docs.streambird.io/get-started/platform-selection.md) - [Quickstart](https://docs.streambird.io/get-started/rest-api/quick-start.md) - [Setup](https://docs.streambird.io/get-started/rest-api/setup.md) - [Setup an account](https://docs.streambird.io/get-started/setup-account.md) - [Customize your application](https://docs.streambird.io/recipes/dashboard/customize.md): Configure your app's brand settings in the MoonKey Dashboard - [Overview](https://docs.streambird.io/recipes/overview.md) - [Complete Authentication Flow](https://docs.streambird.io/recipes/wallets/complete-authentication-flow.md) - [Complete Dashboard with Wallet Operations](https://docs.streambird.io/recipes/wallets/complete-dashboard-wallet-operations.md) - [ERC-20 Token Transfer (Ethereum)](https://docs.streambird.io/recipes/wallets/erc20-token-transfer-ethereum.md) - [Multi-Step Transaction Flow](https://docs.streambird.io/recipes/wallets/multi-step-transaction-flow.md) - [NFT Minting (Ethereum)](https://docs.streambird.io/recipes/wallets/nft-minting-etheruem.md) - [Protected Routes with Authentication](https://docs.streambird.io/recipes/wallets/protected-routes-with-authentication.md) - [Solana Program Interaction](https://docs.streambird.io/recipes/wallets/solana-program-interaction.md) - [Wallet Connection Status Indicator](https://docs.streambird.io/recipes/wallets/wallet-connection-status-indicator.md) - [Chain Support](https://docs.streambird.io/wallet-as-a-service/chain-support.md) - [Create a Wallet](https://docs.streambird.io/wallet-as-a-service/embedded-wallets/create-a-wallet/overview.md) - [Export a Wallet](https://docs.streambird.io/wallet-as-a-service/embedded-wallets/export-a-wallet.md) - [Get User Wallets](https://docs.streambird.io/wallet-as-a-service/embedded-wallets/get-a-wallet/get-user-connected-wallets.md) - [Configuration](https://docs.streambird.io/wallet-as-a-service/funding/configure.md) - [Ethereum](https://docs.streambird.io/wallet-as-a-service/funding/fund-types/ethereum.md) - [Solana](https://docs.streambird.io/wallet-as-a-service/funding/fund-types/solana.md) - [Card Payments](https://docs.streambird.io/wallet-as-a-service/funding/methods/card.md) - [Overview](https://docs.streambird.io/wallet-as-a-service/funding/overview.md) - [Export Key](https://docs.streambird.io/wallet-as-a-service/ui-components/export-key.md) - [Overview](https://docs.streambird.io/wallet-as-a-service/ui-components/overview.md) - [Send Transaction](https://docs.streambird.io/wallet-as-a-service/ui-components/send-transaction.md) - [Sign Message](https://docs.streambird.io/wallet-as-a-service/ui-components/sign-message.md) - [Sign Transaction](https://docs.streambird.io/wallet-as-a-service/ui-components/sign-transaction.md) - [Ethereum Provider](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/ethereum-provider.md) - [Send Transaction](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/send-transaction.md) - [Sign EIP-7702 Authorization](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/sign-eip7702-authorization.md) - [Sign Message](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/sign-message.md) - [Sign Transaction](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/sign-transaction.md) - [Sign Typed Data](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/sign-typed-data.md) - [Switch Chains](https://docs.streambird.io/wallet-as-a-service/using-wallets/ethereum/switch-chains.md) - [Send Transaction](https://docs.streambird.io/wallet-as-a-service/using-wallets/solana/send-transaction.md) - [Sign Message](https://docs.streambird.io/wallet-as-a-service/using-wallets/solana/sign-message.md) - [Sign Transaction](https://docs.streambird.io/wallet-as-a-service/using-wallets/solana/sign-transaction.md) - [Solana Web3.js Integration](https://docs.streambird.io/wallet-as-a-service/using-wallets/solana/solana-web3-js.md) - [Wallets Overview](https://docs.streambird.io/wallet-as-a-service/wallets-overview.md) ## OpenAPI Specs - [streambird-api-3.1](https://docs.streambird.io/openapi/streambird-api-3.1.yml) - [streambird-api-solana](https://docs.streambird.io/openapi/streambird-api-solana.yml) - [streambird-api-ethereum](https://docs.streambird.io/openapi/streambird-api-ethereum.yml)