Consolidated endpoint for user/business transactions. Use role parameter to filter: SENDER (sent), RECIPIENT (received), or omit for all transactions. Use include parameter to enrich with full entity data. Always returns PaginatedResponseDTO.
PERS-api Documentation (2.2.2)
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.
Optional relations to enrich: sender (User/Business), recipient (User/Business), business (engaged Business). Omit for fast response with IDs only.
Filter by specific wallet address (must belong to authentication context for non-admins)
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/me
- https://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?include=string&search=string&participantAddress=string&tokenAddress=string&engagedBusinessId=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: - include: Enrich with full entity data (sender, recipient, business) - 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) - Always returns PaginatedResponseDTO
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions
- https://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?include=string&search=string&participantId=string&participantAddress=string&tokenAddress=string&engagedBusinessId=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.
Business commercially involved in this transaction (for stats/reporting). Used for POS scenarios.
Entity authorized to submit this transaction. For POS flow, this is typically the business. Defaults to sender if not provided.
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions
- https://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,
"engagedBusinessId": "business-uuid-123",
"authorizedSubmitterId": "entity-uuid-456",
"authorizedSubmitterType": "business"
}'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.)
Optional message associated with the transaction, e.g. for error details
Business commercially involved in this transaction (for stats/reporting)
Entity authorized to submit this transaction (for POS flow security)
Type of entity authorized to submit (USER, BUSINESS, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": {}, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": {}, "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": {}, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {}, "engagedBusinessId": {}, "authorizedSubmitterId": {}, "authorizedSubmitterType": "user", "included": { … } }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/{id}
- https://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}?include=string' \
-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.)
Optional message associated with the transaction, e.g. for error details
Business commercially involved in this transaction (for stats/reporting)
Entity authorized to submit this transaction (for POS flow security)
Type of entity authorized to submit (USER, BUSINESS, etc.)
{ "amount": {}, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": {}, "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": {}, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {}, "engagedBusinessId": {}, "authorizedSubmitterId": {}, "authorizedSubmitterType": "user", "included": { "sender": { … }, "recipient": { … }, "engagedBusiness": { … } } }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/{id}/prepare
- https://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.)
Optional message associated with the transaction, e.g. for error details
Business commercially involved in this transaction (for stats/reporting)
Entity authorized to submit this transaction (for POS flow security)
Type of entity authorized to submit (USER, BUSINESS, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": {}, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": {}, "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": {}, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {}, "engagedBusinessId": {}, "authorizedSubmitterId": {}, "authorizedSubmitterType": "user", "included": { … } }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
Request
Submits a signed transaction from the client. This method is used to finalize the transaction after the client has signed it.
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
- https://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.)
Optional message associated with the transaction, e.g. for error details
Business commercially involved in this transaction (for stats/reporting)
Entity authorized to submit this transaction (for POS flow security)
Type of entity authorized to submit (USER, BUSINESS, etc.)
Current status of the transaction
Actionable details for the transaction, if applicable
{ "transaction": { "amount": {}, "id": "string", "tokenAddress": "string", "contractTokenId": {}, "tokenType": {}, "senderAddress": "string", "recipientAddress": {}, "transactionHash": {}, "type": "MINT", "triggerProcessType": "PURCHASE", "triggerProcessId": {}, "status": "created", "createdAt": {}, "updatedAt": {}, "tenantId": "string", "chainId": {}, "senderId": {}, "senderOwnerType": "user", "recipientId": {}, "recipientOwnerType": "user", "message": {}, "engagedBusinessId": {}, "authorizedSubmitterId": {}, "authorizedSubmitterType": "user", "included": { … } }, "transactionStatus": "created", "signingData": {}, "actionable": { "message": {}, "actionUrl": {}, "authToken": {}, "actionType": "string" }, "walletSigningStatus": "string" }
- Mock serverhttps://docs.pers.ninja/_mock/swagger/transactions/export/csv
- https://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"