Course

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


Fields

FieldNameDescriptionTypeRequired
building_id Schoology School Building ID The internal Schoology ID of the school building to which the course belongs integer 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 courseinteger {1, 2, 3, ..., 9}

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