Skip to content

Course

Courses are simply containers for course sections. Objects cannot belong to courses; they can only belong to course sections. Courses are parent objects to course sections; they are mere placeholders and cannot be used to upload documents, assignments, etc.

Field Name Description Type
id Schoology Course ID The internal Schoology ID of the course string
building_id Schoology School Building ID The internal Schoology ID of the school building to which the course belongs string
title* Course Title The title of the course string
course_code* Course Code The course code must be unique across the entire school (e.g. ENG101) string
department Department Name The department name (e.g. English) string
description Description The course description string
credits Credits The number of credits this course is worth double
synced Sync Status Whether or not this course was synced with an external system (eg, Student Information System). The default value is 0. For synced courses, the Course Code field is not editable through Schoology. {0,1}
grade_level_range_start Grade Level Range Start The lowest (or only) grade level in the course. integer {1, 2, 3, ..., 15}
grade_level_range_end Grade Level Range End The highest grade level in the course - must be great than grade_level_range_start if used. integer {1, 2, 3, ..., 15}
subject_area Subject Area The subject area of the course integer {1, 2, 3, ..., 9}
district_course_name District Course Name Uniquely identifies courses across buildings for a district string

* = Required

API Value Grade Level
0 No grade level/remove grade level
1 Pre-K
2 K
3 1
4 2
5 3
6 4
7 5
8 6
9 7
10 8
11 9
12 10
13 11
14 12
15 Higher-Ed
API Value Subject Area
0 Other
1 Health & Physical Education
2 Language Arts
3 Mathematics
4 Professional Development
5 Science
6 Social Studies
7 Special Education
8 Technology
9 Arts

View a list of courses in your school (paged), with the option to filter results with the following query strings:

  • building_id: Only return courses for the given building.
  • fetch_district_course_name: If the set value is 1, it will also show district_course_name for the courses, in the response.

Return A list of courses

{
"course": [
{
"id": 1407691,
"title": "Time Travel",
"course_code": "CC106",
"department": "",
"description": "",
"credits": 0,
"subject_area": 0,
"grade_level_range_start": 12,
"grade_level_range_end": 14,
"synced": 1,
"building_id": "344232"
},
{
"id": 5410559,
"title": "FS1 Course",
"course_code": "",
"department": "",
"description": "",
"credits": 0,
"subject_area": 2,
"grade_level_range_start": 6,
"grade_level_range_end": 0,
"synced": 0,
"building_id": "5171921"
},
{
"id": 5614935,
"title": "Bulk Course 1",
"course_code": "BC101",
"department": "Administration",
"description": "discuss bulk operations",
"credits": 0,
"subject_area": 0,
"grade_level_range_start": 0,
"grade_level_range_end": 0,
"synced": 0,
"building_id": "344232"
}
],
"total": "3",
"links": {
"self": "http:\/\/...\/v1\/courses?start=0&limit=20"
}
}

View a specified course

Return A course

{
"id": 1407691,
"title": "Time Travel",
"course_code": "CC106",
"department": "",
"description": "",
"credits": 0,
"subject_area": 0,
"grade_level_range_start": 12,
"grade_level_range_end": 14,
"synced": 1,
"building_id": "344232"
}

Create a course

Content A course

{
"title": "English Writing",
"course_code": "E101",
"department": "English",
"description": "Essay Writing"
}

Return A course

{
"id": 5614879,
"title": "REST API Course",
"course_code": "RAPI101",
"department": "Computer Science",
"description": "discuss REST API",
"credits": 0,
"subject_area": 0,
"grade_level_range_start": 0,
"grade_level_range_end": 0,
"synced": 0,
"building_id": "344232",
"links": {
"self": "http:\/\/...\/v1\/courses\/5614879"
}
}

Create multiple courses (up to 50) in a single API call. The following querystring parameters can be added to this endpoint:

  • update_existing: Set this to 1 (e.g. ?update_existing=1) in order to update existing courses, matched by the course_code field. Without this parameter, creating a course will fail if another course already exists with the same course_code already.

Content Multiple courses can be created at a time (up to 50) by wrapping course fields in objects in course in courses. Sections can be also be created at the same time - combined with the update_existing parameter, this can be used for importing or synchronization.

{
"courses": {
"course": [
{
"title": "English course",
"description": "Essay Writing",
"course_code": "E233",
"sections": {
"section": [
{
"title": "Section 1",
"description": "Section 1 English",
"section_id": "27",
"grading_periods": [13221, 2344, 1246]
},
{
"title": "Section 2",
"description": "Section 2 English",
"section_id": "35",
"grading_periods": [13221, 2344, 1246]
}
]
}
},
{
"title": "Math course",
"description": "Calculus",
"course_code": "MS230",
"sections": {
"section": [
{
"title": "Section 1",
"description": "Section 1 Math",
"section_id": "27",
"grading_periods": [13221, 2344, 1246]
},
{
"title": "Section 2",
"description": "Section 2 Math",
"section_id": "35",
"grading_periods": [13221, 2344, 1246]
}
]
}
}
]
}
}

Return The API endpoint (location) of each course created, or an error message if there was a problem creating the course.

Modify a course

Content A course

{
"title": "English Writing (Advanced)",
"description": "Creative Writing"
}

Modify multiple courses

Content Multiple courses can be modified at a time (up to 50) by wrapping course fields in objects in course in courses.

{
"courses": {
"course": [
{
"id": "1407691",
"title": "Time Travel 2",
"course_code": "CC106"
},
{
"id": "5614935",
"title": "Bulk Course 4",
"course_code": "BC101"
}
]
}
}

Return The Schoology ID of each course updated, or an error message if there was a problem creating the course.

{
"course": [
{
"response_code": 200,
"id": "1407691",
"course_code": "CC106"
},
{
"response_code": 200,
"id": "5614935",
"course_code": "BC101"
}
]
}

Delete a course (cannot be undone)

Delete up to 50 courses (cannot be undone). Comma-separated Schoology IDs are passed in the query string with the course_ids parameter.