Error Codes
This page contains a list of common error responses you might come across while using the Edlink API. For a breakdown of how to process error responses, check out our guide on errors and warnings.
When an API request encounters an error that we cannot handle, you'll receive a 500
response. If the request was proxied to an upstream data source (e.g. an LMS or SIS), you may also receive a pass through error from that system.
General Notes on Failed Requests
- There is a maximum request size of 32MB for all requests to the Edlink API. If you exceed this limit, you will receive an error.
- There is a connection timeout of 300 seconds. If your connection remains open (idle or not) for greater than 300 seconds, it will be terminated.
HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | ASSIGNMENT_CANNOT_HAVE_ZERO_POINTS | Assignment must be worth more than zero points. |
400 | ENTITY_NOT_PRESENT_IN_SOURCE | The current user or class is not present in the source system. This typically occurs when the user or class is only present in the source through data enrichment. For instance, a user who is only present in the SIS, but does not have a matching profile in the LMS. |
400 | EXPIRED_TOKEN | The token you provided, while it was valid at some point, is now expired. |
400 | INTERNAL | The server encountered an unexpected condition which prevented it from fulfilling the request. |
400 | INVALID_TOKEN | You must supply a valid access token to access this endpoint. Make sure that you're using the correct type of access token for the endpoint you're trying to access. |
400 | INVALID_REQUEST_BODY | Your request body was invalid. |
400 | INVALID_PROVIDER_TOKEN | The person that the token belongs to has not signed in to Edlink with their provider account, or their provider tokens have expired, in which case they should sign out and back in again. |
400 | INVALID_INTEGRATION_STATE | The integration associated with the provided access token is not in the correct state to perform the requested action. You must set the integration to active or paused . |
400 | INVALID_UUID | You have provided a UUID in an invalid format. UUIDs must be in the UUID v4 or v5 format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx , where each x is a hexadecimal digit. All Edlink IDs are valid v4 UUIDs. |
400 | IDEMPOTENCY_KEY_TOO_LONG | The supplied $idempotency key may not be longer than 255 characters. Please review our guide on idempotency. |
400 | INVALID_CURSOR | The supplied cursor is invalid. Please review our guide on pagination. |
400 | INVALID_PAGE_SIZE | For rostering endpoints, the requested page size must be between 1 and 10000 . For other endpoints, the maximum page size varies based on the current provider. Omit the $first parameter to use the default page size. Please review our guide on pagination. |
400 | INVALID_SUBMISSION_TYPE | One or more submission_types are invalid. |
400 | INVALID_ASSIGNEES | One or more assignee_ids must be provided when the assignee_mode is individual . Each ID should be that of a Person. The assignee_ids must be valid Edlink IDs, and they must all be enrolled in the associated class. |
400 | INVALID_TASK_TYPE | The task type that was submitted is invalid. |
400 | INCORRECT_STATE | The state of your job is invalid for the requested behavior. |
400 | INVALID_STATE_TRANSITION | Job state can only be updated from draft to queued. |
400 | ID_NOT_PROVIDED | When creating, updating, or deleting entities, an id must be specified. |
400 | INVALID_DATE_STRING | Failed to parse the given date field as a datetime. Datetime strings must be in ISO-8601 format. |
400 | INVALID_DATE_ORDER | The display_date, start_date, due_date, and end_date were out of order. The must appear in the order of display_date , start_date , due_date , end_date . |
400 | INVALID_ATTACHMENT_TYPE | Your attachment must have a valid attachment type. The must be of type File or Link . |
400 | MISSING_REQUIRED_FIELD | One or more required fields are missing. |
404 | NOT_FOUND | The requested resource could not be found. |
403 | NO_PERMISSION | The person that the token belongs to does not have permission to perform the requested action. |
500 | UNKNOWN | The server encountered an unexpected condition which prevented it from fulfilling the request. |
400 | UNSUPPORTED_OPERATION | The current provider does not support the requested operation. |
400 | UNSHARED_TOKEN | The person that this token is associated with is no longer shared with the integration. You should adjust your sharing rules to allow this person to access the integration. |
400 | UNKNOWN_PROVIDER | Edlink could not find the proper provider for the authenticated person or integration. |
400 | NOT_IMPLEMENTED | The method you are trying to call has not been implemented. |
400 | ALREADY_EXISTS | The entity you are trying to create already exists. |
429 | TOO_MANY_REQUESTS | You have exceeded the rate limit for Edlink. |
429 | TOO_MANY_REQUESTS_FOR_SOURCE | You have exceeded the rate limit for the source. |
Blackboard HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | BLACKBOARD_CANNOT_RETURN_WITHOUT_ATTEMPT | Cannot return a submission that has not yet had any attempts made on it. An attempt is a record of a person's submitted work for an assignment. |
400 | BLACKBOARD_CANNOT_SET_GRADE_WITHOUT_ATTEMPT | Cannot add grade_points or grade_comment to a submission without any attempts. An attempt is a record of a person's submitted work for an assignment. |
Brightspace HTTP Response Codes
| Status | Code | Description |
| ------ | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| 400 | BRIGHTSPACE_DISALLOWED_CHARACTER
| Text submitted contains characters not allowed by Brightspace. These characters are as follows '
, /
, "
, <
, >
, |
, +
, =
, ,
, %
. |
| 400 | BRIGHTSPACE_UNSUPPORTED_GRADING_TYPE
| An unsupported grading type was given, Brightspace only supports the points
grading type. |
| 400 | BRIGHTSPACE_INVALID_SUBMISSION_TYPE
| Brightspace submissions must provide exactly one entry in 'attachments' |
| 400 | BRIGHTSPACE_POINTS_REQUIRED
| Brightspace requires the grade_points
field to be specified when updating a submission. |
Canvas HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | CANVAS_TEST_STUDENT_DENIED | We do not sync Canvas test students and they cannot be used to sign in via Edlink API connections. |
400 | CANVAS_UNSUPPORTED_MULTIPLE_ATTEMPTS | Canvas does not support multiple attempts. Please include fewer than two attempts. |
400 | CANVAS_UNSUPPORTED_MULTIPLE_ATTACHMENTS | Canvas does not support multiple attachments for an attempt. |
400 | CANVAS_INVALID_URL_SCHEME | Canvas link submissions must have an 'http' or 'https' url. |
400 | CANVAS_CANNOT_DELETE_CATEGORY_WITH_ASSIGNMENTS | Cannot delete a Canvas category that contains assignments. |
400 | CANVAS_INVALID_SUBMISSION_TYPE | Your submission type is invalid in Canvas. Valid types are link , file , discussion , assessment , and text . |
400 | CANVAS_UNSUPPORTED_GRADING_TYPE | Canvas only supports the following grading types pass_fail , percent , letter_grade , and points . |
400 | CANVAS_LTI_PERMISSION_DENIED | Edlink cannot submit grades for an LTI assignment that does not belong to your application. |
400 | CANVAS_LTI_NO_SUBMISSION | Edlink cannot submit grades for an LTI submission that has never been launched by the respective student. |
400 | CANVAS_UNPUBLISHED_CLASS | You cannot create an assignment for an unpublished Canvas class. Please publish this class in Canvas and try again. |
400 | CANVAS_NO_GRADING_SCHEME_FOUND | Assignment grading_type was set, but no grading scheme was found in Canvas for the class. |
400 | CANVAS_INVALID_GRADE | The assignment grading_type is pass_fail , but the grade value for submission is not pass or fail . |
Google HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | GOOGLE_INVALID_ATTACHMENT_TYPE | Your attachment type is not supported by Google. |
400 | GOOGLE_INVALID_SUBMISSION_TYPE | Your submission type is not supported by Google. |
400 | GOOGLE_INVALID_ASSIGNEE_MODE | Your submitted assignee mode is not supported by Google (only all or individuals may be specified). |
400 | GOOGLE_PROJECT_PERMISSION_DENIED | Due to a limitation in Google Classroom, you can only modify your own assignments and submissions using the API. |
400 | GOOGLE_CATEGORY_NAME_TOO_LONG | Google category names cannot exceed 100 characters. |
400 | GOOGLE_CATEGORY_NAME_INVALID | You must specify a valid name for the category. |
400 | GOOGLE_ASSIGNMENT_ALREADY_SUBMITTED | The assignment has already been submitted. In order to change it, you should first reclaim it. |
400 | GOOGLE_DUE_DATE_FUTURE | Assignments in Google Classroom must have a due date in the future. |
LTI HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | LTI_UNSUPPORTED_MULTIPLE_ATTEMPTS | LTI does not support multiple submission attempts. Please include fewer than two attempts. |
Microsoft HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | MICROSOFT_UNSUPPORTED_GRADING_TYPE | Microsoft does not support the selected grading type. |
400 | MICROSOFT_ASSIGNMENT_TITLE_MAX_LENGTH | Microsoft has a 70 character limit on assignment titles. |
400 | MICROSOFT_ASSIGNMENT_MAX_END_DATE | Microsoft only allows assignment end dates up to 365 days in the future. |
400 | MICROSOFT_ASSIGNMENT_MAX_DISPLAY_DATE | Microsoft only allows assignment display dates up to 365 days in the future. |
400 | MICROSOFT_INVALID_ATTACHMENT_TYPE | Microsoft does not support attachments of this type. |
400 | MICROSOFT_ASSIGNMENT_ALREADY_SUBMITTED | The assignment has already been submitted. In order to change it, you should first reclaim it. |
400 | MICROSOFT_CANNOT_MODIFY_DISPLAY_DATE | Microsoft does not allow modification of display_date after an assignment has been published. |
400 | MICROSOFT_CANNOT_MODIFY_ASSIGNEE_MODE | Microsoft does not allow modification of assignee_mode after an assignment has been created. |
400 | MICROSOFT_INVALID_ASSIGNEE_MODE | Microsoft does not support the selected assignee mode (only all or individuals may be specified). |
Schoology HTTP Response Codes
| Status | Code | Description |
| ------ | --------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 | SCHOOLOGY_INVALID_SESSION
| The schoology session you are accessing is invalid. |
| 400 | SCHOOLOGY_CANNOT_DELETE_CATEGORY_WITH_ASSIGNMENTS
| A Schoology category that contains assignments cannot be deleted. |
| 400 | SCHOOLOGY_UNSUPPORTED_MULTIPLE_ATTACHMENTS
| Schoology does not support multiple attachments for an attempt. |
| 400 | SCHOOLOGY_UNSUPPORTED_LINK_SUBMISSION
| Schoology does not support link submissions. |
| 400 | SCHOOLOGY_INVALID_ATTACHMENT_TYPE
| Schoology does not support this attachment type. |
| 400 | | SCHOOLOGY_NO_VALID_ASSIGNEES
| There were no 'assignee_ids' that matched a 'person_id' enrolled in the class. Schoology will automatically assign this assignment to all students if no valid assignees are provided. |
Classlink HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | CLEVER_LIBRARY_DISABLED | Clever Library is disabled for your application and districts should share roster data via Secure Sync. |
400 | CLEVER_API_VERSION_DISABLED | You are trying to access a version of the Clever API that is not enabled for your Clever team. You can configure which version you are accessing via the Edlink application settings page. |
400 | CLEVER_DATA_NOT_AVAILABLE | Currently unused. |
Clever HTTP Response Codes
Status | Code | Description |
---|---|---|
400 | CLASSLINK_MISSING_SOURCED_ID | Edlink requires all Classlink Launchpad users to have a valid sourcedID that matches their sourcedID on Classlink Roster Server. |
400 | CLASSLINK_LAUNCHPAD_DISABLED | Your application is configured such that Edlink will reject SSO requests that initiate from the Classlink Launchpad. |
These are codes that you receive specifically for errors that may occur during the OAuth 2.0 authentication process. You will only receive these error codes if you have enabled the SSO Error Behavior
flag. You can find this flag on the Application > Feature Flags
page of the Edlink dashboard.
Codes will be passed back to you via the error
query parameter in the redirect URI. For example, if you have specified https://example.com/edlink/sso
as your redirect URI, you will receive the following redirect URI if the user is trying to sign into a disabled integration:
https://example.com/edlink/sso?error=INVALID_INTEGRATION_STATE
You will also receive your state
parameter back in the redirect URI. This is the same state
parameter that you passed to Edlink in the initial authorization request. You can use this to identify the user that was trying to sign in.
Code | Description |
---|---|
INVALID_STATE | The state query parameter you passed to Edlink was missing or invalid. |
INVALID_INTEGRATION_STATE | The integration that the user is trying to access must be in the active or paused state. |
INVALID_AUTHORIZATION_CODE | The code you tried to exchange in your POST body was invalid. |
INVALID_PROVIDER | The source for this integration is not a valid SSO provider. |
INVALID_REDIRECT_URI | You did not provide a redirect_uri or the one you provided was not on your list of valid redirect URIs. |
INVALID_CLIENT_ID | You did not provide a client_id or the one you provided was not valid. |
INVALID_INTEGRATION_ID | You did not provide a valid integration_id or the one you provided was not owned by your application. |
INSTANT_LOGIN_DISABLED | You do not have a valid login cookie to utilize instant login. |
INVALID_ALTERNATIVE_LOGIN_URL | Some LMS providers allow for multiple entry points into their SSO flow and you may have provided one that was not valid. This error is extremely rare and not one that you'll come across unless you have a particular district who utilizes multiple login URLs. |
UNKNOWN | The SSO request failed for an unknown reason. |
LTI & OIDC Error Codes
These codes will only be passed to you if the end user (e.g. a student or teacher) is using the LTI 1.1 / 1.3 login flow, or some other OIDC-based login flow.
Code | Description |
---|---|
NO_LTI_CONSUMER_KEY | No LTI consumer key was provided in the POST body of the LTI 1.1 request. |
INVALID_LTI_CONSUMER_KEY | An LTI consumer key was provided in the POST body of the LTI 1.1 request, but it was not found or it did not belong to your application. |
INVALID_LTI_SIGNATURE | The signature of the LTI 1.1 request did not match the provided consumer key and shared secret. |
INVALID_LTI_TIMESTAMP | The timestamp of the LTI 1.1 request was greater than 1 minute old (or more than 1 minute in the future). |
INVALID_LTI_ROLES | The LTI launch request must contain an array of at least one valid role. |
INVALID_LTI_MESSAGE_TYPE | The LTI 1.3 launch request contained an invalid message type. |
INVALID_KEYSET_URL | The keyset URL entered into Edlink during source configuration was invalid. |
INVALID_KEYSET | There were no valid keys in the keyset. |
INVALID_JWT | The OIDC JWT was not valid. |
INVALID_JWT_MISSING_KID | The OIDC JWT was missing the kid field. |
KID_NOT_FOUND_IN_KEYSET | The OIDC JWT contained a kid , but the specified key ID was not found in your keyset. |
INVALID_LTI_VERSION | The LTI 1.3 version claim must say 1.3.0 . |
INVALID_JWT_SUBJECT | The JWT sub claim was missing or invalid. |
INVALID_LTI_DEPLOYMENT_ID | The LTI 1.3 deployment ID claim was missing or invalid. |
INVALID_LTI_RESOURCE_LINK_CLAIM | The LTI 1.3 resource link claim was missing or invalid. |
INVALID_LAUNCH_CONTEXT | The launch context that Edlink added to the end of the LTI launch link was not valid. This typically only applies to Canvas Speedgrader launches. |
INVALID_OIDC_CONFIGURATION | No OIDC authentication endpoint was provided. |
INVALID_ISSUER | No issuer value was provided in the query parameters or request body. |
INVALID_LTI_CLIENT_ID_ISSUER_PAIR | No integration was found matching the LTI client ID and issuer that you provided. |
CLASS_NOT_SHARED | The class context into which the user launched was valid, but it was not shared with your application via Edlink sharing rules. |
PERSON_NOT_SHARED | The person who launched is either not synced or not shared with your application via Edlink sharing rules. |
INVALID_LTI_RETURN_URL | The LTI 1.3 deep linking return URL was invalid. |
LTI_LAUNCH_ERROR | The LTI launch request failed for an unknown reason. |
INVALID_CUSTOM_PARAMETERS | The custom parameters provided in the LTI launch request were invalid or missing. |
INVALID_RESPONSE_TYPE | The response type provided in the OIDC or LTI request was invalid. |
INVALID_SCOPE | The scope provided in the OIDC or LTI request was invalid. |
MISSING_INITIATION_URL | The initiation URL for the OIDC or LTI request was missing. |
Powerschool Error Codes
Code | Description |
---|---|
POWERSCHOOL_INCORRECT_SCORE_TYPE | The score type you provided was not valid. |
Skyward Error Codes
Code | Description |
---|---|
SKYWARD_CLASS_NOT_IN_SESSION | The specified class is not part of an active session. |