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/signup
Create 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-password
Request 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/categories
Get all forum categories
Response Examples
Success Response (200)
[ { "_id": "string", "name": "string", "description": "string", "slug": "string", "topicCount": "number" } ]
GET
/api/topics
Get 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/topics
Create 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/chat
Send 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/feedback
Provide 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/users
Get 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]/status
Update 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/feedback
Submit 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