Alkemics

Suggest Edits

API General info

 

The Alkemics API is based on REST. JSON is returned by all API responses. All our API uses SSL protocole.

To make our API documentation as interactive as possible, you can make requests to our API endpoints with the user credential.

You have not registered on our platform yet, go on https://stream.alkemics.com/#/signup to create your account.

Suggest Edits

Introduction

Alkemics Authentication

 

Authentication is a simple API allowing apps and users to interact with other Alkemics protected APIs.

Although some APIs are public, most of them require authorization and authentication. The protected APIs support token-based authentication.

Suggest Edits

Authentication Token

 
Suggest Edits

Create Token - V1 (Deprecated on 10/12/2018)

THIS VERSION WILL BE DEPRECATED ON 10/12/2018
PLEASE REFER TO THE V2 DOCUMENTATION: https://docs.alkemics.com/v2/reference#token-v2

The token can be obtained from the authentication server with your secret credentials. It expires after 30 days.

Those credentials were given to you when you registered on the platform. They are strictly confidential and must remain secret.

 
posthttps://apis.alkemics.com/auth/v1/token
{
    "client_secret": "azertyuiopqsdfghjk",
    "client_id": "123456789012345678901234567890",
    "grant_type": "client_credentials"
}
A binary file was returned

You couldn't be authenticated

{
  "access_token": "GENERATED_TOKEN",
  "token_type": "JWT"
}

Body Params

client_id
string

your client_id

client_secret
string

your client-secret

grant_type
string

the type of credentials used to retrieve the token, should be "client_credentials"

 
Suggest Edits

Create Token - V2 (from 10/07/2018)

The token can be obtained from the authentication server with your secret credentials. It expires after 2 hours.
When your API receives an HTTP 401 error you will need to re-authenticate using your credentials.

Those credentials were given to you when you registered on the platform. They are strictly confidential and must remain secret.

 
posthttps://apis.alkemics.com/auth/v2/token
{
    "client_secret": "azertyuiopqsdfghjk",
    "client_id": "123456789012345678901234567890",
    "grant_type": "client_credentials"
}
A binary file was returned

You couldn't be authenticated

{
  "access_token": "GENERATED_TOKEN",
  "token_type": "JWT"
}

Body Params

client_id
string

your client_id

client_secret
string

your client-secret

grant_type
string

the type of credentials used to retrieve the token, should be "client_credentials"

 
Suggest Edits

List organizations

 
gethttps://apis.alkemics.com/auth/v2/organization
curl --request GET \
  --url https://apis.alkemics.com/auth/v2/organization
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/auth/v2/organization' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/auth/v2/organization")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/auth/v2/organization");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/auth/v2/organization"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Query Params

organization_type
int32

The organization type: 1 is manufacturers, 2 is retailers

offset
int32

The offset to handle pagination

limit
int32

The limit of organizations to reply

 
Suggest Edits

Introduction

Product

 

The following routes allow you to interact with your Alkemics' product data.

Product information

All needed information regarding Alkemics product information format can be found Attributes documentation.

Authentication

You need to be authenticated to use the following routes, please refer to the Authentication API documentation to get an authorization token.The token then needs to be added in an Authorization header: Authorization: "Bearer AUTHORIZATION_TOKEN".

Suggest Edits

Product List

 
Suggest Edits

List Products

