@salable/sdk
v1.0.8
Published
The official Node.js SDK for the [Salable](https://salable.app) API. An easy, type-safe wrapper that makes it simple to manage products, plans, subscriptions, and more.
Downloads
924
Keywords
Readme
Salable Node SDK
The official Node.js SDK for the Salable API. An easy, type-safe wrapper that makes it simple to manage products, plans, subscriptions, and more.
Table of Contents
Getting Started
Installation
npm install @salable/sdkInitialisation
Create a single Salable instance using your secret API key. All API calls are made through this instance.
import { Salable } from '@salable/sdk';
const salable = new Salable('your-api-key');Your API key is sent as a
Bearertoken on every request. Keep it secure and out of version control.
CRUD Pattern
Every resource follows the same fluent interface pattern:
| Operation | Method | Example |
|-----------|--------|---------|
| List all | .get() | salable.api.products.get() |
| Get one | .byId(id).get() | salable.api.products.byId(id).get() |
| Create | .post(body) | salable.api.products.post({ name: '...' }) |
| Update | .byId(id).put(body) | salable.api.products.byId(id).put({ name: '...' }) |
| Delete | .byId(id).delete() | salable.api.products.byId(id).delete() |
Error Handling
All methods throw an ErrorResponseBody for non-2xx responses. Wrap calls in a try/catch block:
try {
const product = await salable.api.products.byId('product-id').get();
console.log(product);
} catch (error) {
console.error('API error:', error);
}Common HTTP status codes returned:
| Status | Meaning |
|--------|---------|
| 400 | Bad request — check your request body |
| 401 | Unauthorised — check your API key |
| 403 | Forbidden — insufficient permissions |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Query Parameters
Query parameters are passed via the optional requestConfiguration argument accepted by every .get() call:
await salable.api.products.get({
queryParameters: {
limit: '20',
after: 'cursor-from-previous-page',
before: 'cursor-for-previous-page',
search: 'keyword',
},
});Pagination uses cursor-based after / before values returned in list responses.
