PartnerAccountService creates sub-account profiles linked to the authenticated partner. Requires HMAC authentication with the account_creation scope. Server-wallet mode (createServerWallet: true) additionally requires the delegated_signing scope; without it the call returns 403.
Access
Server wallet mode
Creates a managed Privy wallet for the sub-account. Enables delegated signing — the partner submits unsigned orders and the server signs them.Requires both
account_creation and delegated_signing scopes on the token.Check new server wallets with
checkAllowances() before the first delegated trade. If retryable targets are missing or failed, call retryAllowances() and poll again.List and recover sub-accounts
UselistAccounts() to list partner-owned sub-accounts or recover a specific child profile by wallet address. This calls GET /profiles/partner-accounts and requires HMAC credentials with the account_creation scope.
Allowance recovery
Server-wallet sub-accounts need delegated-trading approvals before they can trade. The partner allowance helpers use the Partner API only:checkAllowances(profileId)callsGET /profiles/partner-accounts/:profileId/allowancesretryAllowances(profileId)callsPOST /profiles/partner-accounts/:profileId/allowances/retry- both methods require HMAC credentials with
account_creationanddelegated_signing profileIdis the child/server-wallet profile id
- Poll
checkAllowances(profileId). - If
ready === true, continue. - If targets are
missingorfailedwithretryable === true, callretryAllowances(profileId). - If retry returns
submittedtargets, pollcheckAllowances()again after a short delay. - If retry returns
429, waitretryAfterSeconds. - If retry returns
409, wait briefly and callcheckAllowances()again.
Withdrawal address allowlist
You must allowlist explicit treasury destinations for server-wallet withdrawals on the authenticated partner profile unless the destination is already the partner account or partner smart wallet. Allowlist management uses a Privy identity token, not API-token/HMAC auth.addWithdrawalAddress() and deleteWithdrawalAddress() call POST /portfolio/withdrawal-addresses and DELETE /portfolio/withdrawal-addresses/:address with the identity: Bearer <token> header. POST /portfolio/withdraw still uses HMAC auth with the withdrawal scope.EOA mode
Creates a profile for an externally-owned address. The end user manages their own keys and signs orders themselves. EOA mode requires wallet ownership verification headers:Validation
displayNameis optional, max 44 characters. Defaults to the wallet address if omitted.- Returns
409 Conflictif a profile already exists for the target address. - Cannot create a sub-account for the partner’s own address.
- The SDK validates
displayNamelength locally before sending the request.