Skip to content

Managing users

You address every client by your own user_ref — your client code, CUID, whatever you already use. TradLyt mints an internal identity behind it and never receives the client's email: we generate a synthetic one from your user_ref.

The one exception is full_name, which is optional. Send it and we store it; omit it and we fall back to a non-identifying placeholder. If you'd rather TradLyt held no personal data about your clients at all, simply don't send it — everything else works identically.

Provision a user

Claims a seat and creates the behavioural profile. Idempotent — calling it again for an existing user_ref returns the same user with created: false and does not consume a second seat.

POST /users

Request body

Field Type Description
user_ref string Your identifier for the client (required).
full_name string Optional display name. The only field that can carry personal data — omit it and we store a non-identifying placeholder instead.
{ "user_ref": "CLIENT00423", "full_name": "optional display name" }

Response

{
  "user_ref": "CLIENT00423",
  "user_id": "b1e5…",
  "email": "[email protected]",
  "created": true,
  "seats_used": 41,
  "seats_available": 59
}
  • email is a synthetic address we mint internally — you never use it.
  • created is false when the user already existed (safe to call on every login).

Seat limit

When you're at your seat cap, provisioning a new user_ref returns 402 seat_limit_reached. Deprovision inactive clients to free seats, or contact TradLyt to increase your seat count. Re-provisioning an existing user never hits this.

Look up a user

GET /users/{user_ref}

{
  "user_ref": "CLIENT00423",
  "user_id": "b1e5…",
  "is_active": true,
  "last_active_at": "2026-10-29T05:56:47.685114+00:00"
}

user_id is TradLyt's internal id for the client (stable; useful for your own correlation). last_active_at updates whenever the user's data is touched (a trade sync or a pre-trade call), and is ISO-8601 with an explicit UTC offset. Returns 404 if the user_ref was never provisioned.

Deprovision a user

Deactivates the client and frees their seat. Idempotent.

DELETE /users/{user_ref}

{ "user_ref": "CLIENT00423", "deprovisioned": true, "seats_available": 60 }

History is retained

Deprovisioning only frees the seat — the client's behavioural history is kept. Re-provisioning the same user_ref later resumes exactly where they left off.