Skip to main content

Gradebook Grades API

How to pull row-level gradebook grades over the API — the same data as the Gradebook report export, with one row per graded item.

Written by Abdullah Al-Hussein

Overview

Read-only JSON endpoint that returns row-level gradebook grades, the same data as the Gradebook report Excel export. You get one row per graded item — assignment, exam and so on — plus rows for overall grades or gradebook notes that have no graded items.

Authentication

Authenticate with the school's API key. Pass it either way:

Header: X-API-KEY: <school_api_key>
Query: ?apikey=<school_api_key>

The key identifies the school. Responses are automatically scoped to that school; there is no school_id parameter. We recommend the header form — keys passed in a URL can end up in server or proxy logs.

Endpoint

GET /globalApis/gradebook_grades

Parameters

Param

Type

Notes

course_id

string

One id or comma-separated. Omit → all classes. Invalid (non-numeric) → empty result.

student_id

string

One id or comma-separated. Omit → all students. Invalid (non-numeric) → empty result.

start_date

YYYY-MM-DD

Optional. Filters on the graded item's date. Invalid dates are rejected.

end_date

YYYY-MM-DD

Optional. One-sided ranges allowed.

per_page

int

Optional. Omit → all rows.

page

int

Optional, 1-based. Used with per_page.

A date filter drops overall-grade and note-only rows. start_date and end_date filter on the graded item's date, so rows that have no graded item are excluded whenever either is used. Omit both if you need overall grades and gradebook notes.

Example

curl -H "X-API-KEY: YOUR_KEY" \
"https://app.teachngo.com/globalApis/gradebook_grades?course_id=98090&start_date=2026-01-01&end_date=2026-06-30&per_page=100&page=1"

Response

{
"status": "success",
"meta": {
"total": 65, "count": 65, "page": 1, "per_page": null,
"start_date": "2026-01-01", "end_date": "2026-06-30"
},
"data": [{
"course_id": 98090, "course": "Spanish B2",
"course_start_date": "2025-09-15", "course_end_date": "2026-06-21",
"gradebook": "Term 1",
"student_id": 12345, "student": "Jane Doe",
"grade_date": "2026-02-06", "grade_name": "Midterm exam",
"grade_type": "number", "grade_weight": 40,
"grade_value": "85", "overall_grade": 78.5,
"note": ""
}]
}

Field reference

Field

Meaning

course_id / course

Class the grade belongs to, with its start and end dates

gradebook

Gradebook tab name, for example Term 1

student_id / student

Student's numeric id and display name

grade_date / grade_name

Date and name of the graded item — null or empty on overall-grade-only rows

grade_type

number for percentage-weighted grades, text for worded grades such as Excellent

grade_weight

Weight of the item in the overall grade, as a percentage — null for text grades

grade_value

The grade the student received for the item

overall_grade

Overall grade for the student in that gradebook tab — numeric rounded to one decimal place, or text

note

Gradebook note for the student, as plain text

For error handling and paging through large result sets, see API error codes and pagination.

Did this answer your question?