Skip to content
Download OpenAPI description
Overview
Languages
Servers
Mock server

https://docs.pers.ninja/_mock/swagger/

https://api.pers.ninja/v2/

Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations

User Account Management

User account management and profile operations for loyalty platform participants. Handles user registration, authentication, profile management, and account lifecycle.
**User Operations:**

• **Account Registration:** User signup and profile creation with verification

• **Authentication:** Secure login and session management

• **Profile Management:** User profile updates and preference configuration

• **Account Security:** Password management and two-factor authentication

• **Privacy Controls:** Data management and privacy settings for users

Request

Get authenticated user account info without balances

Security
projectKey or authUserJWT
curl -i -X GET \
  https://docs.pers.ninja/_mock/swagger/users/me \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User found

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }

Request

Update authenticated user account

Security
projectKey or authUserJWT
Bodyapplication/jsonrequired
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 PUT \
  https://docs.pers.ninja/_mock/swagger/users/me \
  -H 'Content-Type: application/json' \
  -H 'x-project-key: YOUR_API_KEY_HERE' \
  -d '{
    "email": "string",
    "instagramAccountId": "string",
    "googleAccountName": "string",
    "firstName": "string",
    "lastName": "string",
    "externalId": "string",
    "customData": {},
    "publicProfile": {},
    "isActive": true
  }'

Responses

User updated

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }

Request

Get authenticated user account with current token balances

Security
projectKey or authUserJWT
curl -i -X GET \
  https://docs.pers.ninja/_mock/swagger/users/me/balance \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User found

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

tokenBalancesArray of objects(AccountTokenBalancesDTO)required
tokenBalances[].​accountAddressstringrequired
tokenBalances[].​tokenBalancesArray of objects(TokenBalanceDTO)required
tokenBalances[].​tokenBalances[].​contractAddressstringrequired
tokenBalances[].​tokenBalances[].​chainIdnumberrequired
tokenBalances[].​tokenBalances[].​balancenumberrequired
tokenBalances[].​tokenBalances[].​tokenNamestring
tokenBalances[].​tokenBalances[].​tokenSymbolstring
tokenBalances[].​tokenBalances[].​tokenTypestringrequired
tokenBalances[].​tokenBalances[].​tokenIdstring or nullrequired
tokenBalances[].​tokenBalances[].​metadataUristring or nullrequired
accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ], "tokenBalances": [ { … } ] }

Request

Get authenticated user status types

Security
projectKey or authUserJWT
curl -i -X GET \
  https://docs.pers.ninja/_mock/swagger/users/me/status \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User status found

Bodyapplication/jsonArray [
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

idnumberrequired

User Status Type id

eligibleTokenAddressesArray of stringsrequired

User Status Type eligible Token Addresses

]
Response
application/json
[ { "name": "string", "description": "string", "minTokenBalance": 0, "discountPercentage": 0, "imageUrl": "string", "id": 0, "eligibleTokenAddresses": [ … ] } ]

Request

Check if a user exists using any identifier field (id, email, etc.)

Security
projectKey
Query
filterValuestringrequired

Value to search for

filterKeystring

Field to use for identification (id, email, instagramAccountId, etc.)

Enum"id""email""instagramAccountId""externalId"
curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users/exists?filterValue=string&filterKey=id' \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User existence check result

Bodyapplication/json
existsboolean
Example: true
identifierstring
Example: "email"
Response
application/json
{ "exists": true, "identifier": "email" }

Request

Get all public user profiles

Security
projectKey
Query
filterKeystring

Property key in publicProfile to filter by

filterValuestring

Value to match in the publicProfile property

curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users/public?filterKey=string&filterValue=string' \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

Public profiles

Bodyapplication/jsonArray [
idstringrequired
publicProfileobjectrequired

Public profile data

]
Response
application/json
[ { "id": "string", "publicProfile": {} } ]

Request

Get a public profile by user ID

Security
projectKey
Path
idstringrequired
curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users/public/{id}' \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

Public profile

Bodyapplication/json
idstringrequired
publicProfileobjectrequired

Public profile data

