Complete API reference for all CourseForge endpoints. Test requests interactively below.
Interactive Documentation: Explore endpoints, view examples, and test requests directly from this page.
Base URL
https://courseforge.caringai.app/api/v1
Authentication
All requests require an API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Courses
List Courses
GET /api/v1/courses
Query Parameters:
page(number): Page number (default: 1)per_page(number): Results per page (default: 20, max: 100)published(boolean): Filter by published status
Response:
{
"data": [
{
"id": "course_123",
"name": "Introduction to Python",
"description": "Learn Python basics",
"difficulty": "beginner",
"status": "draft",
"metadata": {
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-01-15T10:30:00Z"
}
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 5,
"total_pages": 1
}
}
Create Course
POST /api/v1/courses
Body:
{
"name": "Course Title",
"description": "Course description",
"language": "en",
"difficulty": "beginner",
"published": false
}
Get Course
GET /api/v1/courses/{courseId}
Update Course
PATCH /api/v1/courses/{courseId}
Delete Course
DELETE /api/v1/courses/{courseId}
Modules
Create Module
POST /api/v1/courses/{courseId}/modules
Body:
{
"name": "Module Name",
"description": "Module description",
"order": 0
}
Get Module
GET /api/v1/modules/{moduleId}
Update Module
PATCH /api/v1/modules/{moduleId}
Delete Module
DELETE /api/v1/modules/{moduleId}
Lessons
Create Lesson
POST /api/v1/modules/{moduleId}/lessons
Body:
{
"name": "Lesson Title",
"description": "Lesson description",
"order": 0
}
Get Lesson
GET /api/v1/lessons/{lessonId}
Update Lesson
PATCH /api/v1/lessons/{lessonId}
Delete Lesson
DELETE /api/v1/lessons/{lessonId}
Content Blocks
Add Content Block
POST /api/v1/lessons/{lessonId}/blocks
Body:
{
"type": "text",
"content": {
"text": "Lesson content here"
},
"order": 0
}
Block Types: text, image, video, quiz, code, interactive
Get Content Block
GET /api/v1/blocks/{blockId}
Update Content Block
PATCH /api/v1/blocks/{blockId}
Delete Content Block
DELETE /api/v1/blocks/{blockId}
AI Generation
Generate Content
POST /api/v1/ai/generate-content
Body:
{
"prompt": "Create a lesson about Python variables",
"type": "lesson",
"options": {
"includeExamples": true,
"difficulty": "beginner"
}
}
Error Responses
All errors follow this format:
{
"error": {
"code": "invalid_request",
"message": "Descriptive error message",
"details": {}
}
}
Common Error Codes
| Code | Status | Description |
|---|---|---|
invalid_request | 400 | Invalid request parameters |
unauthorized | 401 | Missing or invalid API key |
forbidden | 403 | Insufficient permissions |
not_found | 404 | Resource not found |
rate_limit_exceeded | 429 | Too many requests |
internal_error | 500 | Server error |
Rate Limiting
All responses include rate limit headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1642175400
See Rate Limits for details.