Have ideas to improve npm?Join in the discussion! »


    1.3.1 • Public • Published

    Magento2 API Wrapper

    License: MIT NPM Dependencies Builds Coverage

    Small Magento 2 API client that's ready to use and extend

    Note: Currently only works in Node environment. But, it should be easy to make it compatible in browsers. Feel free to submit a merge request or contact me.


    npm install magento2-api-wrapper


    As a guest

    const Magento2Api = require('magento2-api-wrapper')
    var consumer = new Magento2Api({ api: { url: 'https://localhost' }})
      .then(data => console.log)
    // or in async functions
    var countries = await customer.get('directory/countries')

    As a admin/customer

    // Api Keys: Magento Admin > System > Extensions > Integration
    var admin = new Magento2Api({ api: {
      url: 'https://localhost',
      consumerKey: 'xxx',
      consumerSecret: 'xxx',
      accessToken: 'xxx',
      tokenSecret: 'xxx',
    admin.get('products', {
      params: {
        searchCriteria: {
          currentPage: 1,
          pageSize: 1,
      .then(data => console.log)

    Responses: Successfull response returns plain Magento data. Not wrapped as in Axios.

    Methods / Properties

    It provides all same methods as Axios: https://github.com/axios/axios#request-method-aliases

    • .axios: Axios - get axios instance
    • .baseUrl: string - get base url
    • .getStoreBaseUrl(storeCode: string): string - gets store scoped base url
    • .request(config): Promise
    • .get(url: string, config?: Object): Promise
    • .delete(url: string, config?: Object): Promise
    • .head(url: string, config?: Object): Promise
    • .options(url: string, config?: Object): Promise
    • .post(url: string, data?: Object, config?: Object): Promise
    • .put(url: string, data?: Object, config?: Object): Promise
    • .patch(url: string, data?: Object, config?: Object): Promise


    Constructor Options

    • api.url: string - required - a baseUrl for magento instace
    • api.consumerKey: string - (optional) - for authentication
    • api.consumerSecret: string - (optional) - for authentication
    • api.accessToken: string - (optional) - for authentication
    • api.tokenSecret: string - (optional) - for authentication
    • axios: Object - (optional) - extra Axios configuration. May be used for example to allow self-signed certificates

    Method options

    When executing any of the methods like .get, .post you may use theese extra axios config options:

    • storeCode: string - setting storeCode will change base url so it's like https://example.org/rest/{storeCode}/V1/


    Errors are thrown in same situations as in Axios. The error has extra property:

    • magento: Object - A Magento 2 Api instance


    Adding interceptors works exactly same as in axios. Well, you'll add them to the axios instance directly, so the best would be to refer here to axios documentation: https://github.com/axios/axios#interceptors

    const Magento2Api = require('magento2-api-wrapper')
    var testApi = new Magento2Api({ api: { url: 'https://localhost' }})
    testApi.axios.interceptors.response.use(function (data) {
      // on successfull response

    Useful Examples

    Allowing self-signed certificate

    const Magento2Api = require('magento2-api-wrapper')
    const https = require('https')
    var selfSignedApi = new Magento2Api({
      api: { url: 'https://localhost' },
      axios: {
        httpsAgent: new https.Agent({
          rejectUnauthorized: false

    Run tests

    npm run test


    npm i magento2-api-wrapper

    DownloadsWeekly Downloads






    Unpacked Size

    17.3 kB

    Total Files


    Last publish


    • avatar