Simple client for Leanpub API
Last updated 4 years ago by bebraw .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install leanpub 
SYNC missed versions from official npm registry.

build status

leanpub - Simple client for Leanpub API

This library provides a simple wrapper for Leanpub API. Before starting to use it, you will need to generate an API key for yourself.


As the JavaScript API is missing plenty of functionality still, I've outlined curl based alternatives below. The idea is that these will be converted to JavaScript as time permits. PRs are welcome!

Connecting to the API

To quote the official documentation:

  1. Go to your author dashboard
  2. Click on the button that says "Enable the Leanpub API" and copy the API key. You are going to need it to access the API.

The API depends on your book slug: https://leanpub.com/SLUG.

var leanpub = require('leanpub');
var client = leanpub({
  // optional. without this most operations won't work
  // or return partial data
  apiKey: process.env.LEANPUB,
  bookSlug: process.env.SLUG


// the API relies on optional callbacks. Example:
client.previewFull(function(err, d) {
  if(err) {
   return console.error(err);



There are a few ways to generate a preview version of your book:


client.previewSubset(); // preview based on Subset.txt

// Not supported yet. PR welcome.
// See https://leanpub.com/help/api#previewing-and-publishing for reference.
// client.previewSingle(...);


It is possible to publish a book silently or with email:


client.publish(); // silent publish
  releaseNotes: 'Please let me know what you think'

Getting Job Status

To know how your current job is progressing, use:


client.jobStatus(function(err, d) {
  if(err) {
    return console.error(err);


Getting Book Summary Information

Leanpub provides both public and private (download urls etc.) information about books:


client.bookSummary(function(err, d) {
  if(err) {
    return console.error(err);


Getting the Latest Version of the Book

You can get book urls through summary information. These should be kept secret. You can book files like this:


// not implemented yet. PR welcome. This should stream to the given file
//client.latestVersion({format: 'pdf', output: 'yourbook.pdf'}, cb);

Getting Sales Data

Sales data can be fetched in either JSON or XML like this:


  format: 'xml' // defaults to json
}, cb);

Individual sales can be fetched like this:


  format: 'xml', // defaults to json
  page: 2 // defaults to page 1, each page contains 50 sales
}, cb);


Existing coupons can be fetched like this:


  format: 'xml' // defaults to json
}, cb);

They can be created through POST:


  couponCode: 'testcoupon', // required
  packageDiscounts: [ // required
      discountedPrice: 10,
      packageSlug: 'book'
  startDate: new Date(), // required
  endDate: new Date(), // optional
  maxUses: 1, // required
  note: 'test coupon', // optional
  suspended: false // optional, defaults to false
}, cb);

And updated through PUT:


  couponCode: 'testcoupon', // required
  suspended: true
}, cb);



leanpub is available under MIT. See LICENSE for more details.

Current Tags

  • 0.1.4                                ...           latest (4 years ago)

5 Versions

  • 0.1.4                                ...           4 years ago
  • 0.1.3                                ...           5 years ago
  • 0.1.2                                ...           5 years ago
  • 0.1.1                                ...           5 years ago
  • 0.1.0                                ...           5 years ago
Maintainers (1)
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 1
Dependencies (2)
Dev Dependencies (3)

Copyright 2014 - 2017 © taobao.org |