Read published courses, fetch course details, retrieve roles, and check completion for a specific student.
Returns published courses.
Notes
- Only published courses are returned.
Example response
{
"courses": [
{
"id": 123,
"title": "Example Course",
"sold_separately": true,
"price": "99.0"
}
]
}
Returns detailed metadata for a single course.
Example response
{
"id": 123,
"title": "Example Course",
"description": "...",
"slug": "example-course",
"sold_separately": true,
"price": "99.0",
"is_published": true,
"is_challenge": false,
"cover_image_url": "https://...",
"cover_image_thumbnail_url": "https://...",
"unsplash_image_url": "https://...",
"lesson_count": 12
}
Lists available roles that can be granted to students.
Example response
{
"roles": [
{ "id": 1, "name": "Gold" }
]
}
Returns overall and course-specific completion data for a student identified by email.
| Parameter |
Type |
Required |
Description |
user_email |
string |
Yes |
Email address of the student to inspect. |
Example request
curl -X POST \
-H 'Authorization: Token token=YOUR_API_KEY' \
-d '[email protected]' \
https://{subdomain}.heightsplatform.com/api/v1/courses/123/completion-percentage
Example response
{
"id": 55,
"name": "Student Name",
"email": "[email protected]",
"created_at": "2024-01-01T12:00:00Z",
"enrolled": true,
"admin": false,
"is_active": true,
"sign_in_count": 3,
"points": 120,
"completion_percent": 42,
"course_completion_percent": 25
}
Returns the ordered course outline: modules with lesson summaries, followed by lessons that are not assigned to a module.
Example response
{
"course": { "id": 123, "title": "Example Course", "is_challenge": false },
"modules": [
{
"id": 5,
"title": "Getting Started",
"sequence": 1,
"is_published": true,
"lessons": [
{ "id": 41, "title": "Welcome", "sequence": 1, "is_published": true, "lesson_type": "Text" }
]
}
],
"ungrouped_lessons": []
}
Returns a lesson's metadata and its stored transcript. Requires an admin API key. The read-only transcript field is null when unavailable; this endpoint does not generate a transcript.
Example response
{
"lesson": {
"id": 41,
"course_id": 123,
"module_id": 5,
"title": "Welcome",
"slug": "welcome",
"sequence": 1,
"is_published": true,
"lesson_type": "Video",
"points": 10,
"transcript": "Welcome to this lesson."
}
}
Creates a lesson. title is required; optional fields include content, module_id, publish state, type, points, sequence, learning objective, video fields, release day, and unlock requirement.
The response uses the same lesson object as Get lesson, including the read-only transcript field.
{
"title": "Welcome",
"content": "Lesson body text",
"module_id": 5,
"is_published": false,
"points": 10
}
Updates only the provided lesson fields. Set module_id to null to make the lesson ungrouped. Unsupported fields return 422 invalid_fields.
The response uses the same lesson object as Get lesson, including the read-only transcript field.
Supported fields
title, content, is_published, lesson_type, points, module_id, sequence, learning_objective, video_embed, video_url, release_day, requires_unlock.