Two create modes
You can create a wallet either:- from a policy with
policyId/policy_id - from an inline
initialUser/initial_user
ed25519,
secp256k1, and secp256r1.
Basic create flow
TypeScript
secp256r1:
TypeScript
secp256k1:
TypeScript
What you get back
The result is not just one transaction. It is a categorized create plan:
For plain non-recovery creates, this usually collapses to one main creation
transaction plus any client authority signing the create flow needs.
Recovery-enabled create flows
If the policy is recovery-enabled and the SDK can derive both the requester authority and guardian information,create(...) also returns recoverySetup
/ recovery_setup.
That setup plan is not the same thing as completed recovery setup. It is the
follow-up input for wallet.recovery.prepareSetup(...) /
wallet.recovery.prepare_setup(...).
What to submit
Always submit the preparedtransactions exactly in the returned order.
If the client-authority transaction collection is not empty, those transactions
must be signed by the client authority before submission.
If the operator-signed transaction collection is not empty, treat those
transactions as already operator signed. They still need fee payer or sponsor
submission, but not another authority signature.
What to read next
- Use Transfers and Swaps for wallet actions after create
- Use Recovery if the created wallet should support a guardian flow
- Use Client Signing for Ed25519, passkey, and EVM client signatures
- Use Sponsor & Submit if your app wants Swig-backed fee sponsorship

