The quest system provides several API endpoints for quest management, progress tracking, and reward claiming.
Main Quest Endpoints
| Endpoint |
Method |
Purpose |
Authentication |
/quests |
GET |
List all available quests with user progress |
Required |
/quests/{quest} |
GET |
Get specific quest details |
Required |
/quests/{quest}/claim |
POST |
Claim a completed quest |
Required |
Quest List Response
JSON
{
"quests": [
{
"id": 1,
"title": "Complete 5 Trades",
"description": "Execute 5 successful trades to earn bonus points",
"type": "trade",
"reward_points": 500,
"required_progress": 5,
"current_progress": 2,
"status": "active",
"claimed": false,
"is_repeatable": false,
"expires_at": "2024-12-31T23:59:59Z",
"created_at": "2024-12-01T00:00:00Z"
}
],
"publicRewards": [
{
"id": 1,
"name": "First Trade Bonus",
"description": "Complete your first trade",
"value": 100,
"type": "integer",
"unit": "points"
}
]
}
Quest Claiming Response
JSON
{
"success": true,
"message": "Quest claimed successfully",
"points_awarded": 500,
"new_balance": 12500
}
Error Responses
JSON
// Quest not completed
{
"success": false,
"message": "Quest not completed or already claimed"
}
// Quest already claimed
{
"success": false,
"message": "Quest has already been claimed"
}
// Server error
{
"success": false,
"message": "Failed to claim quest: [error details]"
}
Performance Considerations
- Eager Loading - Quest completions are loaded with quests to prevent N+1 queries
- Filtering - Only active and non-expired quests are returned
- Caching - Public reward configurations can be cached for performance
- Pagination - Large quest lists can be paginated if needed