Accounts

Create account

POSThttps://api.firstleeward.com/v0/accounts

Creates a new account for the given owner. Set ownerType to USER (default) or COMPANY (corporate programs only) to choose the owner type. The owner must have an approved application (KYC for users, KYB for companies). For projects that provision user wallets (USER_FUNDED funding model), deposit addresses are created on all enabled chains and signer data is required (address + signed auth message from GET /accounts/auth-message). For projects without user wallets (PROGRAM_FUNDED funding model), no deposit addresses are provisioned and signers are not required.

Authorizations

Authorizationstring · headerrequired

API key as Bearer token, e.g. Bearer YOUR_API_KEY

Headers

Leeward-Versionenum<string>required

API version (YYYY-MM-DD). Available option: 2026-09-18

Idempotency-Keystringrequired

Unique key for safely retrying this request. Up to 255 characters; we recommend a UUIDv4. The first request executes and its response is cached; subsequent requests with the same key replay the cached response (24h retention).

Body

application/json

ownerTypestringdefault: "USER"

Owner type for the account. USER creates a user-owned account; COMPANY creates a company-owned account, available in corporate programs only. Defaults to USER when omitted.

Available options:USERCOMPANY
ownerIdstring<uuid>required

Owner entity ID. A user ID when ownerType is USER, or a company ID when ownerType is COMPANY.

signersobject

Signer configurations per protocol. Required for projects that provision user wallets (USER_FUNDED funding model); omitted for projects without user wallets (PROGRAM_FUNDED). The signer authorizes withdrawals from the account. Use GET /accounts/auth-message to get the message to sign.

Show child attributes
evmobject

EVM signer configuration

Show child attributes
addressstringrequired

Signer address

messagestringrequired

Auth message (JSON string from GET /accounts/auth-message)

signaturestringrequired

Signature of the auth message, proving key ownership

svmobject

SVM signer configuration

Show child attributes
addressstringrequired

Signer address

messagestringrequired

Auth message (JSON string from GET /accounts/auth-message)

signaturestringrequired

Signature of the auth message, proving key ownership

Response

200Response for status 200
idstring<uuid>required

Unique account identifier

statusstringrequired

Current account status

Available options:ACTIVERESTRICTED
ownerTypestringrequired

Type of entity that owns this account

Available options:USERCOMPANYPROJECT
ownerIdstring<uuid> | nullrequired

Owner entity ID (user or company). Null for PROJECT-owned master accounts.

chainAddressesobject[]required

Deposit addresses by chain. Empty for accounts without provisioned wallets (user accounts on PROGRAM_FUNDED projects).

Show child attributes
chainIdstringrequired

Blockchain network identifier

Available options:ETHEREUM_MAINNETETHEREUM_SEPOLIABASE_MAINNETBASE_SEPOLIAARBITRUM_ONE_MAINNETARBITRUM_ONE_SEPOLIAPOLYGON_MAINNETPOLYGON_AMOYSOLANA_MAINNETSOLANA_DEVNET
addressstringrequired

Deposit address on this chain

createdAtstringrequired

ISO 8601 timestamp of creation

updatedAtstringrequired

ISO 8601 timestamp of last update

400Response for status 400
Option 1 · InvalidAccountOwnerError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 2 · CompanyAccountNotAllowedError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 3 · UserNotApprovedError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 4 · CompanyNotActiveError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 5 · MissingSignerError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 6 · SignerExpiredError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 7 · SignerInvalidDomainError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 8 · SignerInvalidMessageFormatError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 9 · SignerInvalidSignatureError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired
Option 10 · SignerInvalidAddressError
errorobjectrequired
Show child attributes
codestringrequired
messagestringrequired
detailobject | nullrequired