
Product
Socket for Jira Is Now Available
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.
particle-api-js
Advanced tools
JS Library for the Particle Cloud API for Node.js and the browser
Installation | Development | Conventions | Docs | Examples | Building | Releasing | License
particle-api-js is written in TypeScript and ships with full type declarations. All methods return fully typed responses — no casting needed:
import Particle from 'particle-api-js';
import type { DeviceInfo, LoginResponse, JSONResponse } from 'particle-api-js';
const particle = new Particle({ auth: 'your-token' });
// Response body is fully typed — no casting needed
const response = await particle.getDevice({ deviceId: 'abc123' });
console.log(response.body.name); // string — fully typed as DeviceInfo
// Login response
const loginResponse = await particle.login({ username: 'user@example.com', password: 'pass' });
const token = loginResponse.body.access_token; // string
All request option types and response types are exported from the package:
import type { GetDeviceOptions, ListDevicesOptions, JSONResponse } from 'particle-api-js';
particle-api-js is available from npm to use in Node.js, bower or jsDelivr CDN for use in the browser.
$ npm install particle-api-js
$ bower install particle-api-js
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/particle-api-js@8/dist/particle.min.js">
</script>
All essential commands are available at the root via npm run <script name> - e.g. npm run lint. To view the available commands, run: npm run
npm test # lint + typecheck + unit tests
npm run test:unit # unit tests only
npm run test:watch # unit tests in watch mode
npm run test:browser # browser tests via karma
npm run coverage # unit tests with coverage report
The Agent integration tests (source) depend on a real HTTP API backend and a valid Particle access token. Set environment variables to avoid test failures:
PARTICLE_API_BASE_URL=<url> PARTICLE_API_TOKEN=<token> npm test
.spec.ts, .test.ts, .integration.ts) in the test/ directoryimport syntax — compiled output uses require() via module: "commonjs" in tsconfig.json.ts execution (no pre-compilation needed)expect style) + chai-subset for partial matching + sinon-chai for spy/stub assertions + chai-as-promised for promise assertionstest/ following the naming convention: <Module>.spec.tsimport { sinon, expect } from './test-setup';
import MyModule from '../src/MyModule';
describe/it blocks with expect assertions:describe('MyModule', () => {
afterEach(() => {
sinon.restore();
});
it('does something', () => {
const result = new MyModule();
expect(result.value).to.equal('expected');
});
});
containSubset:expect(result).to.containSubset({
method: 'get',
uri: '/v1/devices'
});
npm run test:unit../src/<Module> (not ../lib/src/<Module>)sinon.restore() in afterEach to clean up stubsFakeAgent (in test/FakeAgent.ts) for mocking HTTP requests in Particle API testsany and unknown types in test files
Source code lives in the ./src directory and is built for release via the npm run build command. To create a simple script file to test your changes, follow these steps:
js file on your local machine: touch my-api-test.js (somewhere outside of the root of this repo)js file, init the api client like so:const ParticleAPI = require('./path/to/particle-api-js'); // Make sure to substitute to correct path
const api = new ParticleAPI();
const devices = await api.listDevices({ auth: '<particle-auth-token>' });
console.log('MY DEVICES:', devices);
node ./path/to/my-api-test.jsNOTE: Requiring the root directory works via the main field specified in Particle API JS' package.json file (docs)
npm scripts are the primary means of executing programmatic tasks (e.g. tests, linting, releasing, etc) within the repo. to view available scripts, run npm run.
when creating a new script, be sure it does not already exist and use the following naming convention:
<category>:[<subcategory>]:[<action>]
our standard categories include: test, lint, build, clean, docs, package, dependencies, and release. top-level scripts - e.g. npm run clean - will typically run all of its subcategories (e.g. npm run clean:dist && npm run clean:tmp).
npm itself includes special handling for test and start (doc: 1, 2) amongst other lifecycle scripts - use these to expose key testing and start-up commands.
sometimes your new script will be very similar to an existing script. in those cases, try to extend the existing script before adding another one.
main - refrain from merging if you cannot so you don't leave unpublished changes to otherstest/ directory and are named like *.spec.ts, *.test.ts, or *.integration.tsTODO (mirande): <message>First, read the documentation for Particle API JS on the Documentation website. It contains examples to get started.
For more details, read the API reference on GitHub.
There are many snippets of using Particle API JS on the Documentation website and some complete examples in the GitHub examples directory.
Make your changes to the files in the src directory, then from the project directory run:
$ npm run build
The dist directory will contain the compiled and minified files that can be included in your project.
Run tests to make sure your changes are good:
$ npm test
Update the API docs with your changes:
$ npm run docs
See the release process in the RELEASE.md file.
Copyright © 2016 Particle Industries, Inc. Released under the Apache 2.0 license. See LICENSE for details.
FAQs
Particle API Client
The npm package particle-api-js receives a total of 2,197 weekly downloads. As such, particle-api-js popularity was classified as popular.
We found that particle-api-js demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.