Course

Courses are simply containers for course sections. Objects cannot belong to courses; they can only belong to course sections.

Table of Contents

Courses are parent objects to course sections; they are mere placeholders and cannot be used to upload documents, assignments, etc.

Fields

Field Name Description Type Required
id Schoology Course ID

The internal Schoology ID of the course

string no
building_id Schoology School Building ID

The internal Schoology ID of the school building to which the course belongs

string no
title Course Title

The title of the course

string yes
course_code Course Code

The course code must be unique across the entire school (e.g. ENG101)

string yes
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

Grade Range Values

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

Course Subject Areas

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

Operations

create

Create a course

Path

POST https://api.schoology.com/v1/courses

Content

An object containing course fields

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

An object containing course fields

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>

bulk create

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.
Path

POST https://api.schoology.com/v1/courses/

Content

Multiple courses can be created at a time (up to 50) by wrapping your response in ‘course’, with course fields wrapped in ‘course’. 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.

list

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.
  • limit: The number of results to return, up to 50
  • start: The number of results to skip (e.g. start=0&limit=20, start=20&limit=20, start=40&limit=20, etc). For larger start values, you may see better performance by using start_id instead.
  • start_id: As an alternative to start, use start_id and set it to the last id received to get the next page of results,
  • fetch_district_course_name: If the set value is 1, it will also show district_course_name for the courses, in the response.
Path

GET https://api.schoology.com/v1/courses

Content

none

Return

A collection of course object, each one containing course fields

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>

view

View a specified course

Path

GET https://api.schoology.com/v1/courses/{id}

Content

none

Return

An object containing course fields

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>

update

Modify a course

Path

PUT https://api.schoology.com/v1/courses/{id}

Content

An object containing course fields

JSON
{
    "title": "English Writing (Advanced)",
    "description": "Creative Writing"
}
XML
<body>
  <title>English Writing (Advanced)</title>
  <description>Creative Writing</description>
</body>
Return

none

bulk update

Modify multiple courses

Path

PUT https://api.schoology.com/v1/courses

Content

Up to 50 courses can be updated at a time by wrapping your response in ‘courses’, with course fields wrapped in ‘course’

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

Delete a course (cannot be undone)

Path

DELETE https://api.schoology.com/v1/courses/{id}

Content

none

Return

none

bulk delete

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

Path

DELETE https://api.schoology.com/v1/courses/{id}

Content

none

Return

none