name, email, walletAddress, externalId, clerkUserId) and traits. They are normally created automatically through identify() and the Events API — the explicit REST surface below is provided for management and reconciliation.
User object
List users
GET /api/v1/users
Auth: legacy api_… key or dashboard session.
Create a user
POST /api/v1/users
Auth: legacy api_… key or dashboard session.
string
required
The company to attach the user to (
cm_…). Must already exist in your team and environment.string
Your system’s external user ID (max 64 chars). Stored as
externalId.string
User wallet address.
string
Optional Clerk user ID.
string
Display name (max 128 chars).
string
Email address (validated).
object
Arbitrary key-value metadata.
201 with the created user. A duplicate match returns 409 with the existing userId.
Prefer
identify() over direct user creation. POST /api/v1/access-tokens (the Node SDK’s identify()) upserts both company and user in one call and returns the embed token your frontend needs. The direct users endpoint is for bulk imports and reconciliation.Related
- Create an access token —
identify()creates users implicitly - The Event object — identify events upsert users
- The Company object — the parent entity

