API Documentation
Integrate Mindova into your applications with our RESTful API
Getting Started
The Mindova API allows developers to programmatically interact with challenges, volunteers, tasks, and teams. All API endpoints require authentication using Laravel Sanctum tokens.
Base URL
https://mindova.com/api
Quick Links
Authentication
All API requests must include an authentication token in the Authorization header.
Authorization: Bearer YOUR_API_TOKEN
Obtaining a Token
POST /api/login
{
"email": "user@example.com",
"password": "your_password"
}
Response
{
"token": "1|abcdef123456...",
"user": {
"id": 1,
"name": "John Doe",
"email": "user@example.com",
"user_type": "volunteer"
}
}
Contributors
Get Current Contributor Profile
GET /api/volunteers/profile
Retrieves the authenticated volunteer's profile information including skills and statistics.
Response
{
"id": 1,
"user_id": 1,
"availability_hours_per_week": 20,
"bio": "Full-stack developer passionate about...",
"reputation_score": 75,
"skills": [
{
"id": 1,
"name": "JavaScript",
"proficiency_level": "expert"
}
]
}
Update Contributor Profile
PUT /api/volunteers/profile
Request Body
{
"availability_hours_per_week": 25,
"bio": "Updated bio text...",
"cv": "base64_encoded_file"
}
Challenges
List All Challenges
GET /api/challenges
Returns a paginated list of all challenges.
Query Parameters
status- Filter by status (analysis_pending, active, completed)page- Page number for paginationper_page- Results per page (default: 15)
Get Single Challenge
GET /api/challenges/{id}
Returns detailed information about a specific challenge including workstreams, tasks, and teams.
Create Challenge
POST /api/challenges
Create a new challenge. Requires company account.
Request Body
{
"title": "Challenge Title",
"description": "Detailed description (min 100 characters)...",
"submission_deadline": "2025-12-31",
"completion_deadline": "2026-01-31"
}
Tasks
Get Available Tasks
GET /api/tasks/available
Returns tasks matched to the authenticated volunteer based on their skills.
Get My Task Assignments
GET /api/assignments/my
Returns all task assignments for the authenticated volunteer.
Update Task Assignment
PUT /api/assignments/{id}
Request Body
{
"invitation_status": "in_progress",
"hours_worked": 5
}
Teams
Get Team Details
GET /api/teams/{id}
Returns detailed information about a team including all members and their roles.
Accept Team Invitation
POST /api/teams/{id}/accept
Accept an invitation to join a team.
Decline Team Invitation
POST /api/teams/{id}/decline
Decline an invitation to join a team.
Error Codes
The API uses standard HTTP status codes:
| Code | Meaning |
|---|---|
| 200 | OK - Request successful |
| 201 | Created - Resource created successfully |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource does not exist |
| 422 | Unprocessable Entity - Validation failed |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Server Error - Something went wrong |
Error Response Format
{
"message": "Error message",
"errors": {
"field": ["Validation error message"]
}
}
Rate Limits
API requests are rate-limited to ensure fair usage and system stability.
- Authenticated requests: 60 requests per minute
- Unauthenticated requests: 10 requests per minute
Rate limit information is included in response headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1640995200
Need Help?
For additional support with the API, please contact our developer support team.
Contact Developer Support