Unofficial ShipStation API wrapper for Node.js, providing a modern, type-safe interface to both the v1 and v2 ShipStation APIs.
- Full support for both ShipStation v1 and v2 APIs
- Complete TypeScript support and request validation with detailed type definitions
- Automatic rate limiting handling
- Mock API support for testing (only available for v2 API)
- Promise-based async/await interface
- Customizable request configurations with automatic retries
Using npm:
$ npm install shipstation-nodeUsing pnpm:
$ pnpm add shipstation-nodeUsing bun:
$ bun add shipstation-nodeAll requests should be made through an instantiated ShipStation class. You only need to set the credentials for the API version(s) you plan to use.
import ShipStation from 'shipstation-node';
// Create instance
const shipstation = new ShipStation({
credentials: {
// For making v1 API calls
v1: { apiKey, apiSecret },
// For making v2 API calls
v2: { apiKey }
}
});You can make API requests to both v1 and v2 endpoints:
// v1 Example - List Tags (https://www.shipstation.com/docs/api/accounts/list-tags/)
const tags = await shipstation.v1.accounts.listTags();
// v2 Example: Get Tags (https://docs.shipstation.com/openapi/tags/list_tags)
const tagsV2 = await shipstation.v2.tags.get();
// Working with orders (https://www.shipstation.com/docs/api/orders/list-orders/)
const orders = await shipstation.v1.orders.list({
pageSize: 100,
orderStatus: 'awaiting_shipment'
});Use the mock API for testing (v2 API only):
const shipstation = new ShipStation({
credentials: { v2: { mock: true } }
});Configure automatic retry behavior for failed API calls using axios-retry:
const shipstation = new ShipStation({
credentials: {
/* ... */
},
retryConfig: {
retries: 3,
retryDelay: (retryCount) => retryCount * 1000,
retryCondition: (error) => {
return axios.isRetryableError(error);
}
}
});Customize the underlying axios request settings:
const shipstation = new ShipStation({
credentials: {
/* ... */
},
requestConfig: {
timeout: 5000,
headers: {
'Custom-Header': 'value'
}
}
});Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature-name) - Commit your changes (
git commit -m 'Add feature') - Test your changes (
pnpm run buildandpnpm run lint) - Push to the branch (
git push origin feature-name) - Open a pull request with a thorough description
If you encounter any issues, feel free to open an issue.
This project is licensed under the MIT License.
Created and maintained by Jake Leventhal.