A signer is the service or key that controls a wallet — it authenticates users and signs transactions on their behalf. Wallet APIs are signer-agnostic: anything that produces a valid signature works.
Wallet APIs work with embedded wallets and server-managed keys. External browser wallets (MetaMask, Rabby, Ledger) are not yet supported.
For most teams, we recommend Privy as the embedded wallet provider. Privy handles key creation, social/email login, and recovery, and exposes a viem LocalAccount that drops straight into createSmartWalletClient.
Step-by-step setup for Privy with Wallet APIs.
Already have an auth stack or key custody solution? Plug it in directly. Any signer that implements viem's LocalAccount or WalletClient interface works with createSmartWalletClient — no extra adapters.
import { privateKeyToAccount } from "viem/accounts";
import { arbitrumSepolia } from "viem/chains";
import { createSmartWalletClient, alchemyWalletTransport } from "@alchemy/wallet-apis";
const client = createSmartWalletClient({
signer: privateKeyToAccount("0xYOUR_PRIVATE_KEY"),
transport: alchemyWalletTransport({ apiKey: "YOUR_ALCHEMY_API_KEY" }),
chain: arbitrumSepolia,
});Common signers that work out of the box:
| Provider | Type | Guide |
|---|---|---|
| Privy | Embedded wallet (recommended) | Guide → |
| Turnkey | Key management | Guide → |
| Dynamic | Embedded wallet | Guide → |
| Openfort | Embedded wallet | Guide → |
| Custom / any viem signer | Any | Guide → |
| Concern | What it means |
|---|---|
| Onboarding UX | Email/social login (embedded) vs. server-side key (custodial) |
| Custody model | Who holds the private key — user, shared (MPC), or your backend |
| Recovery | What happens when a user loses access to their device |
For a deeper comparison of custody models and provider trade-offs, see Choosing a signer.
EIP-7702 lets an existing EOA delegate to a smart wallet — unlocking gas sponsorship, batching, and session keys without changing addresses. It's enabled by default on Wallet APIs.
EIP-7702 requires the signer to expose signAuthorization. Embedded wallet providers like Privy support this. External browser and hardware wallets — MetaMask, Rabby, Ledger — do not support it today.