Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Node.js library for the Clever API
CoffeeScript Other

Clever Javascript Library

Build Status


Via npm:

npm install clever


Clever = require('clever');
var clever = Clever({token: 'YOUR_BEARER_TOKEN'});

If you'd like to play around with our test data, please use the token: DEMO_TOKEN. See our developer guide for more information.

To use the outdated API key authentication method (not recommended!) pass the key when instantiating:

var clever = Clever('YOUR_API_KEY');

The clever package exposes objects corresponding to resources:

  • District
  • School
  • Section
  • Student
  • Teacher
  • Event

Each exposes a query API that closely resembles that of Mongoose. The available methods are find, findOne, and findById:

clever.District.find({}, function(error, districts) {
  assert(districts[0] instanceof clever.District);
  assert.equal(district.get('name'), 'Demo District');

clever.School.findOne({ name: "Clever Academy" }, function(error, school) {
  assert(school instanceof clever.School);
  assert.equal(school.get('name'), 'Clever Academy');

clever.School.findById('4fee004cca2e43cf27000001', function(error, school) {
  assert(school instanceof clever.School);
  assert.equal(school.get('name'), 'Clever Academy');

When no callback is passed, the methods return a query object that allows you to build up a query over time:

.where('name').equals('Clever Academy')

Query objects also support a stream interface for auto-pagination:

// pull sections 10 at a time
var count = 0;
var stream = clever.Section.find().limit(10).stream();
stream.on('data', function(section) {
  count += 1;
  assert(section instanceof clever.Section);
stream.on('end', function() {
  console.log(count, 'sections loaded');


Questions, feature requests, or feedback of any kind is always welcome! We're available at

Something went wrong with that request. Please try again.