Account API
User account management endpoints.
Create Account
Create a new trading account.
Endpoint: create_account(request: CreateAccountRequest) -> Result<()>
Request
ts
type CreateAccountRequest = record {
name: opt text;
referral_code: opt text;
};Example
typescript
const result = await backend.create_account({
name: ['My Trading Account'],
referral_code: ['REF001'],
})
if ('Ok' in result) {
console.log('Account created successfully')
}Get Account
Retrieve account information for the current principal.
Endpoint: account() -> Result<opt Account> (query)
Response
ts
type Account = record {
id: nat64;
name: text;
referral_code: text;
referrer_id: opt nat64;
preferences: Preferences;
is_frozen: bool;
verified_at: opt nat64;
total_deposits: nat64;
total_withdraws: nat64;
last_active_at: nat64;
created_at: nat64;
updated_at: nat64;
};
type Preferences = record {
language: text;
favorite_markets: vec text;
audio_notifications_enabled: bool;
mask_balances_enabled: bool;
dismissed_upsells: bool;
};Example
typescript
const result = await backend.account()
if ('Ok' in result && result.Ok[0]) {
const account = result.Ok[0]
console.log(`Account: ${account.name}`)
console.log(`Referral Code: ${account.referral_code}`)
console.log(`Created: ${new Date(Number(account.created_at))}`)
}Update Account
Update account information.
Endpoint: update_account(request: UpdateAccountRequest) -> Result<()>
Request
ts
type UpdateAccountRequest = record {
name: opt text;
};Example
typescript
await backend.update_account({
name: ['New Account Name']
})Get Risk Limits
Retrieve risk limit configuration for a market.
Endpoint: risk_limits(market_id: text) -> Result<RiskLimitConfig> (query)
Response
ts
type RiskLimitConfig = record {
max_order_size: opt nat64;
max_position: opt int64;
max_notional_per_order: opt nat64;
max_daily_volume: opt nat64;
max_daily_notional: opt nat64;
max_orders_per_second: opt nat64;
min_price: opt nat64;
max_price: opt nat64;
allowed_order_types: vec OrderType;
};Example
typescript
const limits = await backend.risk_limits('BTC/USDT')
if ('Ok' in limits) {
console.log(`Max order size: ${limits.Ok.max_order_size}`)
console.log(`Max position: ${limits.Ok.max_position}`)
}Subaccounts
Users can have up to 255 subaccounts for portfolio isolation.
Use Cases
- Trading Strategies: Separate subaccounts for different strategies
- Risk Isolation: Isolate funds for high-risk trades
- Portfolio Management: Organize assets by purpose
Example
typescript
// Get balances for all subaccounts
const balances = await backend.get_balances()
if ('Ok' in balances) {
balances.Ok.forEach(sub => {
console.log(`Subaccount ${sub.subaccount_id}:`)
// ... display balances
})
}
// Deposit to a specific subaccount
const address = await backend.get_deposit_address(
'BTC',
[{ Bitcoin: null }],
[1] // subaccount 1
)Referral System
Each account has a unique referral code that can be shared.
typescript
// Create account with referrer
await backend.create_account({
name: ['New Trader'],
referral_code: ['FRIEND123'], // referrer's code
})
// Get your referral code
const account = await backend.account()
if ('Ok' in account && account.Ok[0]) {
console.log(`Your referral code: ${account.Ok[0].referral_code}`)
}