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; add params for 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.