This method lists all the products you have access to.
If you would like to call this API from this website, you will be asked to provide your authentication token, please prefix this token with following wording 'Bearer '.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/public/v1/products
curl --request GET \
  --url https://apis.alkemics.com/public/v1/products
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/public/v1/products' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/public/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/public/v1/products");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/public/v1/products"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "totalResults": 1,
  "data": [
    {
      "_jsonVersion": 3,
      "gtin": "00366383600795",
      "updatedAt": "2017-03-24T09:42:20",
      "createdAt": "2017-01-03T13:27:07",
      "nameLegal": [
        {
          "expressedIn": {
            "normalizedCode": "en",
            "code": "eng-GB",
            "description": "English (UK)",
            "label": "english"
          },
          "data": "Soda 1.5L"
        }
      ]
  	}
  ],
  "offset": 0
}
{
  "totalResults": 1,
  "data": [
    {
      "_jsonVersion": 3,
      "synonyms": [],
      "updatedAt": "2017-03-24T09:42:20",
      "conservationAdvices": [],
      "productionVariantEffectiveDate": null,
      "shapeStatement": [],
      "productActivities": [],
      "keepRefrigeratedAfter": null,
      "isConsumerUnit": true,
      "compulsoryStatements": [],
      "isDerivedFrom": [],
      "createdShareValueStatement": [],
      "GPC": {},
      "isPracticeCompatible": [],
      "shape": null,
      "serves": [],
      "isComplementaryWith": [],
      "isDespatchUnit": null,
      "originText": [],
      "brandHighlight": [],
      "isOrderableUnit": null,
      "expressedIn": [
        {
          "referential": {
            "name": "languages"
          },
          "presentEntities": [
            {
              "normalizedCode": "fr",
              "code": "fra-FR",
              "description": "français",
              "label": "français"
            }
          ]
        },
        {
          "referential": {
            "name": "netcontents"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "currencies"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "weights"
          },
          "presentEntities": []
        }
      ],
      "createdAt": "2017-01-03T13:27:07",
      "manufactureInsights": [],
      "flavorStatement": [],
      "hasTags": [
        {
          "tag": "datavalidated",
          "createdAt": "2017-03-24T16:46:08"
        }
      ],
      "lifeCycle": 0,
      "isTaggedBy": [
        "datavalidated"
      ],
      "substitutes": [],
      "manufacturerSharingStatus": 1,
      "importClassification": [],
      "packagingMentions": [],
      "isSharedFrom": [],
      "allergens": [],
      "additives": [],
      "conservations": [],
      "hasBatchNumber": null,
      "tradeItemDateOnPackagingTypeCode": null,
      "packaging": [],
      "nameLegal": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda bien trop sucré"
        }
      ],
      "namePublicShort": [],
      "productionVariantName": [],
      "temperature": [],
      "isClassifiedIn": null,
      "isWrappedBy": [],
      "advertisedInformations": [],
      "startAvailabilityDateTime": null,
      "endAvailabilityDateTime": null,
      "dutyFeeTax": [],
      "hasNotableIngredients": [],
      "isSizedBy": [],
      "environmentStatement": [],
      "namePublicLong": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda "
        }
      ],
      "isPromotionalItem": null,
      "brand": {
        "code": "Alkemics - Kind",
        "description": "Alkemics - Kind",
        "label": "Alkemics - Kind"
      },
      "sparklingValue": null,
      "isLabeledBy": [],
      "kind": {
        "code": "Soda & autre BSA prête-à-boire",
        "description": "Soda & autre BSA prête-à-boire",
        "label": "Soda & autre BSA prête-à-boire"
      },
      "replaces": [],
      "typePackaging": {
        "code": "EACH",
        "description": "Unité de base",
        "label": "unité de base"
      },
      "specializes": {
        "isBrandedBy": {
          "code": "Alkemics - Kind",
          "description": "Alkemics - Kind",
          "label": "Alkemics - Kind"
        },
        "isIdentifiedBy": [
          {
            "reference": "00366383600795"
          }
        ],
        "kind": {
          "code": "Soda & autre BSA prête-à-boire",
          "description": "Soda & autre BSA prête-à-boire",
          "label": "Soda & autre BSA prête-à-boire"
        }
      },
      "nutritionalAllegations": [],
      "isEquivalentTo": [],
      "netContent": [],
      "history": [],
      "netWeight": [],
      "priceComparisonType": null,
      "originCountry": null,
      "isSubstitutableWith": [],
      "id": 4897534,
      "reasonForNewEAN": null,
      "isReplaceableBy": [],
      "productBenefits": [],
      "suggestedRetailPrice": [],
      "isMarkedRecyclable": null,
      "composition": [],
      "description": [],
      "warnings": [],
      "grossWeight": [],
      "consumptionAdvice": [],
      "assets": {
        "pictures": [
          {
            "definition": null,
            "typeOfInformation": 1,
            "fileEffectiveEndDateTime": null,
            "contentType": 1,
            "sequenceNumber": null,
            "angleHorizontal": 0,
            "format": null,
            "url": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/upload/20170324/a1f1405d-b087-46e8-9974-a76673fbf08c.jpg",
            "productFace": 1,
            "fileType": 0,
            "tags": [],
            "isPackshot": true,
            "exportables": [
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/1024x1024.jpg",
                "height": 1024,
                "width": 1024,
                "fileSize": 75841,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "452EFCFE",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/512x512.jpg",
                "height": 512,
                "width": 512,
                "fileSize": 67315,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "FDA73655",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/256x256.jpg",
                "height": 256,
                "width": 256,
                "fileSize": 51467,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "6EE9515B",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/128x128.jpg",
                "height": 128,
                "width": 128,
                "fileSize": 15057,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "0CB9BC04",
                "createdAt": "2017-03-24T09:42:15"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/64x64.jpg",
                "height": 64,
                "width": 64,
                "fileSize": 4675,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "B096DCFC",
                "createdAt": "2017-03-24T09:42:15"
              }
            ],
            "uniformResourceIdentifierOrigin": null,
            "updatedAt": "2017-03-24T09:42:15",
            "ratio": null,
            "fileEffectiveStartDateTime": null,
            "resolution": null,
            "angleVertical": 1,
            "createdAt": "2017-03-24T09:42:13",
            "angleOther": null
          }
        ],
        "lastUpdatedAt": {
          "pictures": "2017-03-24T09:42:15"
        },
        "enriched_contents": [],
        "videos": []
      },
      "isNomadic": null,
      "isPartitionedBy": [],
      "subdivisions": {},
      "contact": [],
      "offerOnPack": null,
      "isInvoiceUnit": null,
      "keepRefrigeratedBefore": null
    }
  ],
  "offset": 0
}

