node package manager


Syncano Javascript Library

npm version Circle CI

This library enables you to interact with the Syncano platform via Javascript. For more information on the platform, please refer to the docs and the FAQ.

Also check out our libraries for iOS, Python, Ruby, Android and Arduino. We also have an AngularJs integration available.

Getting started

In order to use the plaftorm, you need an account - you can sign up here.

The library can be used server-side and client-side. You can install the library using npm, bower or by downloading a release from the Github repository.

Installing from Bower

bower install syncano --save

Client-side usage

<script src="path/to/bower_components/syncano/dist/syncano.min.js"></script>

Installing from NPM

npm install syncano --save

Server-side usage

The library supports the CommonJS syntax:

var Syncano = require('syncano');

You can also use it with ES6 modules:

import Syncano from 'syncano';

Creating a connection

To create a connection, simply initialize the Syncano object with the following configuration parameters:

// create a connection with an account key
var connection = Syncano({ accountKey: 'MY_ACCOUNT_KEY'});
// create a connection with a user key
var connection = Syncano({ userKey: 'USER_KEY'});
// create a connection with a social token
var connection = Syncano({ socialToken: 'SOCIAL_TOKEN'});
// create a connection with a api key
var connection = Syncano({ apiKey: 'API_KEY'});

From now on, you can access all of the objects on the platform via the connection object.

Basic interactions

Model instances

The connection you configured in the previous step has a set of factories that make interacting with objects on the platform easier. For example, if you would like to create a new instance object, you can do it like so:

var instance = connection.Instance({ name: 'INSTANCE_NAME', description: 'INSTANCE_DESCRIPTION' });

You can later save the instance, by calling its save method:;

Nested models

The objects (models) are also nested, so if you would like to list the Classes of an Instance, there's an elegant function chain for that:

connection.Instance({name: 'silent-dawn-3609'}).classes().list()


Every model has a static please method that returns a QuerySet object allowing you to perform additional queries like like listing objects:



The library uses Promises to enforce writing more readable and elegant code. You can get the result of a query with the then metod and the errors with the catch method:

  .then(function(result) {
    // handle result
  .catch(function(error) {
    // handle error


This library is built using Stampit. If you find a bug, feel free to submit an issue. If you would like to directly contribute to the library, we are open for pull requests.