Connect Resource
The connect resource provides methods for managing ERC-4337 smart accounts, passkeys, session keys, UserOperation relay, social recovery, and analytics.
const urblock = new Urblock("sk_test_...");
urblock.connect; // ConnectResource
Account Management
createAccount(params)
Create or retrieve a connect smart account.
const account = await urblock.connect.createAccount({
signer_id: "user_001",
signer_type: 0,
key_data: "0xpublickey...",
salt: "0",
chain_id: 11155111,
});
listAccounts(params?)
List all smart accounts for the tenant.
const accounts = await urblock.connect.listAccounts({ limit: 10 });
getAccount(address, chainId?)
Get a specific account by address.
const account = await urblock.connect.getAccount("0x...", 11155111);
SIWE
verifySiwe(params)
Verify a Sign In With Ethereum message.
const session = await urblock.connect.verifySiwe({
message: siweMessage,
signature: "0x...",
address: "0x...",
});
console.log(session.session_token);
Session Keys
createSessionKey(params)
Create a time-limited session key.
const key = await urblock.connect.createSessionKey({
account_address: "0x...",
key: sessionKeyAddress,
valid_after: now,
valid_until: now + 3600,
allowed_targets: ["0xTokenContract..."],
spend_limit: "1000000000000000000",
chain_id: 11155111,
});
listSessionKeys(address)
const keys = await urblock.connect.listSessionKeys("0x...");
Relay
relay(params)
Relay a signed UserOperation.
const result = await urblock.connect.relay({
user_op: { sender, nonce, init_code, call_data, ... },
chain_id: 11155111,
});
getRelayStatus(userOpHash)
const status = await urblock.connect.getRelayStatus("0x...");
listRelayOps(address)
const ops = await urblock.connect.listRelayOps("0x...");
Passkeys
registerPasskey(params)
Register a WebAuthn credential.
const passkey = await urblock.connect.registerPasskey({
account_address: "0x...",
credential: {
credential_id: "base64...",
public_key: { x: "0x...", y: "0x..." },
algorithm: "ES256",
},
chain_id: 11155111,
});
listPasskeys(address)
const passkeys = await urblock.connect.listPasskeys("0x...");
Pending Operations
listPendingOps()
List operations awaiting client-side signature (connect mode).
const pending = await urblock.connect.listPendingOps();
submitSignedOp(userOpHash, params)
Submit a client-side signature for a pending operation. Optionally include the full user_op and chain_id to forward directly to the bundler.
// Basic — just submit signature (client relays manually)
await urblock.connect.submitSignedOp("0xhash...", {
signature: "0xsig...",
});
// With bundler forwarding — auto-relays to bundler
await urblock.connect.submitSignedOp("0xhash...", {
signature: "0xsig...",
nonce: "0x01",
user_op: { sender, nonce, initCode, callData, ... },
chain_id: 11155111,
});
cancelPendingOp(userOpHash)
await urblock.connect.cancelPendingOp("0xhash...");
Recovery
getRecoveryConfig(address, chainId)
const config = await urblock.connect.getRecoveryConfig("0x...", 11155111);
console.log(config.guardians);
console.log(config.threshold);
console.log(config.active_requests);
configureRecovery(params)
const result = await urblock.connect.configureRecovery({
account_address: "0x...",
chain_id: 11155111,
recovery_action_address: "0xAction...",
guardians: [
{ address: "0xG1...", label: "Phone" },
{ address: "0xG2...", label: "Hardware" },
],
threshold: 2,
timelock_delay: 172800,
});
// Server-side save — result.guardians, result.threshold, result.timelock_delay
initiateRecovery(params)
const result = await urblock.connect.initiateRecovery({
account_address: "0x...",
chain_id: 11155111,
guardian_address: "0xG1...",
new_signer_id: "new_pk",
new_key_data: "0xnewkey...",
});
confirmRecovery(requestId, guardianAddress)
await urblock.connect.confirmRecovery("crr_abc", "0xG2...");
executeRecovery(requestId)
await urblock.connect.executeRecovery("crr_abc");
cancelRecovery(requestId)
await urblock.connect.cancelRecovery("crr_abc");
Migration
Legacy migration helpers are not part of the active SDK surface.
For current integrations, create or recover Connect accounts directly through the account and recovery methods documented above.
Network Config
getNetworkConfig(chainId)
const config = await urblock.connect.getNetworkConfig(11155111);
console.log(config.factory_address);
console.log(config.bundler_url);
Analytics
analyticsOverview(period?)
const stats = await urblock.connect.analyticsOverview("30d");
console.log(stats.total_accounts);
console.log(stats.total_relay_ops);
console.log(stats.recovery.configured);
analyticsTimeseries(period?)
const ts = await urblock.connect.analyticsTimeseries("7d");
ts.accounts_by_day.forEach((d) => console.log(`${d.date}: ${d.count}`));
Supported periods: 7d, 30d, 90d, 1y.