Query Params

filter_gtins_in
string

Filters by GTINs (several possible, comma-separated)

updated_at_from
date-time

Filters the minimum latest update date of the returned products. The format is a UNIX timestamp, for testing purpose, you can use http://www.unixtimestamp.com/ to generate one corresponding to whatever date.

limit
int32

The maximum number of products to be returned. The max value allowed is 500.

offset
int32

The index of the first product to be returned

filter_validation_status_in
int32

Filters based on the data quality checks

filter_tags_in
string

Filter products depending on a specific tag. Returns all products for which the specified tag is on

filter_source_include
string

Filters the fields returned by the API (fields are comma separated)

filter_target_productstatus_in
string

Filter products based on the product status on the retailer side. Possible values are : NOT_ASSIGNED, ASSIGNATION_PENDING, WAITING_TO_BE_SHARED, TO_BE_VALIDATED, REFUSED, UPDATED and ACCEPTED

next_page
int64

To use scroll search when you need to retrieve more than 10K products (see "Getting Started" for more info)

Headers

Accept-language
string

Filters by expected languages for labels associated to code values

 

Some details on the API response:

  • All the available fields are documented Attributes documentation
  • Most fields are only applicable to certain categories of products.
  • The API only returns the fields that are filled for a product. If a field is not present in the output, the data has not yet been filled for this product.
  • This API is paginated, to view the full data, you will have to make several calls, increasing the offset parameter each time. You can also update the value of limit to retrieve more products in each call to the API, default is 20. The total number of results is provided in the response field totalResults .
Suggest Edits

Product List (Advanced)

 
Suggest Edits

List Product (Advanced)

