API Documentation
Comprehensive guide to MQ Forum's REST API endpoints
Getting Started
Base URL
https://mqforum.com
Content Type
application/json
Authentication
Most endpoints require authentication using NextAuth.js session cookies. For programmatic access, include the session cookie in your requests.
Authentication Methods:
- • Session Cookies: Automatic for browser-based requests
- • Email/Password: Use /api/auth/signin endpoint
- • Admin Access: Required for user management endpoints
Authentication
POST
/api/auth/signupCreate a new user account
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | User email address | |
| password | string | Required | User password (min 6 characters) |
| name | string | Optional | User display name |
Response Examples
Success Response (200)
{
"message": "User created successfully",
"userId": "string"
}Error Response (400/401/500)
{
"error": "Email already exists"
}POST
/api/auth/forgot-passwordRequest password reset
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | User email address |
Response Examples
Success Response (200)
{
"message": "Password reset email sent"
}Error Response (400/401/500)
{
"error": "User not found"
}Forum Content
GET
/api/categoriesGet all forum categories
Response Examples
Success Response (200)
[
{
"_id": "string",
"name": "string",
"description": "string",
"slug": "string",
"topicCount": "number"
}
]GET
/api/topicsGet topics with optional filtering
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| category | string | Optional | Filter by category slug |
| limit | number | Optional | Number of topics to return (default: 20) |
| sort | string | Optional | Sort order: 'newest' | 'oldest' | 'popular' |
Response Examples
Success Response (200)
[
{
"_id": "string",
"title": "string",
"slug": "string",
"content": "string",
"author": {
"name": "string",
"email": "string"
},
"category": {
"name": "string",
"slug": "string"
},
"createdAt": "date",
"postCount": "number"
}
]POST
/api/topicsCreate a new topic
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | Required | Topic title |
| content | string | Required | Topic content |
| categoryId | string | Required | Category ID |
Response Examples
Success Response (200)
{
"message": "Topic created successfully",
"topicId": "string"
}Error Response (400/401/500)
{
"error": "Authentication required"
}AI Chat
POST
/api/chatSend message to AI chatbot
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| message | string | Required | User message |
| sessionId | string | Optional | Chat session ID |
Response Examples
Success Response (200)
{
"response": "string",
"sessionId": "string",
"relatedTopics": [
{
"title": "string",
"slug": "string",
"category": "string"
}
]
}POST
/api/chat/feedbackProvide feedback on AI response
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| sessionId | string | Required | Chat session ID |
| messageId | string | Required | Message ID |
| helpful | boolean | Required | Whether response was helpful |
Response Examples
Success Response (200)
{
"message": "Feedback recorded"
}User Management
GET
/api/usersGet users list (admin only)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | number | Optional | Number of users to return |
| search | string | Optional | Search by name or email |
Response Examples
Success Response (200)
[
{
"_id": "string",
"name": "string",
"email": "string",
"role": "string",
"status": "string",
"createdAt": "date"
}
]PUT
/api/users/[id]/statusUpdate user status (admin only)
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Required | 'active' | 'banned' | 'suspended' |
Response Examples
Success Response (200)
{
"message": "User status updated"
}Error Response (400/401/500)
{
"error": "Unauthorized"
}Feedback
POST
/api/feedbackSubmit user feedback
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| type | string | Required | 'suggestion' | 'bug' | 'general' | 'appreciation' |
| subject | string | Required | Feedback subject |
| message | string | Required | Feedback message |
| string | Optional | Contact email | |
| priority | string | Optional | 'low' | 'medium' | 'high' | 'urgent' |
Response Examples
Success Response (200)
{
"message": "Feedback submitted successfully",
"id": "string"
}HTTP Status Codes
Success Codes
200OK - Request successful
201Created - Resource created
Error Codes
400Bad Request - Invalid parameters
401Unauthorized - Authentication required
403Forbidden - Insufficient permissions
500Server Error - Internal error
Rate Limiting
To ensure fair usage and platform stability, we implement rate limiting on our API endpoints:
General API
100 requests per minute per IP
AI Chat
20 requests per minute per user
Content Creation
10 posts per hour per user