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.

Fields

FieldNameDescriptionType
idSchoology Course IDThe internal Schoology ID of the coursestring
building_idSchoology School Building IDThe internal Schoology ID of the school building to which the course belongsstring
title*Course TitleThe title of the coursestring
course_code*Course CodeThe course code must be unique across the entire school (e.g. ENG101)string
departmentDepartment NameThe department name (e.g. English)string
descriptionDescriptionThe course descriptionstring
creditsCreditsThe number of credits this course is worthdouble
syncedSync StatusWhether 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_startGrade Level Range StartThe lowest (or only) grade level in the course.integer {1, 2, 3, ..., 15}
grade_level_range_endGrade Level Range EndThe highest grade level in the course - must be great than grade_level_range_start if used.integer {1, 2, 3, ..., 15}
subject_areaSubject AreaThe subject area of the courseinteger {1, 2, 3, ..., 9}
district_course_nameDistrict Course NameUniquely identifies courses across buildings for a districtstring

* = Required

Grade Levels

API ValueGrade Level
0No grade level/remove grade level
1Pre-K
2K
31
42
53
64
75
86
97
108
119
1210
1311
1412
15Higher-Ed

Subject Areas

API ValueSubject Area
0Other
1Health & Physical Education
2Language Arts
3Mathematics
4Professional Development
5Science
6Social Studies
7Special Education
8Technology
9Arts

GET courses

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

json
{
  "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"
  }
}
xml
<?xml version="1.0" encoding="utf-8" ?>
<result>
	<course>
		<id>1407691</id>
		<title>Time Travel</title>
		<course_code>CC106</course_code>
		<department />
		<description />
		<credits>0</credits>
		<subject_area>0</subject_area>
		<grade_level_range_start>12</grade_level_range_start>
		<grade_level_range_end>14</grade_level_range_end>
		<synced>1</synced>
		<building_id>344232</building_id>
	</course>
	<course>
		<id>5410559</id>
		<title>FS1 Course</title>
		<course_code />
		<department />
		<description />
		<credits>0</credits>
		<subject_area>2</subject_area>
		<grade_level_range_start>6</grade_level_range_start>
		<grade_level_range_end>0</grade_level_range_end>
		<synced>0</synced>
		<building_id>5171921</building_id>
	</course>
	<course>
		<id>5614935</id>
		<title>Bulk Course 1</title>
		<course_code>BC101</course_code>
		<department>Administration</department>
		<description>discuss bulk operations</description>
		<credits>0</credits>
		<subject_area>0</subject_area>
		<grade_level_range_start>0</grade_level_range_start>
		<grade_level_range_end>0</grade_level_range_end>
		<synced>0</synced>
		<building_id>344232</building_id>
	</course>
	<total>3</total>
	<links>
		<self>http://.../v1/courses?start=0&amp;limit=20</self>
	</links>
</result>

GET courses/{id}

View a specified course

Return A course

json
{
  "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"
}
xml
<?xml version="1.0" encoding="utf-8" ?>
<result>
	<id>1407691</id>
	<title>Time Travel</title>
	<course_code>CC106</course_code>
	<department />
	<description />
	<credits>0</credits>
	<subject_area>0</subject_area>
	<grade_level_range_start>12</grade_level_range_start>
	<grade_level_range_end>14</grade_level_range_end>
	<synced>1</synced>
	<building_id>344232</building_id>
</result>

POST courses

Create a course

Content A course

json
{
  "title": "English Writing",
  "course_code": "E101",
  "department": "English",
  "description": "Essay Writing"
}
xml
<body>
  <title>English Writing</title>
  <course_code>E101</course_code>
  <department>English</department>
  <description>Essay Writing</description>
</body>

Return A course

json
{
  "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"
  }
}
xml
<?xml version="1.0" encoding="utf-8" ?>
<result>
	<id>5614879</id>
	<title>REST API Course</title>
	<course_code>RAPI101</course_code>
	<department>Computer Science</department>
	<description>discuss REST API</description>
	<credits>0</credits>
	<subject_area>0</subject_area>
	<grade_level_range_start>0</grade_level_range_start>
	<grade_level_range_end>0</grade_level_range_end>
	<synced>0</synced>
	<building_id>344232</building_id>
	<links>
		<self>http://.../v1/courses/5614879</self>
	</links>
</result>

POST courses (bulk)

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.

json
{
  "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]
            }
          ]
        }
      }
    ]
  }
}
xml
<body>
  <courses>
    <course>
      <title>English course</title>
      <description>Essay Writing</description>
      <course_code>E233</course_code>
      <sections>
        <section>
          <title>Section 1</title>
          <description>Section 1 English</description>
          <section_id>27</section_id>
          <grading_periods>13221</grading_periods>
          <grading_periods>2344</grading_periods>
          <grading_periods>1246</grading_periods>
        </section>
        <section>
          <title>Section 2</title>
          <description>Section 2 English</description>
          <section_id>35</section_id>
          <grading_periods>13221</grading_periods>
          <grading_periods>2344</grading_periods>
          <grading_periods>1246</grading_periods>
        </section>
      </sections>
    </course>
    <course>
      <title>Math course</title>
      <description>Calculus</description>
      <course_code>MS230</course_code>
      <sections>
        <section>
          <title>Section 1</title>
          <description>Section 1 Math</description>
          <section_id>27</section_id>
          <grading_periods>13221</grading_periods>
          <grading_periods>2344</grading_periods>
          <grading_periods>1246</grading_periods>
        </section>
        <section>
          <title>Section 2</title>
          <description>Section 2 Math</description>
          <section_id>35</section_id>
          <grading_periods>13221</grading_periods>
          <grading_periods>2344</grading_periods>
          <grading_periods>1246</grading_periods>
        </section>
      </sections>
    </course>
  </courses>
</body>

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

PUT courses/{id}

Modify a course

Content A course

json
{
  "title": "English Writing (Advanced)",
  "description": "Creative Writing"
}
xml
<body>
  <title>English Writing (Advanced)</title>
  <description>Creative Writing</description>
</body>

PUT courses (bulk)

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.

json
{
  "courses": {
    "course": [
      {
        "id": "1407691",
        "title": "Time Travel 2",
        "course_code": "CC106"
      },
      {
        "id": "5614935",
        "title": "Bulk Course 4",
        "course_code": "BC101"
      }
    ]
  }
}
xml
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <courses>
    <course>
      <id>1407691</id>
      <title>Time Travel 2</title>
      <title>CC106</title>
    </course>
    <course>
      <id>5614935</id>
      <title>Bulk Course 4</title>
      <title>BC101</title>
    </course>
  </courses>
</result>

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

json
{
  "course": [
    {
      "response_code": 200,
      "id": "1407691",
      "course_code": "CC106"
    },
    {
      "response_code": 200,
      "id": "5614935",
      "course_code": "BC101"
    }
  ]
}
xml
<?xml version="1.0" encoding="utf-8" ?>
<result>
  <course>
    <response_code>200</response_code>
    <id>1407691</id>
    <course_code>CC106</course_code>
  </course>
  <course>
    <response_code>200</response_code>
    <id>5614935</id>
    <course_code>BC101</course_code>
  </course>
</result>

DELETE courses/{id}

Delete a course (cannot be undone)

DELETE courses/{id} (bulk)

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

Objects and realms