This method lists all the products you have access to.
If you would like to call this API from this website, you will be asked to provide your authentication token, please prefix this token with following wording 'Bearer '.

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/public/v1/products
curl --request GET \
  --url https://apis.alkemics.com/public/v1/products
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/public/v1/products' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/public/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/public/v1/products");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/public/v1/products"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "totalResults": 1,
  "data": [
    {
      "_jsonVersion": 3,
      "synonyms": [],
      "updatedAt": "2017-03-24T09:42:20",
      "conservationAdvices": [],
      "productionVariantEffectiveDate": null,
      "shapeStatement": [],
      "productActivities": [],
      "keepRefrigeratedAfter": null,
      "isConsumerUnit": true,
      "compulsoryStatements": [],
      "isDerivedFrom": [],
      "createdShareValueStatement": [],
      "GPC": {},
      "isPracticeCompatible": [],
      "shape": null,
      "serves": [],
      "isComplementaryWith": [],
      "isDespatchUnit": null,
      "originText": [],
      "brandHighlight": [],
      "isOrderableUnit": null,
      "expressedIn": [
        {
          "referential": {
            "name": "languages"
          },
          "presentEntities": [
            {
              "normalizedCode": "fr",
              "code": "fra-FR",
              "description": "français",
              "label": "français"
            }
          ]
        },
        {
          "referential": {
            "name": "netcontents"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "currencies"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "weights"
          },
          "presentEntities": []
        }
      ],
      "createdAt": "2017-01-03T13:27:07",
      "manufactureInsights": [],
      "flavorStatement": [],
      "hasTags": [
        {
          "tag": "datavalidated",
          "createdAt": "2017-03-24T16:46:08"
        }
      ],
      "lifeCycle": 0,
      "isTaggedBy": [
        "datavalidated"
      ],
      "substitutes": [],
      "manufacturerSharingStatus": 1,
      "importClassification": [],
      "packagingMentions": [],
      "isSharedFrom": [],
      "allergens": [],
      "additives": [],
      "conservations": [],
      "hasBatchNumber": null,
      "tradeItemDateOnPackagingTypeCode": null,
      "packaging": [],
      "nameLegal": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda bien trop sucré"
        }
      ],
      "namePublicShort": [],
      "productionVariantName": [],
      "temperature": [],
      "isClassifiedIn": null,
      "isWrappedBy": [],
      "advertisedInformations": [],
      "startAvailabilityDateTime": null,
      "endAvailabilityDateTime": null,
      "dutyFeeTax": [],
      "hasNotableIngredients": [],
      "isSizedBy": [],
      "environmentStatement": [],
      "namePublicLong": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda "
        }
      ],
      "isPromotionalItem": null,
      "brand": {
        "code": "Alkemics - Kind",
        "description": "Alkemics - Kind",
        "label": "Alkemics - Kind",
        "pictureUrl": "https://smedia.alkemics.com/brand/7919/picture/logo/original.png"
      },
      "sparklingValue": null,
      "isLabeledBy": [
                {
                    "startDate": null,
                    "endDate": null,
                    "detail": [],
                    "value": null,
                    "isConceptualizedBy": {
                        "code": "19096",
                        "description": "Agriculture Biologique Française",
                        "label": "Agriculture Biologique Française",
                        "pictureUrl": "https://smedia.alkemics.com/api/1/concept/19096/picture/logo/original.png"
                    },
                    "attributedAt": null
                }
      ],
      "kind": {
        "code": "Soda & autre BSA prête-à-boire",
        "description": "Soda & autre BSA prête-à-boire",
        "label": "Soda & autre BSA prête-à-boire"
      },
      "replaces": [],
      "typePackaging": {
        "code": "EACH",
        "description": "Unité de base",
        "label": "unité de base"
      },
      "specializes": {
        "isBrandedBy": {
          "code": "Alkemics - Kind",
          "description": "Alkemics - Kind",
          "label": "Alkemics - Kind"
        },
        "isIdentifiedBy": [
          {
            "reference": "00366383600795"
          }
        ],
        "kind": {
          "code": "Soda & autre BSA prête-à-boire",
          "description": "Soda & autre BSA prête-à-boire",
          "label": "Soda & autre BSA prête-à-boire"
        }
      },
      "owner": {
                "type": 1,
                "name": "Alkemics"
      },
      "nutritionalAllegations": [],
      "isEquivalentTo": [],
      "netContent": [],
      "history": [],
      "netWeight": [],
      "priceComparisonType": null,
      "originCountry": null,
      "isSubstitutableWith": [],
      "id": 4897534,
      "reasonForNewEAN": null,
      "isReplaceableBy": [],
      "productBenefits": [],
      "suggestedRetailPrice": [],
      "isMarkedRecyclable": null,
      "composition": [],
      "description": [],
      "warnings": [],
      "grossWeight": [],
      "consumptionAdvice": [],
      "assets": {
        "pictures": [
          {
            "definition": null,
            "typeOfInformation": 1,
            "fileEffectiveEndDateTime": null,
            "contentType": 1,
            "sequenceNumber": null,
            "angleHorizontal": 0,
            "format": null,
            "url": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/upload/20170324/a1f1405d-b087-46e8-9974-a76673fbf08c.jpg",
            "productFace": 1,
            "fileType": 0,
            "tags": [],
            "isPackshot": true,
            "exportables": [
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/1024x1024.jpg",
                "height": 1024,
                "width": 1024,
                "fileSize": 75841,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "452EFCFE",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/512x512.jpg",
                "height": 512,
                "width": 512,
                "fileSize": 67315,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "FDA73655",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/256x256.jpg",
                "height": 256,
                "width": 256,
                "fileSize": 51467,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "6EE9515B",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/128x128.jpg",
                "height": 128,
                "width": 128,
                "fileSize": 15057,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "0CB9BC04",
                "createdAt": "2017-03-24T09:42:15"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/64x64.jpg",
                "height": 64,
                "width": 64,
                "fileSize": 4675,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "B096DCFC",
                "createdAt": "2017-03-24T09:42:15"
              }
            ],
            "uniformResourceIdentifierOrigin": null,
            "updatedAt": "2017-03-24T09:42:15",
            "ratio": null,
            "fileEffectiveStartDateTime": null,
            "resolution": null,
            "angleVertical": 1,
            "createdAt": "2017-03-24T09:42:13",
            "angleOther": null
          }
        ],
        "lastUpdatedAt": {
          "pictures": "2017-03-24T09:42:15"
        },
        "enriched_contents": [],
        "videos": []
      },
      "isNomadic": null,
      "isPartitionedBy": [],
      "subdivisions": {},
      "contact": [],
      "offerOnPack": null,
      "isInvoiceUnit": null,
      "keepRefrigeratedBefore": null
    }
  ],
  "offset": 0
}

Query Params

status_shared_from
int32

Filters the shared status of the source products. (DRAFT=2 / PENDING=3 / ACCEPTED=4)

status_shared_with
int32

Filters the shared status of the target products. (DRAFT=2 / PENDING=3 / ACCEPTED=4)

updated_at_from
date-time

Filters the minimum latest update date of the returned products (UNIX timestamp)

updated_at_to
date-time

Filters the maximum latest update date of the returned products (UNIX timestamp)

filter_gtins_in
string

Filters by GTINs (several possible, comma-separated)

filter_target_market
int32

Filters by target market (ISO 3166-1 numeric)

filter_product_languages
string

Filters by product languages (several possible, comma-separated)

filter_validation_status_in
int32

Filters the validation status of the products (several possible, comma-separated). (VALIDATION_STATUS_NA=0 / VALIDATION_STATUS_NOT_OK=1 / VALIDATION_STATUS_OK=2)

