Accounts
Create account
https://api.firstleeward.com/v0/accountsCreates 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 · headerrequiredAPI key as Bearer token, e.g. Bearer YOUR_API_KEY
Headers
Leeward-Versionenum<string>requiredAPI version (YYYY-MM-DD). Available option: 2026-09-18
Idempotency-KeystringrequiredUnique 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.
USERCOMPANYownerIdstring<uuid>requiredOwner entity ID. A user ID when ownerType is USER, or a company ID when ownerType is COMPANY.
signersobjectSigner 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
evmobjectEVM signer configuration
Show child attributes
addressstringrequiredSigner address
messagestringrequiredAuth message (JSON string from GET /accounts/auth-message)
signaturestringrequiredSignature of the auth message, proving key ownership
svmobjectSVM signer configuration
Show child attributes
addressstringrequiredSigner address
messagestringrequiredAuth message (JSON string from GET /accounts/auth-message)
signaturestringrequiredSignature of the auth message, proving key ownership
Response
200Response for status 200
idstring<uuid>requiredUnique account identifier
statusstringrequiredCurrent account status
ACTIVERESTRICTEDownerTypestringrequiredType of entity that owns this account
USERCOMPANYPROJECTownerIdstring<uuid> | nullrequiredOwner entity ID (user or company). Null for PROJECT-owned master accounts.
chainAddressesobject[]requiredDeposit addresses by chain. Empty for accounts without provisioned wallets (user accounts on PROGRAM_FUNDED projects).
Show child attributes
chainIdstringrequiredBlockchain network identifier
ETHEREUM_MAINNETETHEREUM_SEPOLIABASE_MAINNETBASE_SEPOLIAARBITRUM_ONE_MAINNETARBITRUM_ONE_SEPOLIAPOLYGON_MAINNETPOLYGON_AMOYSOLANA_MAINNETSOLANA_DEVNETaddressstringrequiredDeposit address on this chain
createdAtstringrequiredISO 8601 timestamp of creation
updatedAtstringrequiredISO 8601 timestamp of last update
400Response for status 400
Option 1 · InvalidAccountOwnerError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 2 · CompanyAccountNotAllowedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 3 · UserNotApprovedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 4 · CompanyNotActiveError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 5 · MissingSignerError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 6 · SignerExpiredError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 7 · SignerInvalidDomainError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 8 · SignerInvalidMessageFormatError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 9 · SignerInvalidSignatureError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 10 · SignerInvalidAddressError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired