Consolidated endpoint for user/business transactions. Use role parameter to filter: SENDER (sent), RECIPIENT (received), or omit for all transactions. Supports full pagination and filtering.
PERS-api Documentation (2.0.12)
PERS API Documentation
This RESTful API enables seamless integration of Web3 loyalty, token management, and engagement features into your applications.
Usage Guidelines:
- RESTful Design: Resources are accessed via standard HTTP methods (GET, POST, PUT, DELETE) with predictable, resource-oriented URLs.
- Authentication: Secure access is enforced via Bearer Tokens (JWT) and Project Keys (defining the Tenant context).
- Data Format: All requests and responses utilize standard JSON formatting.
Explore the modules below for detailed endpoint specifications, schemas, and testing capabilities.
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/me
- Production APIhttps://api.pers.ninja/v2/transactions/me
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/transactions/me?search=string&participantAddress=string&tokenAddress=string&page=0&limit=0&sortBy=string&sortOrder=ASC&dateFrom=string&dateTo=string&type=MINT&status=created&role=SENDER' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Request
Get transactions with comprehensive filtering options: - search: Wildcard search for ID, address or transaction hash - participantId: Filter by user/business/tenant ID - role: Filter by SENDER, RECIPIENT, or both (omit for all) - status: Filter by transaction status - tokenType: Filter by token type - type: Filter by transaction type (MINT, BURN, TRANSFER) - Standard pagination parameters supported
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions
- Production APIhttps://api.pers.ninja/v2/transactions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/transactions?search=string&participantId=string&participantAddress=string&tokenAddress=string&page=0&limit=0&sortBy=string&sortOrder=ASC&dateFrom=string&dateTo=string&type=MINT&status=created&role=SENDER' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Request
Create any type of transaction (MINT/TRANSFER/BURN) using role-based trigger detection. Sender will be determined based on the authentication context or provided explicitly (Pending verification). Depending on transaction type and signing context will either return a prepared transaction for client-side signing or execute server-side directly.
Transaction type for easier detection and routing
Transaction sender, will be resolved from auth context if not provided. if provided and different from auth user, signing capabilities will be checked or transaction will be rejected.
Token identification with multiple resolution strategies. If not provided, defaults to active credit token.
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions
- Production APIhttps://api.pers.ninja/v2/transactions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.pers.ninja/_mock/swagger/transactions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"web3TransactionType": "TRANSFER",
"sender": {
"accountId": "user123",
"accountType": "user",
"accountAddress": "0x742d35Cc5dB3dC0F0e8f0b0d2fA0c3fA2ed5D0f8"
},
"recipient": {
"accountId": "user123",
"accountType": "user",
"accountAddress": "0x742d35Cc5dB3dC0F0e8f0b0d2fA0c3fA2ed5D0f8"
},
"token": {
"tokenDbId": "uuid-12345-67890",
"contractAddress": "0x742d35Cc5dB3dC0F0e8f0b0d2fA0c3fA2ed5D0f8",
"contractTokenId": "721",
"chainId": 1
},
"amount": 100
}'transaction created
Transaction details
Transaction token contract id, this is the blockchain contract id of the token
Trigger process type
Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)
Transaction status
Sender entity type (user, business, system etc.)
Recipient entity type (user, Business, system, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": 0, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": "string", "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": 0, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {} }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/{id}
- Production APIhttps://api.pers.ninja/v2/transactions/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/transactions/{id}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Transaction found
Transaction token contract id, this is the blockchain contract id of the token
Trigger process type
Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)
Transaction status
Sender entity type (user, business, system etc.)
Recipient entity type (user, Business, system, etc.)
{ "amount": 0, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": "string", "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": 0, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {} }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/{id}/prepare
- Production APIhttps://api.pers.ninja/v2/transactions/{id}/prepare
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/transactions/{id}/prepare' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Transaction prepared successfully
Transaction details
Transaction token contract id, this is the blockchain contract id of the token
Trigger process type
Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)
Transaction status
Sender entity type (user, business, system etc.)
Recipient entity type (user, Business, system, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": 0, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": "string", "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": 0, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {} }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
Transaction format type for submission
EIP-712 structured data for smart wallet meta-transactions (required when type is EIP-712)
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/submit
- Production APIhttps://api.pers.ninja/v2/transactions/submit
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.pers.ninja/_mock/swagger/transactions/submit \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"transactionId": "string",
"type": "legacy",
"signature": "0x1234567890abcdef...",
"signedTransaction": "0xf86c0a8255f0..."
}'Transaction submitted successfully
Transaction details
Transaction token contract id, this is the blockchain contract id of the token
Trigger process type
Trigger process id, this is the id of the entity that triggered the transaction if applicable (e.g. CampaignUserClaim id)
Transaction status
Sender entity type (user, business, system etc.)
Recipient entity type (user, Business, system, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": 0, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": "string", "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": 0, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {} }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/export/csv
- Production APIhttps://api.pers.ninja/v2/transactions/export/csv
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://docs.pers.ninja/_mock/swagger/transactions/export/csv \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'"string"
Analytics configuration with filters, grouping, and metrics
Dynamic filters based on TransactionDTO fields - all transaction fields available
Fields to group by - any TransactionDTO field plus computed time fields
Complex CASE WHEN expressions for advanced grouping scenarios
Field to order results by (supports expression aliases)
Field to order results by (supports expression aliases)
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/analytics
- Production APIhttps://api.pers.ninja/v2/transactions/analytics
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.pers.ninja/_mock/swagger/transactions/analytics \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"filters": {
"status": "SUCCEEDED",
"tokenType": "STAMP"
},
"groupBy": [
"month"
],
"metrics": [
"count"
],
"sortBy": "count",
"sortOrder": "DESC",
"limit": 12
}'{ "results": [ { … }, { … }, { … } ], "totalGroups": 3, "metadata": { "executionTime": "45ms" } }