filter_has_packshot
boolean

Filters on products which do have a packshot.

filter_has_no_packshot
boolean

Filters on products which have no packshot.

filter_pictures_last_updated_at_from
date-time

Filters the minimum latest update date for the images (UNIX timestamp)

filter_pictures_last_updated_at_to
date-time

Filters the maximum latest update date for the images (UNIX timestamp)

limit
int32

The maximum number of products to be returned. The max value allowed is 500

offset
int32

The index of the first product to be returned

filter_tags_in
string

Filter products depending on a specific tag. Returns all products for which the specified tag is on

filter_tags_not_in
string

Filter products depending on a specific tag. Returns all products for which the specified tag is off

filter_source_include
string

Filters the fields returned by the API (fields are comma separated)

filter_source_exclude
string

Filters the fields returned by the API (fields are comma separated)

filter_active_range
boolean

Identifies products part of the retailer's active range

next_page
int64

To use scroll search when you need to retrieve more than 10K products (see "Getting Started" for more info)

Headers

Accept-language
string

Filters by expected languages for labels associated to code values

 

Some details on the API response:

  • All the available fields are documented Attributes documentation
  • Most fields are only applicable to certain categories of products.
  • The API only returns the fields that are filled for a product. If a field is not present in the output, the data has not yet been filled for this product.
  • This API is paginated, to view the full data, you will have to make several calls, increasing the offset parameter each time.
Suggest Edits

Search Product

This method lists all the products you have access to.
If you would like to call this API from this website, you will be asked to provide your authentication token, please prefix this token with following wording 'Bearer '.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://apis.alkemics.com/public/v1/products/list
{
    "advanced_search": {
        "must": [
            {
                "query": "jam",
                "fields": [
                    "namePublicLong.data",
										"kind.label",
                    "description.data" 
                ]
            },
            {
                "query": "organic",
                "fields": [
                    "namePublicLong.data",
                    "description.data" 
                ]
            },
            {
                "query": "raspberry",
                "fields": [
                    "namePublicLong.data",
                    "description.data",
                    "composition.data"
                ]
            }
        ]
    },
    "offset": 0,
    "limit": 20
}
A binary file was returned

You couldn't be authenticated

