Troubleshooting

Instead of sending back a coded HTTP response, a GraphQL response will always return an HTTP response of 200 OK, even if the query failed to fetch all of your data. To indicate an error state, GraphQL will send back a list of errors in the JSON return object. These errors contain a message and a code (again, different than a typical HTTP response code). Also, note that if errors occur that do not break the entire query, GraphQL will return that list of errors along with the data that was successfully fetched. Here is an example of a GraphQL error response:

REQUEST
Copy

query {
  channels (first: 10001) {
    nodes {
      id
    }
  }
}
RESPONSE

{
  "errors": [
    {
      "extensions": [
        {
          "code": "BAD_USER_INPUT"
        }
      ],
      "message": "'first' parameter limit exceeded. Results over 10000...",
      "locations": []
    }
  ],
  "data": {
    "channels": {
      "nodes": [
        {
          "id": "3ab3ff19-b7a4-43d4-b472-7eebcc656993"
        },
        ...

The following documentation is organized by the code returned as part of the extensions object (either BAD_USER_INPUT, FORBIDDEN, PAYLOAD_LIMIT_EXCEEDED or INTERNAL_SERVER_ERROR).

BAD_USER_INPUT

This error means that something about your input was invalid or not allowed. Below is a list of possible reasons for this error (this list is not comprehensive).

Invalid Date

If you include a date in your args in an invalid format, you will get a "Query field [NAME OF FIELD] is not a valid date" error. To solve this, enter the date in one of the following formats: MM-DD-YYYY, MM-DD-YY, or YYYY-MM-DD.

Id Not Found

If you request a Team, User, Course, or Channel with an invalid id, you will get a "Query did not return a [TEAM, USER, COURSE, OR CHANNEL]" error. To solve this, you must enter a valid id.

FORBIDDEN

This error code means that you do not have authorization to access the query, mutation, or field that you are trying to access.

Release Group

If you do not have the required release group to access a query, mutation, or field, you will get an error like the following, "contentCatalog requires BETA release group. Your release group is GR". You can opt in to the BETA release group on the Manage Keys page by clicking the edit button on the API key you would like to move to BETA.

Permissions

If your plan does not have access to the feature you are trying to access, you will get the following error: "You don't have permissions to access [QUERY/MUTATION/FIELD NAME]." There are two possible reasons you are seeing this error.

First, your API key does not have WRITE permissions. You can give your key WRITE permissions on the Manage Keys page by clicking the edit button for that API Key you would like to give permissions to.

Second, your plan does not have access to these features. You can see what packages and features are available at pluralsight.com/pricing/skills.

User Not a Member of Plan

If you try to mutate data involving a user not on your plan, you will get the following error: "At least one of the following users is not a member of [NAME OF YOUR PLAN]: [LIST OF USER IDS]." Check that the user you are trying to access is a member of your plan.

PAYLOAD_LIMIT_EXCEEDED

Channel SubQuery limits

If you encounter the error "Results from [FIELD] subset is above allowed payload size", it means you are requesting channels along with its subqueries members and/or content and the payload size exceeded the maximum allowed for a single query. If this happens, you can reduce the number of pages requested using the first parameter or query channelMembers or channelContent via their own separate queries.

Example of a possible broken query:

Copy
query channels(first: 2000) {
      edges {
        node {
          id
          members {
            userId
          }
          content {
            id
          }
        }
      }
    }
  }

Try reducing the number of results:

Copy
query channels(first: 500) {
      edges {
        node {
          id
          members {
            userId
          }
          content {
            id
          }
        }
      }
    }
  }

Requesting separately

If your dataset doesn't allow you to query all members and content at once due to payload size limit, you can use separate queries for members and content and join your data afterwards using the channelId.

Copy
query {
  channelMembers(first:500) {
    nodes{
      channelId
      createdOn
      userId
    }
  }
}

INTERNAL_SERVER_ERROR

This error code means that something has gone wrong on our end, and we are working to resolve it as quickly as possible.