Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A nodejs client library for the Rackspace Cloud APIs
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Rackspace API for Node.js

Developer's Note

This library is not officialy supported by Rackspace. Though I use it in production, its advised that you do so at your own risk. Please see the included LICENCE file for license details.

Please create an issue for any bugs you may experience and I will gladly accept pull requests if they fit the goals of the project.


node-rackspace aims to be a wrapper library for the following Rackspace Cloud APIs:

Though node-rackspace is framework agnostic, it exposes Connect compatible middleware for easy authentication with the Rackspace identity server.

Most interactions with the Rackspace API will require chaining requests together and thus will lead to complex and unreadable "callback nesting", a concept that should not be foreign to the experienced Nodejs hacker. node-rackspace is designed to use a method chaining API to clean up requests and eliminate nested callbacks. Rest assure, all requests and operations are performed asyncronously despite the APIs appearance.

Getting Started


To install node-rackspace for use in your project, use npm:

~$ npm install node-rackspace

Example as Express middleware

var rackspace = require('node-rackspace'),
    express   = require('express'),
    app       = module.exports = express();

// Options hash to load Rackspace credentials
var options = {
  username: "captain",


-- or --

app.get('/some/route', rackspace.init(options), function (req, res, next) {

When used as middleware, node-rackspace automatically tracks and renews your API token.

Use as stand alone wrapper

var rackspace = require('node-rackspace');

// Options hash to load Rackspace credentials
var options = {
  username: "captain",

rackspace.auth(options, function (err) {


Cloud Files

Something went wrong with that request. Please try again.