{
  "totalResults": 1,
  "data": [
    {
      "_jsonVersion": 3,
      "synonyms": [],
      "updatedAt": "2017-03-24T09:42:20",
      "conservationAdvices": [],
      "productionVariantEffectiveDate": null,
      "shapeStatement": [],
      "productActivities": [],
      "keepRefrigeratedAfter": null,
      "isConsumerUnit": true,
      "compulsoryStatements": [],
      "isDerivedFrom": [],
      "createdShareValueStatement": [],
      "GPC": {},
      "isPracticeCompatible": [],
      "shape": null,
      "serves": [],
      "isComplementaryWith": [],
      "isDespatchUnit": null,
      "originText": [],
      "brandHighlight": [],
      "isOrderableUnit": null,
      "expressedIn": [
        {
          "referential": {
            "name": "languages"
          },
          "presentEntities": [
            {
              "normalizedCode": "fr",
              "code": "fra-FR",
              "description": "français",
              "label": "français"
            }
          ]
        },
        {
          "referential": {
            "name": "netcontents"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "currencies"
          },
          "presentEntities": []
        },
        {
          "referential": {
            "name": "weights"
          },
          "presentEntities": []
        }
      ],
      "createdAt": "2017-01-03T13:27:07",
      "manufactureInsights": [],
      "flavorStatement": [],
      "hasTags": [
        {
          "tag": "datavalidated",
          "createdAt": "2017-03-24T16:46:08"
        }
      ],
      "lifeCycle": 0,
      "isTaggedBy": [
        "datavalidated"
      ],
      "substitutes": [],
      "manufacturerSharingStatus": 1,
      "importClassification": [],
      "packagingMentions": [],
      "isSharedFrom": [],
      "allergens": [],
      "additives": [],
      "conservations": [],
      "hasBatchNumber": null,
      "tradeItemDateOnPackagingTypeCode": null,
      "packaging": [],
      "nameLegal": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda bien trop sucré"
        }
      ],
      "namePublicShort": [],
      "productionVariantName": [],
      "temperature": [],
      "isClassifiedIn": null,
      "isWrappedBy": [],
      "advertisedInformations": [],
      "startAvailabilityDateTime": null,
      "endAvailabilityDateTime": null,
      "dutyFeeTax": [],
      "hasNotableIngredients": [],
      "isSizedBy": [],
      "environmentStatement": [],
      "namePublicLong": [
        {
          "expressedIn": {
            "normalizedCode": "fr",
            "code": "fra-FR",
            "description": "français",
            "label": "français"
          },
          "data": "Soda "
        }
      ],
      "isPromotionalItem": null,
      "brand": {
        "code": "Alkemics - Kind",
        "description": "Alkemics - Kind",
        "label": "Alkemics - Kind",
        "pictureUrl": "https://smedia.alkemics.com/brand/7919/picture/logo/original.png"
      },
      "sparklingValue": null,
      "isLabeledBy": [
                {
                    "startDate": null,
                    "endDate": null,
                    "detail": [],
                    "value": null,
                    "isConceptualizedBy": {
                        "code": "19096",
                        "description": "Agriculture Biologique Française",
                        "label": "Agriculture Biologique Française",
                        "pictureUrl": "https://smedia.alkemics.com/api/1/concept/19096/picture/logo/original.png"
                    },
                    "attributedAt": null
                }
      ],
      "kind": {
        "code": "Soda & autre BSA prête-à-boire",
        "description": "Soda & autre BSA prête-à-boire",
        "label": "Soda & autre BSA prête-à-boire"
      },
      "replaces": [],
      "typePackaging": {
        "code": "EACH",
        "description": "Unité de base",
        "label": "unité de base"
      },
      "specializes": {
        "isBrandedBy": {
          "code": "Alkemics - Kind",
          "description": "Alkemics - Kind",
          "label": "Alkemics - Kind"
        },
        "isIdentifiedBy": [
          {
            "reference": "00366383600795"
          }
        ],
        "kind": {
          "code": "Soda & autre BSA prête-à-boire",
          "description": "Soda & autre BSA prête-à-boire",
          "label": "Soda & autre BSA prête-à-boire"
        }
      },
      "owner": {
                "type": 1,
                "name": "Alkemics"
      },
      "nutritionalAllegations": [],
      "isEquivalentTo": [],
      "netContent": [],
      "history": [],
      "netWeight": [],
      "priceComparisonType": null,
      "originCountry": null,
      "isSubstitutableWith": [],
      "id": 4897534,
      "reasonForNewEAN": null,
      "isReplaceableBy": [],
      "productBenefits": [],
      "suggestedRetailPrice": [],
      "isMarkedRecyclable": null,
      "composition": [],
      "description": [],
      "warnings": [],
      "grossWeight": [],
      "consumptionAdvice": [],
      "assets": {
        "pictures": [
          {
            "definition": null,
            "typeOfInformation": 1,
            "fileEffectiveEndDateTime": null,
            "contentType": 1,
            "sequenceNumber": null,
            "angleHorizontal": 0,
            "format": null,
            "url": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/upload/20170324/a1f1405d-b087-46e8-9974-a76673fbf08c.jpg",
            "productFace": 1,
            "fileType": 0,
            "tags": [],
            "isPackshot": true,
            "exportables": [
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/1024x1024.jpg",
                "height": 1024,
                "width": 1024,
                "fileSize": 75841,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "452EFCFE",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/512x512.jpg",
                "height": 512,
                "width": 512,
                "fileSize": 67315,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "FDA73655",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/256x256.jpg",
                "height": 256,
                "width": 256,
                "fileSize": 51467,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:14",
                "crc32": "6EE9515B",
                "createdAt": "2017-03-24T09:42:14"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/128x128.jpg",
                "height": 128,
                "width": 128,
                "fileSize": 15057,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "0CB9BC04",
                "createdAt": "2017-03-24T09:42:15"
              },
              {
                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292988/version/4897534/picture/exportable/a1f1405d-b087-46e8-9974-a76673fbf08c/64x64.jpg",
                "height": 64,
                "width": 64,
                "fileSize": 4675,
                "productpicture_id": 576944,
                "updatedAt": "2017-03-24T09:42:15",
                "crc32": "B096DCFC",
                "createdAt": "2017-03-24T09:42:15"
              }
            ],
            "uniformResourceIdentifierOrigin": null,
            "updatedAt": "2017-03-24T09:42:15",
            "ratio": null,
            "fileEffectiveStartDateTime": null,
            "resolution": null,
            "angleVertical": 1,
            "createdAt": "2017-03-24T09:42:13",
            "angleOther": null
          }
        ],
        "lastUpdatedAt": {
          "pictures": "2017-03-24T09:42:15"
        },
        "enriched_contents": [],
        "videos": []
      },
      "isNomadic": null,
      "isPartitionedBy": [],
      "subdivisions": {},
      "contact": [],
      "offerOnPack": null,
      "isInvoiceUnit": null,
      "keepRefrigeratedBefore": null
    }
  ],
  "offset": 0
}

Body Params

filter_active_range
boolean

Identifies products part of the retailer's active range

updated_at_from
date-time

Filters the minimum latest update date of the returned products (UNIX timestamp)

filter_has_packshot
boolean

Filters on products which do have a packshot.

limit
int32

The maximum number of products to be returned. The max value allowed is 500.

offset
int32

The index of the first product to be returned

filter_source_include
string

Filters the fields returned by the API (fields are comma separated)

advanced_search
json

See details below

