Process campaign reward claims using role-based detection. Supports all claim types: system, business, and user claims through a single endpoint.
- Get campaign claims with advanced filtering
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.
Campaign claim request. Use CampaignClaimRequestDTO for user claims or CampaignClaimBusinessRequestDTO structure for business/system claims.
The trigger source ID (NEW - preferred). Use this for trigger-specific claims (QR codes, NFC tags, geofences, etc.). Takes precedence over campaignId if both are provided.
The campaign multiplier that will be applied to the reward. This determines the final reward amount (reward * multiplier). Default is 1.0
User's current latitude for location-based validation. Required when CampaignTrigger has maxGeoDistanceInMeters configured. System validates user is within allowed distance from TriggerSource location (coordsLatitude) or Business location fallback.
User's current longitude for location-based validation. Required when CampaignTrigger has maxGeoDistanceInMeters configured. System validates user is within allowed distance from TriggerSource location (coordsLongitude) or Business location fallback.
The user identifier, e.g. email or external id. This is used to identify the user making the claim, if not provided in request context
User information required by the campaign trigger. Only needed if CampaignTrigger.requiredUserInfo is set AND the user profile does not already have these fields stored. Provide fields specified in CampaignTrigger.requiredUserInfo (e.g., email, phoneNumber, firstName, lastName, dateOfBirth, etc.). Backend validates that required fields are either already stored or provided here.
DEPRECATED: Use with triggerSource instead. Business identifier - provides additional context and validation for the claim. Will be removed in Q2 2026
DEPRECATED: The campaign ID. Still supported for backward compatibility, but use triggerSourceId for new implementations. If both campaignId and triggerSourceId are provided, triggerSourceId takes precedence. NOTE: If campaign has trigger sources configured, triggerSourceId becomes required and campaignId alone will result in an error. Will be removed in Q2 2026
- Mock serverhttps://docs.pers.ninja/_mock/swagger/campaigns/claims
- https://api.pers.ninja/v2/campaigns/claims
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://docs.pers.ninja/_mock/swagger/campaigns/claims \
-H 'Content-Type: application/json' \
-H 'x-project-key: YOUR_API_KEY_HERE' \
-d '{
"triggerSourceId": "string",
"metadata": {},
"multiplier": 0,
"latitude": 0,
"longitude": 0,
"userIdentifier": "string",
"userInfo": {
"email": "user@example.com",
"phoneNumber": "+1234567890",
"firstName": "John"
},
"businessId": "string",
"campaignId": "string"
}'Campaign claim processed successfully
Trigger Source ID that was used for this claim (e.g., specific QR code, NFC tag, etc.)
Status of the claim processing (PENDING, PROCESSING, COMPLETED, FAILED)
Included related entities. Only populated when include parameter is specified. Contains campaign, user, business, triggerSource, and/or transactions entities based on requested relations.
User object (DEPRECATED: use userId instead. Only contains {id} during migration. Will be removed in Q2 2026)
Campaign object (DEPRECATED: use campaignId instead. Only contains {id} during migration. Will be removed in Q2 2026)
{ "id": "string", "createdAt": {}, "userId": "string", "campaignId": "string", "businessId": "string", "triggerSourceId": "string", "user": { "id": "user-uuid-123" }, "campaign": { "id": "campaign-uuid-123" }, "business": { "id": "business-uuid-123" }, "userCountryCode": "string", "status": "PENDING", "message": "string", "included": { "campaign": { … }, "user": { … }, "business": { … }, "triggerSource": { … }, "transactions": [ … ] } }
Request
Get campaign claims with comprehensive filtering options. Use pagination parameters (page & limit) for optimal performance - critical for high-volume campaigns. Legacy support: returns array without params (deprecated - will be removed in future).
- campaignId: Filter by specific campaign (optional)
- userId: Filter by specific user ID (admin only)
- businessId: Filter by specific business ID (admin only)
- include: Optionally include related entities (campaign, user, business, transactions)
Access Control:
- Users: See only their own claims, campaignId optional
- Business: See only claims associated with their business account, campaignId optional
- Admin: Can filter by any combination of parameters or see all claims
Security Notes:
- Users cannot access userId or businessId parameters (automatically filtered)
- Business accounts automatically filter to their own businessId regardless of parameter
- Admin has full access to all filtering options
- Mock serverhttps://docs.pers.ninja/_mock/swagger/campaigns/claims
- https://api.pers.ninja/v2/campaigns/claims
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/campaigns/claims?campaignId=string&userId=string&businessId=string&include=string&page=0&limit=0' \
-H 'x-project-key: YOUR_API_KEY_HERE'Campaign claims retrieved successfully
Trigger Source ID that was used for this claim (e.g., specific QR code, NFC tag, etc.)
Status of the claim processing (PENDING, PROCESSING, COMPLETED, FAILED)
Included related entities. Only populated when include parameter is specified. Contains campaign, user, business, triggerSource, and/or transactions entities based on requested relations.
User object (DEPRECATED: use userId instead. Only contains {id} during migration. Will be removed in Q2 2026)
Campaign object (DEPRECATED: use campaignId instead. Only contains {id} during migration. Will be removed in Q2 2026)
Business object (DEPRECATED: use businessId instead. Only contains {id} during migration. Will be removed in Q2 2026)
[ { "id": "string", "createdAt": {}, "userId": "string", "campaignId": "string", "businessId": "string", "triggerSourceId": "string", "user": { … }, "campaign": { … }, "business": { … }, "userCountryCode": "string", "status": "PENDING", "message": "string", "included": { … } } ]
Request
Convenience endpoint for authenticated users to retrieve their own campaign claims.
Equivalent to GET /campaign-claims but with required authentication and automatic filtering to current user context. Use pagination parameters (page & limit) for optimal performance - recommended for active users. Legacy support: returns array without params (deprecated - will be removed in future).
Features:
- Automatic user context (no userId parameter needed)
- Optional campaign filtering
- Requires user authentication
- Simplified response structure
- Optional entity inclusion (campaign, user, business, transactions)
Usage Examples:
- GET /campaign-claims/me (all claims for authenticated user)
- GET /campaign-claims/me?campaignId=123 (user claims for specific campaign)
- GET /campaign-claims/me?include=campaign,transactions (with related entities)
- Mock serverhttps://docs.pers.ninja/_mock/swagger/campaigns/claims/me
- https://api.pers.ninja/v2/campaigns/claims/me
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://docs.pers.ninja/_mock/swagger/campaigns/claims/me?campaignId=string&include=string&page=0&limit=0' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'User campaign claims retrieved successfully
Trigger Source ID that was used for this claim (e.g., specific QR code, NFC tag, etc.)
Status of the claim processing (PENDING, PROCESSING, COMPLETED, FAILED)
Included related entities. Only populated when include parameter is specified. Contains campaign, user, business, triggerSource, and/or transactions entities based on requested relations.
User object (DEPRECATED: use userId instead. Only contains {id} during migration. Will be removed in Q2 2026)
Campaign object (DEPRECATED: use campaignId instead. Only contains {id} during migration. Will be removed in Q2 2026)
Business object (DEPRECATED: use businessId instead. Only contains {id} during migration. Will be removed in Q2 2026)
[ { "id": "string", "createdAt": {}, "userId": "string", "campaignId": "string", "businessId": "string", "triggerSourceId": "string", "user": { … }, "campaign": { … }, "business": { … }, "userCountryCode": "string", "status": "PENDING", "message": "string", "included": { … } } ]