Skip to main content

This is a library for making requests to a Canvas LMS API.

Project description

Canvas LMS API Client Library



This is a library for making requests to a Canvas LMS API.


This project is tested with [tox](

Run the tox command to run checks and unit tests:
$ tox

By default, this project's tox runs:

* [flake8](
* [mypy](
* [pytest](

To create test coverage reports:
$ tox -e cov


Deployment to pypi is done with tox:
$ tox -e deploy
Make sure to bump the version in before deploying.


This project has Sphinx documentation at the following url:

The public Canvas LMS API documentation is also very useful:


To install, use pip:

pip install canvas_api_client

Or clone the repo:

git clone
cd canvas-lms-tools/canvas_api_client
python install


Adding the client as a dependency in your project's `requirements.txt`
file is the intended way to use the client.

#### REPL Example

$ python
>>> from canvas_api_client.v1_client import CanvasAPIv1
>>> url = ''
>>> token = '1396~xxxxxxxxxxxxxxxxxxxTHISxISxNOTxAxREALxTOKENxxxxxxxxxxxxxxxxxxxxx'
>>> api = CanvasAPIv1(url, token)
>>> l = api.get_account_blueprint_courses('1234')
>>> for r in l.json():
... print(r['id'], r['name'])
49400 Course_9000_Blueprint
57600 Spring_2018_Blueprint

#### Script Example

This very simple example requires a few environment variables. The
API URL and token should be something like:

The recommended approach is to use a config file with limited read
permissions instead of environment variables, but bear with me here.

Once installed in your project via pip, use as follows:

from os import environ
from pprint import pprint

from canvas_api_client.v1_client import CanvasAPIv1

url = environ.get('CANVAS_API_URL')
token = environ.get('CANVAS_API_TOKEN')

api = CanvasAPIv1(url, token)
params = {"override_sis_stickiness": "true"}
response = api.import_sis_data('1', './courses.csv', params=params)

print('SIS Import Response:')

#### CanvasAPIv1

This library is meant to be imported into your code. The `CanvasAPIv1` client
object requires a `api_url` argument and a `api_token` argument. The `api_url`
should likely be defined in a configuration file, and should be the full API
URL without the endpoint, e.g. ``. The `api_token`
should similarly be defined in a config file, and is the token generated in
the Canvas settings page.

There are a few helper functions that assist in sharing code between methods
in `CanvasAPIv1` which are worth pointing out. For example, there is a method
for each request type, such as `._get()` for GET requests, etc. Each one of
these request type methods invokes `self._send_request()` which takes a
number of parameters and returns a
object by default. Most of the public methods of the api client thus return
a `Response` object, so the caller will have access to the typical response
methods, such as `response.json()`.

I say "by default", because it is possible to pass in your own requests
library. This is not necessarily recommended; this capability only exists for
the sake of easy dependency injection in unit testing as well as compatibility
with libraries such as requests-oauthlib.

Refer to the client interface [documentation](#documentation) for more information.


#### Building Wheels

Building the wheel:

python bdist_wheel

#### Installing Wheels

How to install the client for testing:

pip uninstall canvas_api_client || echo "Already uninstalled."
pip install --no-index --find-links=dist canvas_api_client

Alternatively, install by specifying the full or relative path to the `.whl` file:

pip install --no-index /path/to/canvas-lms-tools/canvas_api_client/dist/canvas_api_client-<version>-py2.py3-none-any.whl

(You may need to `pip install wheel` first if you are installing from another
project. Consult [stack overflow](
for more help.)

#### Sphinx Docs

Creating the docs:

cd docs
pip install -r requirements.txt
pip install canvas_api_client
make html
open build/html/index.html

Deploying the docs to GitHub pages:

git checkout master
git pull
git branch -D gh-pages
git checkout -b gh-pages
rm -rf ./*
touch .nojekyll
git checkout master canvas_api_client/docs/
< build the docs as above >
mv canvas_api_client/docs/build/html/* ./
rm -rf canvas_api_client
git add -A
git commit
git push -f origin gh-pages

For more info see the [GitHub Pages documentation](,
the [Sphinx docs](,
or the following [script docs](


This project was originally created with the following "cookiecutter" tool:

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for canvas-api-client, version 0.2.11
Filename, size File type Python version Upload date Hashes
Filename, size canvas_api_client-0.2.11-py2.py3-none-any.whl (8.7 kB) File type Wheel Python version py2.py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page