Headers

Accept-language
string

Filters by expected languages for labels associated to code values

 

Some details on the API query params

advanced_search is an object containing an array must
The array must should contain one string query and a list of fields fields defining where the query should apply. Must acts as a AND between queries

  • Filter types: must
  • Supported fields : namePublicLong.data , composition.data , allergens.data , brand.label , kind.label , description.data
  • Query object: {query: value, fields: []}
{
    "advanced_search": {
        "must": [
            {
                "query": "jam",
                "fields": [
                    "namePublicLong.data"
                ]
            }
        ]
    }
}

In the example below, the result contains products having:

  • BOTH jam and organic words
  • jam being in the product name OR the product kind OR the description
  • organic being in the product name OR the description
{
    "advanced_search": {
        "must": [
            {
                "query": "jam",
                "fields": [
                    "namePublicLong.data",
                    "kind.label",
                    "description.data" 
                ]
            },
            {
                "query": "organic",
                "fields": [
                    "namePublicLong.data",
                    "description.data" 
                ]
            }
        ]
    }
}

Some details on the API response:

  • All the available fields are documented Attributes documentation
  • Most fields are only applicable to certain categories of products.
  • The API only returns the fields that are filled for a product. If a field is not present in the output, the data has not yet been filled for this product.
  • This API is paginated, to view the full data, you will have to make several calls, increasing the offset parameter each time.
Suggest Edits

Product rich content

 
Suggest Edits

Product rich content

This method provides only the GTIN and rich content (images, recipes and videos).

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/public/v1/products
curl --request GET \
  --url https://apis.alkemics.com/public/v1/products
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/public/v1/products' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/public/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/public/v1/products");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/public/v1/products"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
    "totalResults": 1,
    "data": [
        {
            "gtin": "00366383600313",
            "assets": {
                "pictures": [
                    {
                        "sequenceNumber": null,
                        "productFace": 1,
                        "height": 813,
                        "uniformResourceIdentifierOrigin": null,
                        "updatedAt": "2017-09-08T00:28:14",
                        "createdAt": "2017-01-23T15:31:05",
                        "angleOther": null,
                        "typeOfInformation": 1,
                        "ratio": "1.31611316113161",
                        "angleHorizontal": 0,
                        "width": 1070,
                        "fileType": 0,
                        "format": "JPEG",
                        "resolutionY": 72,
                        "resolutionX": 72,
                        "contentType": 1,
                        "tags": [],
                        "angleVertical": 1,
                        "definition": "1070x813",
                        "fileEffectiveEndDateTime": null,
                        "url": "https://smedia.alkemics.com/product/3292942/version/4897463/picture/upload/20170123/30403880-4263-4d7c-8fb2-6dc20a912fef.jpg",
                        "exportables": [
                            {
                                "uniformResourceIdentifier": "https://smedia.alkemics.com/product/3292942/version/4897463/picture/exportable/30403880-4263-4d7c-8fb2-6dc20a912fef/64x64.jpg",
                                "height": 64,
                                "width": 64,
                                "fileSize": 8644,
                                "productpicture_id": 475945,
                                "updatedAt": "2017-01-23T15:31:09",
                                "crc32": "A42AE03F",
                                "createdAt": "2017-01-23T15:31:09"
                            }
                        ],
                        "isPackshot": true,
                        "fileEffectiveStartDateTime": "2017-01-23T15:31:05",
                        "resolution": "72x72"
                    }
                ],
                "lastUpdatedAt": {
                    "pictures": "2017-09-08T00:28:14"
                },
                "enriched_contents": [],
                "documents": [],
                "videos": []
            },
            "id": "4897463"
        }
    ],
    "offset": 0
}

Query Params

filter_source_include
string

Filter to get only the GTIN and the rich content data

 
Suggest Edits

Inbound API

 
Suggest Edits

Product Upsert

Allow you to write product data

 

Header Auth

 Authentication is required for this endpoint.
posthttps://apis.alkemics.com/public/v1/products
curl -H 'Authorization: Bearer ALKEMICS_TOKEN' -XPOST 'https://apis.alkemics.com/public/v1/products' -d '{
    "data": [
        {
            "gtin": "00000050184453",
            "namePublicLong": [
                {
                    "data": "Marmite Yeast Extract 250G",
                    "expressedIn": {
                        "code": "eng-GB",
                    }
                }
            ]
        }
    ]
}' -H 'Content-Type: application/json'
curl -H 'Authorization: Bearer ALKEMICS_TOKEN' -XPOST 'https://apis.alkemics.com/public/v1/products' -d '
<?xml version="1.0" encoding="UTF-8"?>
<SupplierProducts>
	<product>
		<gtin>03663215000080</gtin>
		<isConsumerUnit>true</isConsumerUnit>
		<namePublicLong languages="FRA-FR">Hello from write API</namePublicLong>
	</product>
