Skip to content

Sell a paper prop account from a template

create-prop provisions the account, the prop account and the paper trading state in one transaction. When this is done a trader has an active evaluation they can place orders against immediately — no agreement step, no deposit.

  1. You need two ids from the same row: the template id and the firm that owns it, propTenantId. Only active templates can be sold.

    Terminal window
    curl -s "https://api.troncharts.xyz/api/v1/prop-templates?activeOnly=true" \
    -H "authorization: Bearer $TOKEN" \
    -H "x-tenant-slug: $TC_TENANT_SLUG"
    # → { "templates": [ { "id": "acme-25k-two-step", "propTenantId": "…", … } ] }
  2. A bearer credential has no user session, so it must name the user the new account belongs to. ownerUserId must be a user in your tenant — omit it and you get 400 owner_user_required; pass a stranger’s id and you get 404 owner_user_not_found.

  3. propTenantId must be a UUID (the firm id from step 1). baselineUsd seeds the simulated cash balance and defaults to 10000 — it is separate from the template’s accountSizeUsd, which is what the rules judge. Pass it explicitly if you want the two to match.

    Terminal window
    curl -s https://api.troncharts.xyz/api/v1/accounts/create-prop \
    -H "authorization: Bearer $TOKEN" \
    -H "x-tenant-slug: $TC_TENANT_SLUG" \
    -H 'content-type: application/json' \
    -d '{
    "templateId": "acme-25k-two-step",
    "propTenantId": "'"$FIRM_ID"'",
    "mode": "paper",
    "ownerUserId": "'"$USER_ID"'",
    "displayName": "Acme 25K — run 1"
    }'
    # → 201 { "mode": "paper", "accountId": "…", "accountNumber": "100042",
    # "propAccount": { "status": "active", "startedAt": "…", … } }

    The prop account lands status: 'active' with startedAt set. Rejections to expect: 404 template_not_found, 400 template_inactive, and 400 template_mode_unsupported when the template is marked live-only.

  4. Paper accounts are resettable: balance and positions go back to the account size, breach state clears, and the evaluation window restarts at its original length. Live and funded accounts reject with 400 not_paper.

    Terminal window
    curl -s -X POST https://api.troncharts.xyz/api/v1/prop-accounts/$PROP_ACCOUNT_ID/reset \
    -H "authorization: Bearer $TOKEN" \
    -H "x-tenant-slug: $TC_TENANT_SLUG"

Next: Create a challenge template · Prop account model · Launch a prop firm