Documentation Index
Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
Configuration
DynamicSDKConfig
Configuration for initializing the Dynamic SDK.
data class DynamicSDKConfig(
val environmentId: String // Your Dynamic environment ID (required)
)
Example
val config = DynamicSDKConfig(
environmentId = "YOUR_ENV_ID"
)
DynamicSDK.initialize(context = applicationContext, config = config)
Authentication
UserProfile
Represents an authenticated user’s profile.
data class UserProfile(
val userId: String?,
val email: String?,
val phoneNumber: String?,
// Additional fields available
)
Example
val user = sdk.auth.authenticatedUser
if (user != null) {
println("User ID: ${user.userId}")
println("Email: ${user.email}")
println("Phone: ${user.phoneNumber}")
}
PhoneData
Phone number data for SMS authentication.
data class PhoneData(
val dialCode: String, // e.g., "+1"
val iso2: String, // e.g., "US"
val phone: String // Phone number without country code
)
Example
val phoneData = PhoneData(
dialCode = "+1",
iso2 = "US",
phone = "5551234567"
)
sdk.auth.sms.sendOTP(phoneData)
SignInWithExternalJwtParams
Parameters for external JWT authentication.
data class SignInWithExternalJwtParams(
val jwt: String // The external JWT token
)
Example
sdk.auth.externalAuth.signInWithExternalJwt(
SignInWithExternalJwtParams(jwt = "your-jwt-token")
)
Wallets
BaseWallet
Represents a user’s wallet.
data class BaseWallet(
val address: String, // Wallet address
val chain: String, // "EVM" or "SOL"
val walletName: String?, // Wallet name (optional)
val id: String? // Wallet ID for API operations (optional)
)
Example
val wallets = sdk.wallets.userWallets
wallets.forEach { wallet ->
println("Address: ${wallet.address}")
println("Chain: ${wallet.chain}")
println("Name: ${wallet.walletName}")
println("ID: ${wallet.id}")
}
GenericNetwork
Represents a blockchain network.
data class GenericNetwork(
val name: String,
val chainId: Int?, // For EVM networks
val networkId: String? // For Solana networks
)
Example
val evmNetworks = sdk.networks.evm
val ethereum = evmNetworks.first { it.chainId == 1 }
println("Network: ${ethereum.name}, Chain ID: ${ethereum.chainId}")
val solanaNetworks = sdk.networks.solana
val mainnet = solanaNetworks.first { it.networkId == "mainnet-beta" }
println("Network: ${mainnet.name}, Network ID: ${mainnet.networkId}")
EVM / Blockchain
EthereumTransaction
Transaction data for EVM chains.
data class EthereumTransaction(
val to: String, // Recipient address
val value: String, // Amount in Wei (as String)
val gasLimit: Int, // Gas limit
val maxFeePerGas: Int? = null, // Max fee per gas (optional)
val maxPriorityFeePerGas: Int? = null, // Priority fee (optional)
val data: String? = null // Contract data (optional)
)
Example
val transaction = EthereumTransaction(
to = "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
value = "1000000000000000", // 0.001 ETH in Wei
gasLimit = 21000,
maxFeePerGas = 30000000000,
maxPriorityFeePerGas = 2000000000
)
Input for writing to a smart contract.
data class WriteContractInput(
val address: String, // Contract address
val functionName: String, // Function to call
val args: List<Any>, // Function arguments
val abi: List<Map<String, Any>> // Contract ABI
)
Example
val input = WriteContractInput(
address = "0x...",
functionName = "transfer",
args = listOf("0x...", "1000000000000000000"), // recipient, amount
abi = parseAbiJson(Erc20.abi)
)
GasPrice
Current gas price information for EVM chains.
data class GasPrice(
val maxFeePerGas: Int,
val maxPriorityFeePerGas: Int
)
Example
val client = sdk.evm.createPublicClient(chainId = 1)
val gasPrice = client.getGasPrice()
println("Max fee: ${gasPrice.maxFeePerGas}")
println("Priority fee: ${gasPrice.maxPriorityFeePerGas}")
Erc20
ERC20 token utilities.
object Erc20 {
val abi: String // Standard ERC20 ABI as JSON string
}
Example
// Parse ERC20 ABI for contract interactions
val abiList = parseAbiJson(Erc20.abi)
BlockhashResult
Solana blockhash information.
data class BlockhashResult(
val blockhash: String,
val lastValidBlockHeight: Long
)
Example
val connection = sdk.solana.createConnection()
val result = connection.getLatestBlockhash()
println("Blockhash: ${result.blockhash}")
println("Valid until block: ${result.lastValidBlockHeight}")
MFA
MfaDevice
Represents an MFA device.
data class MfaDevice(
val id: String?,
val type: MfaDeviceType?
)
enum class MfaDeviceType {
totp
}
Example
val devices = sdk.mfa.getUserDevices()
devices.forEach { device ->
println("Device ID: ${device.id}")
println("Type: ${device.type?.name}")
}
MfaAddDevice
Response when adding an MFA device.
data class MfaAddDevice(
val secret: String, // Secret for QR code generation
val id: String?
)
Example
val device = sdk.mfa.addDevice("totp")
println("Secret for QR code: ${device.secret}")
// Display QR code with this secret for user to scan
MfaAuthenticateDevice
Parameters for authenticating an MFA device.
data class MfaAuthenticateDevice(
val code: String,
val deviceId: String,
val createMfaToken: MfaCreateToken
)
Example
val token = sdk.mfa.authenticateDevice(
MfaAuthenticateDevice(
code = "123456",
deviceId = "device-id",
createMfaToken = MfaCreateToken(singleUse = true)
)
)
MfaCreateToken
Parameters for MFA token creation.
data class MfaCreateToken(
val singleUse: Boolean
)
Example
val createToken = MfaCreateToken(singleUse = true)
Passkeys
UserPasskey
Represents a user’s passkey.
data class UserPasskey(
val id: String,
val createdAt: String, // ISO format
val lastUsedAt: String?, // ISO format (optional)
val isDefault: Boolean?
)
Example
val passkeys = sdk.passkeys.getPasskeys()
passkeys.forEach { passkey ->
println("ID: ${passkey.id}")
println("Created: ${passkey.createdAt}")
println("Last used: ${passkey.lastUsedAt}")
println("Is default: ${passkey.isDefault}")
}
DeletePasskeyRequest
Request to delete a passkey.
data class DeletePasskeyRequest(
val passkeyId: String
)
Example
sdk.passkeys.deletePasskey(
DeletePasskeyRequest(passkeyId = "passkey-id")
)
PasskeyAuthenticationResponse
Response from passkey MFA authentication.
data class PasskeyAuthenticationResponse(
val jwt: String? // MFA token
)
Example
val response = sdk.passkeys.authenticatePasskeyMFA(
createMfaToken = MfaCreateToken(singleUse = true),
relatedOriginRpId = null
)
println("MFA Token: ${response.jwt}")
Error Handling
All SDK methods that can fail will throw exceptions. Use standard Kotlin error handling:
try {
sdk.auth.email.verifyOTP(code)
} catch (e: Exception) {
Log.e("SDK", "Error: ${e.message}")
}
For suspend functions in coroutines:
viewModelScope.launch {
try {
val wallets = sdk.wallets.userWallets
} catch (e: Exception) {
errorMessage.value = "Failed: ${e.message}"
}
}