</SupplierProducts>' -H 'Content-Type: application/xml'
A binary file was returned

You couldn't be authenticated

{'tracking': 42}
<tracking>42</tracking>

Body Params

data
object
 
data.gtin
string
required

GTIN of the product

data.(
object
 
data.(.
object
 
data.(..
object
 

Headers

Content-Type
string

application/json for json format application/xml for xml format

 

The data attribute of the POST body corresponds to the list of products in JSON format payload.
This API is available both in JSON and XML format (Content-Type: application/json or application/xml)

The datamodel that describes precisely the list of attributes that is supported for update is available in the online documentation.
cf. Attributes documentation

You will find some sample payload below:

{
    "data": [
        {
            "gtin": "03201773272008",
            "namePublicLong": [
                {
                    "data": "Hello world from write API Product 1",
                    "expressedIn": {
                        "code": "fra-FR"
                    }
                }
            ]
        },
        {
            "gtin": "03571996445009",
            "namePublicLong": [
                {
                    "data": "Hello world from write API Product 2",
                    "expressedIn": {
                        "code": "fra-FR"
                    }
                }
            ]
        }
    ]
}
{
    "data": [
        {
            "gtin": "03571996445009",
            "assets": {
                "pictures": [
                    {
                        "isPackshot": true,
                        "url": "https://stream.alkemics.com/images/logo-inverse.781f93875f9c12548f1a45118dde00b1.png"
                    },
                    {
                        "isPackshot": false,
                        "url": "https://stream.alkemics.com/images/logo-inverse.781f93875f9c12548f1a45118dde00b1.png"
                    }
                ]
            }
        }
    ]
}
Suggest Edits

Product inbound Tracking

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/public/v1/products/track/tracking_id
curl --request GET \
  --url https://apis.alkemics.com/public/v1/products/track/tracking_id
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/public/v1/products/track/tracking_id' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/public/v1/products/track/tracking_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/public/v1/products/track/tracking_id");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/public/v1/products/track/tracking_id"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "createdAt": "2018-03-05T08:00:10",
  "status": "CONTAINS_ERRORS",
  "count": 2,
  "tracking": 424242,
  "products": [
    {
      "gtin": "03663215000080",
      "message": "Invalid value: GRMQ in referential weights.",
      "status": "ERROR"
    },
    {
      "gtin": "03663215111113",
      "message": "",
      "status": "SUCCESS"
    }
  ],
  "user": {
  	"id": 42,
    "username": "apiwriter@alkemics.com"
  },
  "organization": {
    "id": 42,
    "nameLegal": "Test Organization"
  },
  "message": "",
  "endpoint": "API"
}

Path Params

tracking_id
int32
required

Tracking id as returned by the Product Upsert API

 

Product inbound tracking API can give you information on the integration of data made with upsert API.

Here is what you can find on the payload:

createdAt: Date on which the import was made.
status: Global status of the file can take the value:

  • EMPTY: No product was found in the given payload
  • IN_PROGRESS: Import still in progress
  • ERROR: There was an error related to the payload format. No product was imported (see "message" for more information)
  • CONTAINS_ERRORS: Payload format is correct but some products were not properly integrated due to integration errors, see "products"
  • SUCCESS: Everything went well :)
  • TIMEOUT: Import process failed. Contact Alkemics support.

message: In case of status ERROR you will find detail about what went wrong.
user & organization: Information on who made the call.
count: Number of products in the payload.
products: List of product by gtin that were in the payload + their integration status (SUCCESS or ERROR). In case of ERROR you will find more detail under the message key.
endpoint: API in case of a write made by upsert or IMPORT in case of file import.

Suggest Edits

Introduction

 

The following routes allow you to interact with your Alkemics' product segments hierarchy data.

Authentication

You need to be authenticated to use the following routes, please refer to the Authentication API documentation to get an authorization token.The token then needs to be added in an Authorization header: Authorization: "Bearer AUTHORIZATION_TOKEN".

Suggest Edits

List product segments

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/core/v3/productsegments/hierarchy
curl --request GET \
  --url https://apis.alkemics.com/core/v3/productsegments/hierarchy
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/core/v3/productsegments/hierarchy' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://apis.alkemics.com/core/v3/productsegments/hierarchy")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://apis.alkemics.com/core/v3/productsegments/hierarchy");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/core/v3/productsegments/hierarchy"

response = requests.request("GET", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Query Params

permission
string

The type of permission requested.

 
Suggest Edits

Specificities for Partners

 

Here is the dedicated section for partner solutions that wish to integrate with our APIs.
You will find below the specificities that might be required for some of the APIs.

Product List

The behaviour of the Product List API is described in the section https://docs.alkemics.com/v2/reference#list

On top of those elements, you may want to use additional filters, such as described below.

name
type
description

filter_owners_in

int32

Filter products based on the owner.
Returns the products for which the owner id is in the list.