Alkemics

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.

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.

Authentication Token

 

Create Token

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"

 

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

 

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".

Product List

 

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

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)

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 .

Product List (Advanced)

 

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

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

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.

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

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.

Product rich content

 

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

 

Inbound API

 

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://smedia.alkemics.com/brand/1209/picture/logo/original.png"
                    }
                ]
            }
        }
    ]
}

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".

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.

 

Introduction

 

The following routes allow you to interact with your Alkemics' tender 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".

Create tender

 

Header Auth

 Authentication is required for this endpoint.
posthttps://apis.alkemics.com/buyingunit/v2/rfp
curl --request POST \
  --url https://apis.alkemics.com/buyingunit/v2/rfp
var request = require("request");

var options = { method: 'POST',
  url: 'https://apis.alkemics.com/buyingunit/v2/rfp' };

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/buyingunit/v2/rfp")

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

request = Net::HTTP::Post.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("POST", "https://apis.alkemics.com/buyingunit/v2/rfp");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/buyingunit/v2/rfp"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

name
string
required

The name of the tender

endDate
date
required

The end date of the tender (YYYY-MM-DD)

description
string

The description of the tender

target
string

The target of the tender

annualVolume
string

The expected annual volume

certifications
string

The expected certifications for the tender (Bio, gluten free)

mdd
boolean

Set to True if the tender is for private label

expectedPriceMin
float

The expected minimum price

expectedPriceMax
float

The expected maximum price

productSegmentHierarchy
object

The product segment hierarchy. You can find the id by using the product segment list API.

 
productSegmentHierarchy.id
integer

The id of the product segment hierarchy

participants
array of objects

The list of participants if you want to make a private tender.

id
name
contacts
array of objects

The list of email address if you want to make a private tender.

email
 

List tenders

 

Header Auth

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

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

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/buyingunit/v2/rfp")

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/buyingunit/v2/rfp");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/buyingunit/v2/rfp"

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

offset
int32

The offset to take into account for pagination.

limit
int32

The limit of tenders to return.

filter_like_rfp_name
string

Filters by the tender that have this name.

filter_productsegment_hierarchy
array of integers

A list of product segment hierarchy to filter the tenders. Check product segment list API to have ids.

 

List answers for a tender

 

Header Auth

 Authentication is required for this endpoint.
gethttps://apis.alkemics.com/buyingunit/v2/rfp/id/answers
curl --request GET \
  --url https://apis.alkemics.com/buyingunit/v2/rfp/id/answers
var request = require("request");

var options = { method: 'GET',
  url: 'https://apis.alkemics.com/buyingunit/v2/rfp/id/answers' };

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/buyingunit/v2/rfp/id/answers")

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/buyingunit/v2/rfp/id/answers");

xhr.send(data);
import requests

url = "https://apis.alkemics.com/buyingunit/v2/rfp/id/answers"

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

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

id
int32
required

The id of the tender.

 

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.