New to our API?

These simple steps will guide you and at the end, you will be able to send your first request!


An Akeneo PIM is already installed (v1.7 or 2.x)

This can seems pretty obvious. But yeah! You will need a PIM already installed if you want to make request on PIM data.

And of course, you also have to make sure that you can access it from where you are requesting.

Pro tip: if you don't have access to a PIM, you can use our demo instance at

You are in contact with the administrator of the Akeneo PIM

The Web API on each PIM installation can be restricted by its administrator. So you will have to make sure that you are in contact with him so that you can ask to grant you the access to the PIM data through the API.

If you are yourself the PIM administrator of the installed PIM on which you want to make requests via the API, that's ok. But before going further on the next steps, we advise you to follow the Getting started dedicated to the PIM admin first. Here you go!

You are a user in the Akeneo PIM

To access the Web API, you will have to be logged in in the system as a precise user. So make sure that you have a username and a password that corresponds to a PIM user of the PIM on which you want to make a request.


Ask for your OAuth client id and secret

To be authenticated when using the API, you will need to get a client id and a secret.

The PIM administrator is responsible for giving these credentials. Ask for it.

For your interest, the client id and the secret sould have the following form:

Client id


Get a token

So now you have your client id and secret, you are ready to get a token.

Concatenate your client id and secret with a : in between. For example, with the client id and secret given as example in step 1, this will give:


Then encode this string in base 64. There are utilities functions in every languages to do so and even websites, like this one.

You can also use the terminal to get the base64 encoded string:

echo -n 1_44gemst9k9a8kkocckcck444o4o8gk4880kks84sgs0w88kssc:3wu8h23mn668kskks4owowo8cgsskswog0gw84cgsksgc0wg4c | base64

You will get:


Then ask for a token by posting a request on the authentication URI specially crafted for this purpose: where-your-PIM-is-hosted/api/oauth/v1/token. Set the base64 encoded string as the Authorization header. The body of the request should be a JSON containing your username and password. Make sure that this username/password corresponds to your PIM user account on the PIM instance you want to make requests via the API. Below is an example of the request.

POST /api/oauth/v1/token HTTP/1.1
Host: where-your-PIM-is-hosted
Content-Type: application/json
Authorization: Basic MV80NGdlbXN0OWs5YThra29jY2tjY2s0NDRvNG84Z2s0ODgwa2tzODRzZ3Mwdzg4a3NzYzozd3U4aDIzbW42Njhrc2trczRvd293bzhjZ3Nza3N3b2cwZ3c4NGNnc2tzZ2Mwd2c0Yw==

  "grant_type": "password",
  "username": "yourusername",
  "password": "yourpassword"


The PIM should answer with a 200 status and a JSON in the body response that will have this format:

    "access_token": "MTE0NzNkNzI5YTk0ZTBlNmFlNTI5NmVkOWJhZjUxYWRkN2UzZWIwOWNkMTkwNzY5Mzk3NGViMDFmYzdlODJlMg",
    "expires_in": 3600,
    "token_type": "bearer",
    "scope": null,
    "refresh_token": "ZDkyMzA2NDhlZjQ2MGQyMDQ2MWRiMDBmOTdkZjQ5ODY5Mzc3MTEzMjVkNTkwZThmNWRlNWY0MzllYWMxZWQ5ZA"


That's it! You just got your token. It's the string in the access_token property.

This token can be used during 1 hour. Then you will have to refresh it. Browse the dedicated documentation for more info.


Make your first request

Once you get your token, you just have to give it as an Authorization header of every request you make through the API.

For example, say you want to get the product with the identifier my_product, you will use the following the request:

GET api/rest/v1/products/my_product HTTP/1.1
Host: where-your-PIM-is-hosted
Content-Type: application/json
Authorization: Bearer NzFiYTM4ZTEwMjcwZTcyZWIzZTA0NmY3NjE3MTIyMjM1Y2NlMmNlNWEyMTAzY2UzYmY0YWIxYmUzNTkyMDcyNQ
Don't forget to mention the keyword Bearer before the token in the Authorization header.

If everything goes well, you will receive a 200 response with a body that looks like this:

  "identifier": "myproduct",
  "family": null,
  "groups": ["group_code_1", "group_code_3"],
  "variant_group": null,
  "categories": ["category_code_1"],
  "values": {
        "locale": null,
        "scope": null,
        "data": 10
  "associations": {
    "pack": {
      "groups": [],
      "products": ["product_identifier_1","product_identifier_2"],
      "product_models": []
     "x_sell": {
       "groups": [],
       "products": [],
      "product_models": []


Well, this is your product. You made it, you made your first request!

If you experienced any error, please check the troubleshooting guide.

That's it! You are now ready to build amazing tools!

Start building by

Found a typo or a hole in the documentation and feel like contributing?
Join us on Github!