PartnerAccountService creates sub-account profiles linked to the authenticated partner. It requires HMAC authentication with the account_creation scope.
Access
Server wallet mode
Setcreate_server_wallet to create a managed wallet for the sub-account. This enables delegated signing:
New server wallets should be checked with
check_allowances before the first delegated trade. If retryable targets are missing or failed, call retry_allowances and poll again.List and recover sub-accounts
Uselist_accounts 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:check_allowances(profile_id)callsGET /profiles/partner-accounts/:profileId/allowancesretry_allowances(profile_id)callsPOST /profiles/partner-accounts/:profileId/allowances/retry- both methods require HMAC credentials with
account_creationanddelegated_signing profile_idis the child/server-wallet profile id
- Poll
check_allowances(profile_id). - If
ready == true, continue. - If targets are
missingorfailedwithretryable == true, callretry_allowances(profile_id). - If retry returns
submittedtargets, pollcheck_allowancesagain after a short delay. - If retry returns
429, waitretryAfterSeconds. - If retry returns
409, wait briefly and callcheck_allowancesagain.
Withdrawal address allowlist
Explicit treasury destinations for server-wallet withdrawals must be allowlisted 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.add_withdrawal_address and delete_withdrawal_address 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
For externally-owned accounts, pass ownership-verification headers:Validation
display_nameis optional and capped at 44 characters- when
create_server_walletis notSome(true), EOA headers are required - the SDK validates
display_namelength locally before sending the request 409 Conflictis returned if a profile already exists for the target address