API Reference Introduction

Using the API

All API calls require an access token (for private access) or Client ID (for public access). See Making API Calls.

Quizlet implements a RESTful API which means (among other things) that you specify different HTTP methods (or "verbs") depending on the action you want to take.

HTTP MethodWhat it doesExample
GETRetrieves a single item, or
a list of items
GET /2.0/sets/415,
GET /2.0/users/catchdave
POSTCreates a new itemPOST /2.0/sets,
POST /2.0/classes
PUTUpdates an itemPUT /2.0/sets/415,
PUT /2.0/users/catchdave
DELETEDeletes an itemDELETE /2.0/sets/415,
DELETE /2.0/classes/123

Alternative way to specify HTTP methods

Because some HTTP clients don't support PUT and DELETE methods, we support method overriding. Normally if you wanted to delete set #415 you would use the DELETE HTTP method like:

DELETE /2.0/sets/415

However, if you can't use the DELETE or PUT method, you can use POST instead:

POST /2.0/sets/415?method=delete
POST /2.0/sets/415?method=put

Common Parameters

The below optional parameters are available across all API calls.

whitespace0 or 1Add this parameter (whitespace=1) to indent the results for easier human reading of the raw results. This can make testing/debugging easier, and has no effect on the results. Without this parameter, Quizlet will minimize whitespace and network traffic.0
callbackstringA javascript function name for use inside a web application, using the JSON-P method. callback=foo will wrap the response in the foo function: foo({...data...})(none)


You can optionally specify the language of API responses by sending us the language in the Accept-Language header of your request. If you don't specify a language via the header, English is assumed.

No user data is translated, but all expected errors are translated.
The list of current languages that you can specify are:

  • en- English

You can specify the language as either the two-letter ISO-639-1 language code (e.g. de) or the language and ISO-3166 country code together (e.g. de-DE).

An example API request with the language set in the header (this example selects french):

 GET /2.0/sets/415 HTTP/1.1 Host: api.quizlet.com Accept-Language: fr-FR 


All data returned in responses are raw, meaning we do not HTML-escape user content. If you are displaying content in an html environment, you MUST HTML-escape strings you receive from Quizlet.

Possible HTTP Response Codes

A 200-level response code means your request succeeded and a 400 or 500-level response code means an error occurred.

  • 200 OK - The request you sent was successful (and there is content in the body of the response).
  • 201 Created - You created a new resource (e.g. you created a new set) and it was successful. The HTTP response will include the location of the new resource you created.
  • 204 No Content - The request you sent was successful, and there is no content in the body of the response (this is common with delete and some edit actions).
  • 400 Bad Request - There is something wrong with the data you provided (e.g. You didn't send a "title" when creating a new set).
  • 401 Unauthorized - The access token you provided does not have permission to do what you asked (e.g. Viewing a private set using a public access token)
  • 404 Not Found - The resource you specified doesn't exist (e.g. the set id you provided doesn't exist or has been deleted).
  • 405 Method Not Allowed - The resource exists, but what you requested is not allowed (e.g. we don't allow deleting users via the API).
  • 500 Server Error - An unknown internal error occurred. We're automatically notified of these.

Error Responses

All 400-level and 500-level HTTP response codes are errors. Quizlet will provide a JSON-encoded body with some details about the reason for the error. For example:

HTTP/1.1 404 Not Found
	"http_code": 404,
	"error": "item_not_found",
	"error_title": "User Not Found",
	"error_description": "There is no user with username foobar"
  • error is a programmer-friendly identifier. Do not show this to users.
  • error_title and error_description are translated strings and can be shown to the end user.

EXCEPTION: OAuth 2.0 errors are always in English. They should only occur as a result of a programming error on your part. The OAuth 2.0 error attributes are:

  • invalid_request
  • invalid_client
  • unauthorized_client
  • redirect_uri_mismatch
  • access_denied
  • unsupported_response_type
  • invalid_scope
  • invalid_grant
  • unsupported_grant_type

Validation Errors

Errors caused by Quizlet's validation checks will have an additional attribute called validation_errors which is an array of all the validation errors that occurred. All the errors are translated and presentable to the end user.

An example validation error:

HTTP/1.1 400 Bad Request
  "http_code": 400,
  "error": "validation_errors",
  "error_title": "Set Creation Error",
  "error_description": "The following validation errors occurred:\nYou must have a title\nBoth the terms and definitions are mandatory",
  "validation_errors": [
    "You must have a title",
    "Both the terms and definitions are mandatory",
    "You must specify the terms language",
    "You must specify the definitions language"