Response
application/json
{ "id": "string", "publicProfile": {} }

Request

Get all available user status types

Security
projectKey
curl -i -X GET \
  https://docs.pers.ninja/_mock/swagger/users/status-types \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User status types

Bodyapplication/jsonArray [
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

idnumberrequired

User Status Type id

eligibleTokenAddressesArray of stringsrequired

User Status Type eligible Token Addresses

]
Response
application/json
[ { "name": "string", "description": "string", "minTokenBalance": 0, "discountPercentage": 0, "imageUrl": "string", "id": 0, "eligibleTokenAddresses": [ … ] } ]

Request

Create user status type as admin

Security
tenantAdminJWT
Bodyapplication/jsonrequired
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

curl -i -X POST \
  https://docs.pers.ninja/_mock/swagger/users/status-types \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "string",
    "description": "string",
    "minTokenBalance": 0,
    "discountPercentage": 0,
    "imageUrl": "string"
  }'

Responses

User status type created

Bodyapplication/json
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

idnumberrequired

User Status Type id

eligibleTokenAddressesArray of stringsrequired

User Status Type eligible Token Addresses

Response
application/json
{ "name": "string", "description": "string", "minTokenBalance": 0, "discountPercentage": 0, "imageUrl": "string", "id": 0, "eligibleTokenAddresses": [ "string" ] }

Request

Get a user status type by ID

Security
projectKey
Path
idstringrequired
curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users/status-types/{id}' \
  -H 'x-project-key: YOUR_API_KEY_HERE'

Responses

User status type

Bodyapplication/json
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

idnumberrequired

User Status Type id

eligibleTokenAddressesArray of stringsrequired

User Status Type eligible Token Addresses

Response
application/json
{ "name": "string", "description": "string", "minTokenBalance": 0, "discountPercentage": 0, "imageUrl": "string", "id": 0, "eligibleTokenAddresses": [ "string" ] }

Update eligible token for status type

Request

Add or remove eligible token for user status type as admin

Security
tenantAdminJWT
Path
idstringrequired
tokenAddressstringrequired
curl -i -X PUT \
  'https://docs.pers.ninja/_mock/swagger/users/status-types/{id}/eligible-tokens/{tokenAddress}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

User status type updated

Bodyapplication/json
namestringrequired

User Status Type name

descriptionstring

User Status Type description

minTokenBalancenumberrequired

User Status Type eligible Token Addresses

discountPercentagenumberrequired

User Status Type discount Rate in percentage

imageUrlstring

User Status Type image Url

idnumberrequired

User Status Type id

eligibleTokenAddressesArray of stringsrequired

User Status Type eligible Token Addresses

Response
application/json
{ "name": "string", "description": "string", "minTokenBalance": 0, "discountPercentage": 0, "imageUrl": "string", "id": 0, "eligibleTokenAddresses": [ "string" ] }

Request

Get user account info without balances (business with user management permission OR admin authentication required)

Security
tenantAdminJWT or projectKey
Bodyapplication/jsonrequired
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/info \
  -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 found

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }

Request

Get user account with current token balances (business with user management permission OR admin authentication required)

Security
tenantAdminJWT or projectKey
Bodyapplication/jsonrequired
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/balance \
  -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 found

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

tokenBalancesArray of objects(AccountTokenBalancesDTO)required
tokenBalances[].​accountAddressstringrequired
tokenBalances[].​tokenBalancesArray of objects(TokenBalanceDTO)required
tokenBalances[].​tokenBalances[].​contractAddressstringrequired
tokenBalances[].​tokenBalances[].​chainIdnumberrequired
tokenBalances[].​tokenBalances[].​balancenumberrequired
tokenBalances[].​tokenBalances[].​tokenNamestring
tokenBalances[].​tokenBalances[].​tokenSymbolstring
tokenBalances[].​tokenBalances[].​tokenTypestringrequired
tokenBalances[].​tokenBalances[].​tokenIdstring or nullrequired
tokenBalances[].​tokenBalances[].​metadataUristring or nullrequired
accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ], "tokenBalances": [ { … } ] }

Request

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

Security
tenantAdminJWT 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 '{}'

