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

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 pagination
  • per_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

We use cookies to enhance your experience. By continuing, you agree to our cookie policy. Learn more