Skip to main content
POST
/
profiles
/
partner-accounts
Create partner sub-account
curl --request POST \
  --url https://api.limitless.exchange/profiles/partner-accounts \
  --header 'Content-Type: application/json' \
  --header 'lmts-api-key: <api-key>' \
  --data '
{
  "displayName": "user-alice",
  "createServerWallet": false
}
'
{
  "profileId": 789,
  "account": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
}
Requires HMAC authentication with the account_creation scope. API key auth and Privy auth are not accepted.
Creates a new sub-account profile linked to the authenticated partner.

Server wallet mode

Set createServerWallet: true to create a Privy server wallet for the sub-account. This enables delegated signing — the partner can submit unsigned orders and the server signs them using the managed wallet.
{
  "displayName": "user-bob",
  "createServerWallet": true
}

EOA mode

Omit createServerWallet (or set it to false) to create an account for an externally-owned address. The end user manages their own keys and signs their own orders. EOA mode requires three additional headers for wallet ownership verification:
HeaderDescription
x-accountChecksummed Ethereum address (EIP-55)
x-signing-messageHex-encoded signing message
x-signatureHex-encoded signature from the wallet
{
  "displayName": "user-alice"
}

Constraints

  • displayName is optional (max 44 characters). Defaults to the wallet address if omitted.
  • Returns 409 Conflict if a profile already exists for the target address.
  • Cannot create a sub-account for the partner’s own address.

Authorizations

lmts-api-key
string
header
required

Scoped API token with HMAC-SHA256 signing. Requires three headers: lmts-api-key (token ID), lmts-timestamp (ISO-8601), lmts-signature (Base64-encoded HMAC). See Authentication docs for details.

Headers

x-account
string

EOA mode only. Checksummed Ethereum address of the sub-account wallet.

x-signing-message
string

EOA mode only. Hex-encoded signing message.

x-signature
string

EOA mode only. Hex-encoded signature from the sub-account wallet.

Body

application/json
displayName
string

Public display name for the sub-account. Defaults to the wallet address if omitted.

Maximum string length: 44
Example:

"user-alice"

createServerWallet
boolean
default:false

If true, creates a Privy server wallet for the sub-account (enables delegated signing). If false or omitted, requires EOA wallet ownership headers.

Response

Sub-account created

profileId
integer
required

Profile ID of the created sub-account

Example:

789

account
string
required

Wallet address of the created sub-account

Example:

"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"