Skip to main content

Organization setup

Create a 0xkey organization in the Dashboard (or use the local stack via ./local-dev.sh start). Follow Account setup if you have not done this yet. For Embedded Wallets, enable the Auth Proxy in Dashboard → Auth (Wallet Kit). Copy your Organization ID and Auth Proxy config ID — you will pass them to the client.
1

Enable Auth Proxy

Turn on Auth Proxy and choose auth methods (for example Email OTP and Passkeys).
2

Copy IDs

Save Organization ID and Auth Proxy config ID for your app config.
See Auth Proxy for endpoint details and allowed-origins configuration.

Installation

Using React? Prefer @0xkey-io/react-wallet-kit — it wraps @0xkey-io/core with UI, hooks, and Auth Proxy defaults.

Client initialization

Unlike React Wallet Kit, @0xkey-io/core has no provider or hooks. You work directly with ZeroXKeyClient.
init() is required — it sets up storage, stampers, and the HTTP client.

Local development

When using local-gateway (*.0xkey.com in /etc/hosts): Run ./local-dev.sh start-docs and open https://docs.0xkey.com (or http://localhost:3300) while iterating on docs.

Optional configuration

Passkeys

For local passkey testing, serve your app at https://app.0xkey.com via local-gateway so rpId matches the page origin.

External browser wallets


Making authenticated requests

After init(), use createHttpClient() for API calls. The client picks the active stamper (IndexedDB session, passkey, or wallet) based on login state.
For OTP flows that need a backend, pair the browser client with @0xkey-io/sdk-server server actions (server.sendOtp, server.verifyOtp) or your own API routes.

Next steps

React Wallet Kit

Fastest Embedded Wallet path for React / Next.js

TypeScript server SDK

API key stamping, proxies, and OTP helpers

Chain adapters

viem, ethers, Solana, and EIP-1193

Code examples

oauth, kitchen-sink, with-viem, delegated-access