Update Submission
Please note, there is not 100% coverage of the LMS systems when updating the `state` field to `submitted` (specifically). Some LMSs do not allow this property to be set to `submitted` without specifically using the student's credentials (e.g. via the User API endpoint).
PATCH https://ed.link/api/v2/graph/classes/:class_id/assignments/:assignment_id/submissions/:person_id
or
PATCH https://ed.link/api/v2/graph/classes/:class_id/assignments/:assignment_id/submissions/:submission_id
You can update an existing Submission for a given Assignment using either endpoint.
They both perform the same action and you are welcome to choose whichever is more convenient, based on the identifier you have available (i.e. person_id
or submission_id
).
This endpoint can be used to Submit, Reclaim, Grade, and Return Submissions, in addition to simple updating of fields.
Please review our guide on patch requests for more information regarding their use.
Request Parameters
Parameter | Type | Description |
---|---|---|
class_id | string | The UUID of the desired Class. |
assignment_id | string | The UUID of the desired Assignment. |
person_id | string | The UUID of the desired Person (Student) |
or | ||
submission_id | string | The UUID of the desired Submission. |
Request Body
The request body should contain a partial Submission object.
The following fields are allowed: attachments
, grader_id
, flags
, grade_comment
, grade_points
, grade
, rubric_grade
, extra_attempts
, override_due_date
, state
.
Sample Request To Submit Student Work
axios.patch('https://ed.link/api/v2/graph/classes/00000000-0000-0000-0000-000000000000/assignments/00000000-0000-0000-0000-000000000000/submissions/00000000-0000-0000-0000-000000000000', {
headers: {
authorization: `Bearer ${integration_access_token}`
},
data: {
attachments: [
{
type: 'link',
url: 'https://www.example.com/my-submission-01'
}
],
state: 'submitted'
}
});
Sample Request To Reclaim Submission
axios.patch('https://ed.link/api/v2/graph/classes/00000000-0000-0000-0000-000000000000/assignments/00000000-0000-0000-0000-000000000000/submissions/00000000-0000-0000-0000-000000000000', {
headers: {
authorization: `Bearer ${integration_access_token}`
},
data: {
state: 'reclaimed'
}
});
Sample Request To Grade Submission
axios.patch('https://ed.link/api/v2/graph/classes/00000000-0000-0000-0000-000000000000/assignments/00000000-0000-0000-0000-000000000000/submissions/00000000-0000-0000-0000-000000000000', {
headers: {
authorization: `Bearer ${integration_access_token}`
},
data: {
grade_points: 78
}
});
Sample Request To Return Submission
axios.patch('https://ed.link/api/v2/graph/classes/00000000-0000-0000-0000-000000000000/assignments/00000000-0000-0000-0000-000000000000/submissions/00000000-0000-0000-0000-000000000000', {
headers: {
authorization: `Bearer ${integration_access_token}`
},
data: {
state: 'returned'
}
});
Sample Response
{
"$request": "00000000-0000-0000-0000-000000000000",
"$data": {
"flags": [],
"grade": "5",
"grade_points": 5,
"grade_comment": "https://example.com/my-feedback",
"attempts": [
{
"created_date": "2025-09-08T17:08:51.000Z",
"attachments": [
{
"type": "file",
"title": "Submission 1.html",
"size": 210,
"created_date": "2025-09-08T17:08:51.000Z",
"url": "https://ed.link/api/v2/my/classes/00000000-0000-0000-0000-000000000000/assignments/00000000-0000-0000-0000-000000000000/submissions/00000000-0000-0000-0000-000000000000/files/00000000-0000-0000-0000-000000000000/download",
"description": "",
"share_mode": "view",
"properties": {
"schoology": {
"type": "text/html",
"filename": "Submission 1.html",
"extension": "html",
"filesize": 210
}
},
"identifiers": [
{
"type": "schoology_id",
"value": "123456789"
}
],
"rule_ids": [],
"references": {},
"id": "00000000-0000-0000-0000-000000000000"
}
],
"rule_ids": [],
"references": {}
}
],
"created_date": "2025-09-08T17:08:51.000Z",
"updated_date": "2025-09-10T20:12:07.000Z",
"state": "returned",
"person_id": "00000000-0000-0000-0000-000000000000",
"identifiers": [
{
"type": "schoology_id",
"value": "123456"
}
],
"rule_ids": [],
"references": {},
"id": "00000000-0000-0000-0000-000000000000"
}
}
Provider Specific Guidelines
Schoology
Schoology only allows students to submit work. Use the User API.
Canvas
The Canvas API only accepts a singular flag. In the case multiple flags were sent as part of a request for grading/updating a Canvas submission, we will pass only one flag to be chosen based on the following order of importance (with first being the most important): excused, missing, late.
Canvas also requires you to "publish" the parent Assignment before you can modify student submissions (i.e. submit or grade them), by modifying that Assignment's state to "open".
Supported Providers
- aeries
- aspen
- blackbaud
- blackboard
- brightspace
- canvas
- classgather
- clever
- illuminate
- microsoft
- moodle
- oneroster
- powerschool
- schoology
- lti
- skyward
- veracross
- qmlativ
- infinitecampus
- rapididentity
- sapphire
- genesis
- rediker
- renweb
- synergy
- managebac
- tyler
- banner
- frontline
- ascender