Skip to content

Create or update user account

Request

Create or update user account(s). Supports single user (business/admin) or bulk operations (admin only)

Security
authJWT or projectKey
Bodyapplication/jsonrequired

Single user object or array of users (bulk operations require admin authentication)

One of:
emailstring
instagramAccountIdstring

User Instagram account id

googleAccountNamestring

User Google account name

firstNamestring

User first name

lastNamestring

User last name

externalIdstring

User external id

customDataobject

Custom data

publicProfileobject

Public profile data

isActiveboolean

User active status

curl -i -X POST \
  https://docs.pers.ninja/_mock/swagger/users \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "string",
    "instagramAccountId": "string",
    "googleAccountName": "string",
    "firstName": "string",
    "lastName": "string",
    "externalId": "string",
    "customData": {},
    "publicProfile": {},
    "isActive": true
  }'

Responses

User(s) created/updated

Bodyapplication/json
One of:
idstringrequired
emailstring
identifierEmailstringrequired

Universal identifier email for deterministic operations. Generated from B2B inputs (email, externalId) for wallet salt generation and external integrations.

Example:"user123@user.pers.internal"
firstNamestring or nullrequired

User first name

lastNamestring or nullrequired

User last name

externalIdstring or nullrequired

User external id

instagramAccountIdstring or nullrequired

Instagram account id

googleAccountNamestring or nullrequired

Google account name

customDataobject or nullrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdstring

Current active signing account ID for external wallet operations

walletsArray of objects(PublicWalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

createdAtstring, (date-time)required

Timestamp when the user was created

updatedAtstring or null, (date-time)required

Timestamp when the user was last updated

registrationSourceobject or null

Registration source tracking for analytics - captures channel and attribution when user was created

Example:
{ "channel": "web", "medium": "referral", "campaign": "launch_2026" }
lastActivityAtstring or null, (date-time)

Last activity timestamp. Updated whenever user generates tokens (login or refresh). Tracks last time user was active (~1 hour precision).

activityCountnumber

Total activity count. Increments on every token generation (login + refresh). Measures true user engagement.

Example:42
includedobject or null

Included related entities. Only populated when include parameter is specified.

accountAddressstring or nullrequireddeprecated

User account address

Response
{ "id": "string", "email": "string", "identifierEmail": "user123@user.pers.internal", "firstName": "string", "lastName": "string", "externalId": "string", "accountAddress": "string", "instagramAccountId": "string", "googleAccountName": "string", "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": "string", "wallets": [ { … } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "registrationSource": { "channel": "web", "medium": "referral", "campaign": "launch_2026" }, "lastActivityAt": "2019-08-24T14:15:22Z", "activityCount": 42, "included": { "statusTypes": [ … ], "tokenBalances": [ … ] } }