Begin
Minimum integration guide — sign up a user, sign them in, and start using the API in 5 minutes.
Everything you need to get your first user created and authenticated. This guide covers the minimum API calls required for a working integration.
Prerequisites
- Your rpId (domain) must be registered with IBEx — what is rpId?
- For local development,
localhostworks automatically (no registration needed)
Authentication flow overview
IBEx uses a two-step pattern for both sign-up and sign-in:
- GET — retrieve a challenge (WebAuthn options or KDF/email materials)
- POST — submit the signed challenge to complete the operation and receive JWT tokens
Step 1 — Sign up a new user
1a. Get sign-up challenge
Response: WebAuthn credentialCreationOptions — pass this to the browser's navigator.credentials.create().
1b. Complete sign-up
Pass the credential returned by the browser to complete registration:
Response: JWT tokens + user data:
The user now has a Smart Account (Safe wallet) deployed on the default chain. Use access_token as Authorization: Bearer <token> for all subsequent API calls.
Step 2 — Sign in a returning user
2a. Get sign-in challenge
Response: WebAuthn credentialRequestOptions — pass this to navigator.credentials.get().
2b. Complete sign-in
Optional enrichment flags — avoid extra API calls by requesting data inline:
| Flag | What you get |
|---|---|
includeBalance | All token balances for the wallet (including zero balances) |
includeTransactions | Recent transaction history |
includeUserdata | Stored user preferences (language, email, etc.) |
Response:
Step 3 — Refresh the token
Access tokens expire after 1 hour. Use the refresh token to get a new pair:
Response: New access_token + refresh_token.
What's next?
With JWT tokens in hand, you can now:
| Goal | Endpoint | Section |
|---|---|---|
| Get wallet addresses | GET /v1.2/users/me/address | Privacy → Me |
| Get balances | GET /v1.2/users/me/balances | Privacy → Me |
| Transfer tokens | POST /v1.2/safes/operations | Transfer |
| Swap tokens | GET /v1.2/safes/quote → POST | Swap |
| Real-time updates | wss://host/ws | WebSockets |
| Supply to Aave | POST /v1.2/safes/operations | Aave |
| Deposit to Morpho | POST /v1.2/safes/operations | Morpho |
| Hyperliquid vaults | POST /v1.2/safes/operations | Hyperliquid |
| DeFi positions & catalog | GET /v1.2/users/me/pools | Pools |
Alternative authentication modes
This guide uses passkeys (default). IBEx also supports:
| Mode | Use case | Docs |
|---|---|---|
wallet=kdf | PIN/password-derived key (no biometric needed) | Sign-in GET |
wallet=email | Email OTP + encrypted backup | Sign-in GET |
wallet=7702 | External wallet (MetaMask, WalletConnect) via EIP-7702 | Sign-in GET |