JS Client for WooCommerce REST API CRUD Ops
Use @woocommerce/woocommerce-rest-api to GET, POST, PUT, DELETE WooCommerce data like products/orders via Axios promises; requires store URL, consumer key/secret.
Initialize with Store Credentials for v3 API
Install via npm install --save @woocommerce/woocommerce-rest-api. Create instance with required url (e.g., http://example.com), consumerKey (ck_...), consumerSecret (cs_...), and optional version: 'wc/v3'. Supports ESM (import WooCommerceRestApi) and CJS (require(...).default). Generate keys per WooCommerce docs; explore endpoints at woocommerce.github.io/woocommerce-rest-api-docs.
Optional configs include wpAPIPrefix for custom WP REST paths, encoding: 'utf-8', queryStringAuth: true for HTTPS Basic Auth in queries, port like '8080', timeout integer, and axiosConfig object to override Axios settings like requests.
Perform CRUD with Endpoint Methods and Params
All methods return Axios promises:
- GET:
api.get('products', { per_page: 20 })fetches lists or singles like 'orders/12'. - POST:
api.post('products', { name: 'Premium Quality', type: 'simple', regular_price: '21.99' })creates; addparamsfor queries. - PUT:
api.put('products/1', { sale_price: '11.99' })updates specifics. - DELETE:
api.delete('products/1', { force: true })removes (force skips trash). - OPTIONS:
api.options('customers/2', params)for metadata.
Endpoints like 'customers', 'orders/1234'; data as JSON objects. Params as objects for queries like per_page, force.
Chain Promises for Response Handling
Loaded responses expose status, headers (e.g., 'x-wp-totalpages', 'x-wp-total'), data. Catch 4xx/5xx errors via error.response. Always use .finally():
const api = new WooCommerceRestApi({ /* options */ });
api.get('products', { per_page: 20 })
.then(response => {
console.log(response.status, response.headers, response.data);
})
.catch(error => {
console.log(error.response.status, error.response.data);
})
.finally(() => { /* cleanup */ });
Same pattern for post/put/delete. View full changelog at GitHub for updates.