Bulk-create unlinked accounts with import keys
Create up to 100 unlinked accounts in one call — for giveaways, competitions, or pre-provisioning inventory.
Every account is created with:
- no trader attached (
userId: null) - its own one-time
importKey(serial-key style, e.g.HP-7K3QF-9XT2M-4WHRD) not_startedstatus- no billing and no CME entitlement — both start only when a key is redeemed
Hand each importKey to a customer; they redeem it inside the Hyperprop app under Trading Accounts → Import. Each redemption fires an account.imported webhook with the redeemer’s email, the key, and a timestamp — your verification trail.
customerIdPrefix is required: each account gets a sequential customerId (promo-summer-001, promo-summer-002, …) you can query later via GET /trading-accounts?customerId=....
Soulbound note: identity bindings are keyed on customerId, and sequential prefix ids give every account a different placeholder customer — right for giveaways where each key goes to a different winner (each redemption creates its own binding). If several accounts in a batch are for the SAME customer, PATCH their customerId to that customer’s real ID after creation so all their imports enforce one shared Hyperprop login.
List remaining unredeemed accounts (keys included) anytime with GET /trading-accounts?unlinked=true.
An account.created webhook fires for each account with data.importKey, data.metadata.unlinked: true, and a shared batch_id.
Permissions: organization admins only.
Error codes: VALIDATION_ERROR, PLAN_NOT_FOUND, PLAN_NOT_ACTIVE, NO_TRADING_RULE, RULE_NOT_FOUND, BULK_CREATE_ERROR.
Authorizations
JWT Bearer token for user session auth. Format: "Bearer {token}". Used by User and Organization endpoints.
Body
How many unlinked accounts to create (1-100 per call)
1 <= x <= 10025
Account type for every account in the batch
evaluation, sim_funded, competition "evaluation"
Trading plan for every account in the batch
"550e8400-e29b-41d4-a716-446655440000"
Override the plan's default rule (optional)
Starting balance (defaults to the plan's account size)
50000
REQUIRED. Each account gets customerId {prefix}-001, {prefix}-002, ... — one placeholder customer per account (right for giveaways where every key goes to a different winner). PATCH the real customerId onto an account once you know who it belongs to.
200"promo-summer"
DEPRECATED alias for customerIdPrefix — accepted for backward compatibility only.
200"promo-summer"
Custom metadata applied to every account in the batch
Related topics
Create a trading accountUnlink a trader (issues a fresh import key)Import a trading account with an import keyImport demo accountRegister a webhook endpoint