API Reference

Interactive API documentation - explore and test all CourseForge API endpoints

docsapi

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

CodeStatusDescription
invalid_request400Invalid request parameters
unauthorized401Missing or invalid API key
forbidden403Insufficient permissions
not_found404Resource not found
rate_limit_exceeded429Too many requests
internal_error500Server 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.

Topics

reference