Responses

User(s) created/updated

Bodyapplication/json
One of:
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
[]

Request

Get all users with role-based access. Project API key users get public profiles only. Admin users get full access with query parameters.

Security
tenantAdminJWT or projectKey
Query
sanitizestring

Sanitize user models: soft checks for current wallet address, hard overwrites wallet in case of update (use with caution, admin only)

mergestring

Merge user models: soft checks for current wallet address, hard overwrites wallet in case of update (use with caution, admin only)

curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users?sanitize=string&merge=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Users found

Bodyapplication/jsonArray [
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

]
Response
application/json
[ { "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ … ] } ]

Request

Get user by any identifier field (admin only)

Security
tenantAdminJWT
Path
idstringrequired
curl -i -X GET \
  'https://docs.pers.ninja/_mock/swagger/users/{id}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

User found

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }

Request

Update user account as admin

Security
tenantAdminJWT
Path
idstringrequired
Bodyapplication/jsonrequired
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 PUT \
  'https://docs.pers.ninja/_mock/swagger/users/{id}' \
  -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 updated

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }

Request

Create user accounts from external URL as admin

Security
tenantAdminJWT
Bodyapplication/jsonrequired
urlstringrequired
Example: "https://example.com/user-data"
curl -i -X POST \
  https://docs.pers.ninja/_mock/swagger/users/bulk/url \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com/user-data"
  }'

Responses

Users created

Bodyapplication/jsonArray [
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

]
Response
application/json
[ { "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ … ] } ]

Request

Toggle user active status as admin

Security
tenantAdminJWT
Path
idstringrequired
curl -i -X PUT \
  'https://docs.pers.ninja/_mock/swagger/users/{id}/status' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

User status updated

Bodyapplication/json
idstringrequired
emailobject
firstNameobject or nullrequired

User first name

lastNameobject or nullrequired

User last name

externalIdobject or nullrequired

User external id

instagramAccountIdobject or nullrequired

Instagram account id

googleAccountNameobject or nullrequired

Google account name

customDataobjectrequired

Custom data

publicProfileobject or nullrequired

Public profile data

isActivebooleanrequired

Is active

currentSigningAccountIdobject

Current active signing account ID for external wallet operations

walletsArray of objects(WalletDTO)required

User-owned counterfactual smart contract wallets that can receive tokens

wallets[].​idstringrequired

Unique identifier for the internal wallet

wallets[].​ownerTypenumberrequired

Owner type for polymorphic ownership

Value{"USER":"user","BUSINESS":"business","TENANT":"tenant","SYSTEM":"system","EXTERNAL":"external"}
Example: "user"
wallets[].​ownerIdstringrequired

Owner ID for polymorphic ownership

Example: "user_123"
wallets[].​walletManagementTypenumberrequired

Type of internal wallet

Value{"CUSTODIAL":"custodial","NON_CUSTODIAL":"non-custodial"}
wallets[].​addressstringrequired

CREATE2 generated address that can receive tokens

wallets[].​chainIdnumberrequired

Blockchain network chain identifier

wallets[].​statusnumberrequired

Current status of the wallet

Value{"PENDING":"pending","ACTIVE":"active","SUSPENDED":"suspended","ARCHIVED":"archived"}
wallets[].​saltstringrequired

CREATE2 salt used for deterministic address generation

wallets[].​ownerSigningAccountIdobject or null

ID of signing account that owns this internal wallet

wallets[].​tagsArray of stringsrequired

Tags associated with the wallet for categorization

wallets[].​createdAtstring(date-time)required

Timestamp when the wallet was created

wallets[].​updatedAtstring(date-time)required

Timestamp when the wallet was last updated

accountAddressobject or nullDeprecatedrequired

User account address

Response
application/json
{ "id": "string", "email": {}, "firstName": {}, "lastName": {}, "externalId": {}, "accountAddress": {}, "instagramAccountId": {}, "googleAccountName": {}, "customData": {}, "publicProfile": {}, "isActive": true, "currentSigningAccountId": {}, "wallets": [ { … } ] }
Operations
Operations
Operations
Operations
Operations
Operations