You're on the production developer portal. The interactive demo — signup, Sumsub KYC, the purchase flow, webhooks, and the trading dashboard — is disabled here because it would create real accounts. Test those flows in the sandbox against the staging API.

Flows

Account lifecycle

A prop account has five partner-visible states. Provisioning comes first — provisioning (row created, subaccount not yet confirmed) and subaccount_failed (the entity-miner call raised; the customer may already have been charged). Only once a subaccount exists does the trading cycle apply: evaluationfundedeliminated. Sync the latest state from the validator on demand.

Sync status

POST/v2/lifecycle/sync/{prop_account_id}
User session
curl
curl -X POST http://localhost:8000/v2/lifecycle/sync/prop_123 \
  -H "Authorization: Bearer <app_access_token>" \
  -H "X-Session-Token: <user_session_token>"
200 OK
{
  "prop_account_id": "prop_123",
  "status": "funded",
  "subaccount_id": 42,
  "synthetic_hotkey": "5F..."
}

Nothing updates status but this call

There is no passive update path. status changes only when you call POST /v2/lifecycle/sync/{prop_account_id}, once per account — nothing in the API updates it in the background, and there is no lifecycle webhook to subscribe to (the only events are payment.succeeded, payment.failed, kyc.updated, payout.completed and payout.failed). Schedule this yourself for every active prop account — after a trading session and on a recurring timer — or promotions and eliminations will never appear in your UI. The call is best-effort: if the validator lookup fails it returns 200 with the previous, unchanged status.

Sync only converges for provisioned accounts

Sync writes only the three trading states, and only for accounts that already have a synthetic_hotkey. Called on a provisioning or subaccount_failed account it returns 200 with that status unchanged and will never converge — branch on those two states instead of polling. Recover charged-but-unprovisioned accounts through GET /v2/payments/prop-accounts/failed.