Usage
The duolingo-client package exposes both a high-level Duolingo API client as
well as some low-level utility functions that can help you call the Duolingo
API directly.
High-Level Client
The high-level client is exported as the DuolingoClient class. This class
handles request creation and response parsing and tries to present a reasonable
data model for the Duolingo.
Creating a client
Create an instance of DuolingoClient to use the Duolingo API.
const {DuolingoClient} = require('duolingo-client')
const client = new DuolingoClient()
// call unauthenticated APIsLogging in
Some Duolingo APIs require authentication. To call an authenticated API, you must first login with a valid username and password.
await client.login('username123', 'secret password')
// call authenticated (or unauthenticated) APIsLogging out
You can discard user credentials by either logging in to a different user or by using the logout method.
await client.login('username123', 'secret password')
// call authenticated APIs as username 123
await client.login('username456', 'another secret')
// call authenticated APIs as username 456
// this is NOT async because it's not actually an API call.
client.logout()The DuolingoClient documentation describes what APIs are available and which
APIs require authentication.
Low-Level Utilities
login
The login function can be used to get a JWT for authenticated API calls.
This is the underlying function for DuolingoClient.login.
const {login} = require('duolingo-client')
const {jwt, userId} = await login('username123', 'secret password')You can call the Duolingo API with any HTTP client by setting the
Authorization header with the Bearer scheme.
const headers = {Authorization: `Bearer ${jwt}`}
// or
setHeader('Authorization', `Bearer ${jwt}`)This function also returns the user's id. The user id is not needed for authorization, but some API calls use a user id instead of a username.