Mirakl Marketplace APIs

General Notes

Backward compatibility information

Mirakl solutions are updated through continuous delivery to provide new features, security fixes and bug fixes.

New deployed versions are backward compatible, which guarantees the durability of your integration after a Mirakl solution update, on condition that your integration follows these guidelines:

  • Your integration must allow for new fields to be added in API responses. From time to time, we add new fields as part of new features.
  • Do not expect fields to always have the same order in API calls. The order can change when fields are added to APIs.
  • Your integration must allow for new values to be added in enumeration fields. We can add new values in enumeration fields to support new features. We advise that you use strings to deserialize enumeration fields. Alternatively, you can configure your deserializer to accept unknown enumeration values.

While most of our APIs support XML format, we strongly advise you to use JSON format, as our newest APIs are only available in JSON format.

Should you decide to validate our APIs output using XSD files, please note that your XSD should take into account the guidelines defined above. Mirakl does not provide XSD files for its APIs and does not offer support for writing XSD files.

Undocumented attributes

Some APIs may return more data than indicated in the documentation. Do not rely on this undocumented data, there is no guarantee about it.

Authentication

You can authenticate through API by sending your API key in a header.

HTTPS only

All requests must use the HTTPS protocol.

API return codes

Mirakl API uses standard HTTP return codes.

When making HTTP requests, you can check the success or failure status of your request by using the HTTP Status Codes (i.e. 200). You must not use the HTTP Status Messages or Reason-Phrases (i.e. OK), as they are optional and may not be returned in HTTP responses (see RFC9110 for more information).

Our API documentation does not document Reason-Phrases but provides a short contextualized description of HTTP Status Codes.

Success Codes

  • 200: OK - Request succeeded.
  • 201: Created - Request succeeded and resource created.
  • 202: Accepted - Request accepted for processing.
  • 204: No Content - Request succeeded but does not return any content.

Error Codes

  • 400: Bad Request - Parameter errors or bad method usage. Bad usage of the resource. For example: a required parameter is missing, some parameters use an incorrect format, a data query is not in the expected state.
  • 401: Unauthorized - API call without authentication. Add authentication information or use a valid authentication token.
  • 403: Forbidden - Access to the resource is denied. Current user can not access the resource.
  • 404: Not Found - The resource does not exist. The resource URI or the requested resource do not exist for the current user.
  • 405: Method Not Allowed - The HTTP method (GET, POST, PUT, DELETE) is not allowed for this resource. Refer to the documentation for the list of accepted methods.
  • 406: Not Acceptable - The requested response content type is not available for this resource. Refer to the documentation for the list of correct values of the Accept header for this request.
  • 410: Gone - The resource is permanently gone. The requested resource is no longer available and will not be available again.
  • 415: Unsupported Media Type - The entity content type sent to the server is not supported. Refer to the documentation for the list of correct values of the Content-type header to send data.
  • 429: Too many requests - Rate limits are exceeded. The user has sent too many requests in the last hour. Refer to the documentation for the maximum calls count per hour.
  • 500: Internal Server Error - The server encountered an unexpected error.

Rate limits

Mirakl APIs are protected by rate limits. Each API has a dedicated section displaying its rate limit.

If you make too many calls, you might receive an HTTP 429 "Too Many Requests" error. The response will contain a Retry-After header that specifies the number of seconds to wait before making a new request.

Request Content-Type

If an API request supports multiple Content-Types, add a Content-Type header to select the format to use in the request. The API documentation lists the formats an API can consume.

Response Content-Type

If an API response supports multiple Content-Types, add an Accept header to select the format accepted in the response. The API documentation lists the formats an API can produce.

List of values as URL parameters

array type fields indicate a list of values as URL parameters. You can add more parameter=value elements to the URL. Refer to the example in the right panel.

UTF-8 encoding

Text data is encoded in UTF-8.

Locale

If the API returns internationalized data, you can specify the locale parameter.

The Locale format is usually <ISO-639>_<ISO-3166> (e.g. "en_US"). There are some exceptions where the Locale format can be <ISO-639> (e.g. "en"). The locale returned in a response uses this format.

The APIs only accept locales that are equivalent to the languages activated in the back-office.

Date formats

APIs can use different date formats (compliant with ISO 8601):

  • date-time with the pattern YYYY-MM-DDThh:mm:ss[.SSS]±hh:mm.
    • The offset +00:00 can be replaced by Z (the zero UTC offset).
    • All APIs provide date-times in UTC, with the trailing Z.
    • Milliseconds may be omitted if equals to .000.
  • date-time-without-timezone with the pattern YYYY-MM-DDThh:mm:ss[.SSS].
    • The timezone does not appear.
    • Milliseconds may be omitted if equals to .000.
  • time with the pattern hh:mm[:ss][.SSS]±hh:mm. Time only, with timezone
    • The offset +00:00 can be replaced by Z (the zero UTC offset).
    • Seconds may be omitted if equals to :00.
    • Milliseconds may be omitted if equals to .000.

In the patterns:

  • YYYY: years (four-digit)
  • MM: months, 01-12 (two-digit)
  • DD: days, 01-31 (two-digit)
  • T is a delimiter between the date and time
  • hh: hours, 00-23 (two-digit)
  • mm: minutes, 00-59 (two-digit)
  • ss: seconds, 00-60 (two-digit)
  • SSS: milliseconds, 000-999 (three-digit)
  • ±hh:mm: refers to an offset from UTC

For GET requests, use URL encoding (for example, 2019-08-29T02:34:00+02:00 becomes 2019-08-29T02%3A34%3A00%2B02%3A00).

Offset pagination & sort

Some APIs support offset pagination. In this case, you can use the max and offset parameters:

  • max: The max parameter is used to indicate the maximum number of items returned per page. This parameter is optional. The default value of this parameter is 10. The maximum value of this parameter is 100.
  • offset: The offset parameter is used to indicate the index of the first item (among all the results) in the returned page. This parameter is optional. The default value of this parameter is 0, which means that no offset is applied.

With pagination, the URL of the previous and/or next page can be returned in the header's attribute Link of the response.

When a sort parameter is available on such an API, it can be used to sort the results.

sort: The parameter sort is used to indicate how the results should be sorted. This parameter is optional. The possible values for this parameter are defined in resources. The default value of this parameter is defined in resources.

order: The parameter order is used to indicate the sort direction. This parameter is optional. The possible values ​​for this parameter are asc (default) or desc.

Seek pagination & sort

For better performance and user experience, some APIs support "seek" pagination. This means that you cannot go directly to the N-th page.

Use the optional limit query parameter to indicate the maximum number of items returned per page. The default value is 10. The maximum value is 100.

If there are more results to return, the response contains a next_page_token field. Pass this value in the page_token query parameter to return the next page of results.

The API also returns a previous_page_token when the result is not the first page. Use it the same way as next_page_token.

Values of next_page_token and previous_page_token contain all required parameters to access next and previous page. When using the page_token parameter all other parameters are ignored, regardless of the value given to page_token.

When a sort parameter is available, it must follow the sort=criterion,direction format where:

  • criterion is the name of the criterion to sort by (e.g: date_created, title, ...)
  • direction is the sort direction. Can be one of ASC, DESC
Languages
Servers
URL to be replaced by your Mirakl instance URL
https://your-instance.mirakl.net/

Platform Settings

Operations

Invoicing and Accounting

Operations

Products

Operations

Messages

Operations

Offers

Operations

OF01 - Import a file to add offers

Request

Returns the import identifier to track the status of the import.

Call Frequency
Maximum usage: Once per minute

Bodymultipart/form-data
filestring(binary)required

Import file (CSV or XML or XLSX) to upload. Use multipart/form-data with name file.
Csv format:

"sku";"product-id";"product-id-type";"description";"internal-description";"price";"price-additional-info";"quantity";"min-quantity-alert";"state";"available-start-date";"available-end-date";"discount-price";"discount-start-date";"discount-end-date";"discount-ranges";"allow-quote-requests";"leadtime-to-ship";"min-order-quantity";"max-order-quantity";"package-quantity";"update-delete";"price-ranges";"ecotax";"gift-wrap";"min-quantity-ordered"


If you use specific sales channels, use:
"price[channel=channel code]";"discount-price[channel=channel code]";"discount-start-date[channel=channel code]";"discount-end-date[channel=channel code]";"discount-ranges[channel=channel code]";"price-ranges[channel=channel code]"

If you use the price per measurement unit feature, use pricing-unit to specify the unit corresponding to the submitted price.

If you use U.S. tax manager, use: product-tax-code

If Data collection related to circular economy regulations is enabled, use:
"producer-id[EPR category code]"; "eco-contribution-amount[EPR category code]"
EPR category code must be one of:
FR-AGROPACK, FR-ASL, FR-DASRIPAT, FR-DBPS, FR-DDS, FR-DEA, FR-DEEE, FR-DISPMED, FR-DIY, FR-EMBM, FR-GF, FR-JOUETS, FR-LUB, FR-MH, FR-MNU, FR-PA, FR-PAP, FR-PCHIM, FR-PMCB, FR-PNEU, FR-TABAC, FR-TLC, FR-VEHICULE, FR-VHU, DE-BATTG, DE-PACK, DE-WEEE, ES-PACK, ES-GPACK, ES-WEEE

import_modestringrequired
Enum"NORMAL""REPLACE"
operator_formatboolean

Force the use of the operator product format

Default false
shopinteger(int64)required

Shop Identifier

with_productsboolean

This file also contains product information

Default false
curl -i -X POST \
  https://your-instance.mirakl.net/api/offers/imports \
  -H 'Content-Type: multipart/form-data' \
  -F file=string \
  -F import_mode=NORMAL \
  -F operator_format=true \
  -F shop=0 \
  -F with_products=true

Responses

Created

Headers
Locationany

Pre-calculated URL to call to get the import status

Bodyapplication/json
import_idinteger(int64)required

Offer import identifier

product_import_idinteger(int64)

Product import identifier

Response
application/json
{ "import_id": 2035, "product_import_id": 2036 }

OF04 - Get information and statistics about offer imports

Request

Call Frequency
Maximum usage: Once per minute
Pagination

This resource supports seek pagination (see documentation)

Sort fields
sort field can have the following values:
  • dateCreated (Default) - Sort by creation date (desc by default)
Query
shop_idinteger(int64)

Shop identifier

start_datestring(date-time)

Start creation date for filtering

end_datestring(date-time)

End creation date for filtering

statusstring

Offer import status

Enum"WAITING_SYNCHRONIZATION_PRODUCT""WAITING""RUNNING""COMPLETE""FAILED"
modestring

Offer import mode

Enum"NORMAL""REPLACE"
originsArray of strings

List of offer import origins for filtering. This parameter can be supplied multiple times (origins=API&origins=FTP...).

Items Enum"API""FTP""SFTP""HTTP""HTTPS""FRONT""PENDING_OFFERS"
curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/imports?end_date=2019-08-24T14%3A15%3A22Z&mode=NORMAL&origins=API&shop_id=0&start_date=2019-08-24T14%3A15%3A22Z&status=WAITING_SYNCHRONIZATION_PRODUCT'

Responses

OK

Bodyapplication/json
dataArray of objectsrequired

Page of data

next_page_tokenstring

Token to access the next page. Absent if the current page is the last one.

previous_page_tokenstring

Token to access the previous page. Absent if the current page is the first one.

Response
application/json
{ "data": [ {}, {} ], "next_page_token": "bGltaXQ9MiZhZnRlcj0yMDIxLTA1LTExJTIwMTY6NTA6MjUuNDczJnNvcnQ9ZGF0ZUNyZWF0ZWQsREVTQw==", "previous_page_token": null }

OF02 - Get information and statistics about an offer import

Request

Call Frequency
Maximum usage: Once per minute
Path
importinteger(int64)required

Import identifier

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/imports/{import}'

Responses

OK

Bodyapplication/json
date_createdstring(date-time)required

Import creation date

has_error_reportbooleanrequired

Indicate if an error report exists

import_idinteger(int64)required

Import ID

lines_in_errorinteger(int32)required

Total count of lines in error

lines_in_pendinginteger(int32)required

Total count of lines in pending

lines_in_successinteger(int32)required

Total count of lines in success

lines_readinteger(int32)required

Total count of lines read

modestringrequired

Import mode

Enum"NORMAL""REPLACE"
offer_deletedinteger(int32)required

Total count of deleted offers

offer_insertedinteger(int32)required

Total count of inserted offers

offer_updatedinteger(int32)required

Total count of updated offers

reason_statusstringrequired

Import status reason

statusstringrequired

Import status

Enum"WAITING_SYNCHRONIZATION_PRODUCT""WAITING""RUNNING""COMPLETE""FAILED"
typestringDeprecatedrequired

Will be remove in a future version

Enum"AUTO""MIRAKL""AMAZON"
Response
application/json
{ "date_created": "2019-04-01T15:16:31Z", "has_error_report": false, "import_id": 2035, "lines_in_error": 0, "lines_in_pending": 0, "lines_in_success": 1, "lines_read": 1, "mode": "NORMAL", "offer_deleted": 0, "offer_inserted": 1, "offer_updated": 0, "status": "COMPLETE" }

OF03 - Get the error report file for an offer import

Request

This API returns a CSV, XLSX or XML file, depending on the file format provided by the seller.

Call Frequency
Maximum usage: Once per minute

Path
importinteger(int64)required

Import identifier

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/imports/{import}/error_report'

Responses

OK

Bodyapplication/octet-stream
string(binary)
Response
application/octet-stream
string

OF22 - Get information about an offer

Request

Path
offerinteger(int64)required

Offer identifier

Query
pricing_channel_codestring

Filter used to pick prices on a specific channel

pricing_customer_organization_idstring

For Customer Pricing users only. Customer identifier code the API will use to return all prices and applicable price for this organization. Ignored if value does not exist.

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/{offer}?pricing_channel_code=string&pricing_customer_organization_id=string'

Responses

OK

Bodyapplication/json
activebooleanrequired

Is the offer active

all_pricesArray of objectsrequired

All prices for the offer

allow_quote_requestsboolean

Whether the offer is eligible for quotation

applicable_pricingobject

Pricing defined for the offer, including the prices for the selected channel if available

available_end_datestring(date-time)

Available end date

available_start_datestring(date-time)

Available start date

category_codestringrequired

Product category code

category_labelstringrequired

Product category label

channelsArray of stringsuniquerequired

List of channel codes on which the offer can be sold

currency_iso_codestringrequired

The currency of the shop (iso format)

Enum"AED""ARS""AUD""BAM""BGN""BHD""BRL""CAD""CHF""CLP"
descriptionstringrequired

Offer description

eco_contributionsArray of objects<= 20 items

Eco-contributions of the offer - only available if the operator setting Activate data collection related to circular economy regulations has been enabled.

favorite_rankinteger(int32)

Favorite rank for the offer, when the favorite feature is enabled and the offer is a favorite

fulfillmentobjectrequired

Fulfillment information

inactivity_reasonsArray of strings

Reasons for offers inactivity, mandatory if an offer is inactive

Items Enum"PRODUCT_STATUS_NEW""PRODUCT_STATUS_INVALID""PRODUCT_STATUS_REJECTED""PRODUCT_STATUS_UNAUTHORIZED_TO_SELL""PRODUCT_STATUS_PENDING""PRODUCT_STATUS_SYNCHRO_ERROR""PRODUCT_DISABLED""SHOP_NOT_OPEN""ZERO_QUANTITY""NO_MIN_SHIPPING_RATE"
leadtime_to_shipinteger(int32)required

Offer's lead time to ship value. If this value has been set to 0, value is returned as 1 (unless platform's default lead time to ship value is also 0). If no lead time to ship was specified for the offer, platform's default value is returned.

logistic_classobjectrequired

The logistic class associated to the offer

max_order_quantityinteger(int32)required

Highest quantity of product items per order

min_order_quantityinteger(int32)required

Lowest quantity of product items per order

min_quantity_alertinteger(int32)required

Minimum quantity of the offer

min_shipping_pricenumber(with decimals)required

Unit price of the minimum shipping rate

min_shipping_price_additionalnumber(with decimals)required

Additional unit price associated to the minimum shipping rate

min_shipping_typestringrequired

Code of the shipping type associated to the minimum shipping rate

min_shipping_zonestringrequired

Code of the shipping zone associated to the minimum shipping rate

modelstring

Shop platform model, current possible values :

  • MARKETPLACE
  • DROPSHIP
  • ONE_CREDITOR
Enum"MARKETPLACE""DROPSHIP""ONE_CREDITOR"
offer_additional_fieldsArray of objects

Custom fields of the offer

offer_idinteger(int64)required

Identifier of the offer

package_quantityinteger(int32)required

Indivisible quantity of the same product

pricenumber(with decimals)

Price of the offer

price_additional_infostring

Additional price information for the offer

product_brandstring

Brand of the product

product_descriptionstring

Description of the product

product_referencesArray of objectsrequired

Product references

product_skustringrequired

Product SKU

product_tax_codestring

Offer product tax code

product_titlestringrequired

Product title

quantityinteger(int32)required

Available quantity of the offer

shipping_deadlinestring(date-time)required

Estimated shipping date, that includes business closing days and cut-off configured on the platform. Add the earliest and latest delivery times to calculate the estimated delivery date to customers

shop_gradenumber(with decimals)required

Grade of the shop which proposes the offer

shop_idinteger(int64)required

Identifier of the shop which proposes the offer

shop_namestringrequired

Name of the shop which proposes the offer

state_codestringrequired

Offer condition

total_pricenumber(with decimals)

Total price of the offer (price + minimum shipping rate)

discountobjectDeprecated

Discount of the offer

Please use 'applicablePricing' instead

Response
application/json
{ "active": true, "all_prices": [ {}, {}, {} ], "allow_quote_requests": false, "applicable_pricing": { "channel_code": null, "context": {}, "discount_end_date": "2023-01-31T22:00:00Z", "discount_start_date": "2023-03-31T22:00:00Z", "price": 29, "unit_discount_price": 29, "unit_origin_price": 30, "volume_prices": [] }, "available_end_date": "2019-09-29T22:00:00Z", "available_start_date": "2019-03-31T22:00:00Z", "category_code": "3016100", "category_label": "Shoes", "channels": [ "FR", "US" ], "currency_iso_code": "USD", "description": "Offer for product MKP100000000154824", "discount": { "discount_price": null, "end_date": "2019-04-29T22:00:00Z", "origin_price": 50, "ranges": [], "start_date": "2019-03-31T22:00:00Z" }, "eco_contributions": [ {}, {} ], "fulfillment": { "center": {} }, "inactivity_reasons": [ "SHOP_NOT_OPEN", "ZERO_QUANTITY" ], "leadtime_to_ship": 10, "logistic_class": { "code": "M", "label": "Medium" }, "max_order_quantity": 5, "min_order_quantity": 1, "min_quantity_alert": 1, "min_shipping_price": 0, "min_shipping_price_additional": 0, "min_shipping_type": "CLC", "min_shipping_zone": "DOM1", "model": "MARKETPLACE", "offer_additional_fields": [ {}, {}, {} ], "offer_id": 2135, "package_quantity": 1, "price": 49, "price_additional_info": "Apply Discount prices", "product_brand": "Capture", "product_description": "Cobalt, fuchsia, leopard print: imitation suede upper. Synthetic lining, upper and sole. Almond toe court with cushioned sole. Heel height 9cm.", "product_references": [ {} ], "product_sku": "MKP100000000154824", "product_title": "Capture Coloured Court Shoe - 10", "quantity": 1000000, "shipping_deadline": "2019-09-01T23:59:59.999Z", "shop_grade": 4, "shop_id": 2000, "shop_name": "ACME SHOP", "state_code": "11", "total_price": 49 }

OF24 - Create, update, or delete offers

Request

Returns the import identifier to track the status of the update.

You must send all offer fields. Offer fields that are not sent are reset to their default value.

Call Frequency
Maximum usage: Once per minute
Query
shopinteger(int64)required

Shop ID

Bodyapplication/json
offersArray of objectsrequired

Offers list

curl -i -X POST \
  'https://your-instance.mirakl.net/api/offers?shop=0' \
  -H 'Content-Type: application/json' \
  -d '{
    "offers": [
      {
        "all_prices": [
          {
            "channel_code": "US",
            "discount_end_date": "2019-04-29T22:00:00Z",
            "discount_start_date": "2019-04-01T22:00:00Z",
            "unit_discount_price": "49",
            "unit_origin_price": 50,
            "volume_prices": [
              {
                "quantity_threshold": 5,
                "unit_discount_price": 45,
                "unit_origin_price": 48
              }
            ]
          }
        ],
        "allow_quote_requests": false,
        "available_ended": "2019-05-29T22:00:00Z",
        "available_started": "2019-03-01T22:00:00Z",
        "description": "Offer for product MKP100000000154824",
        "discount": {
          "end_date": "2019-05-31T22:00:00Z",
          "price": 49,
          "ranges": [
            {
              "price": 45,
              "quantity_threshold": 5
            }
          ],
          "start_date": "2019-03-31T22:00:00Z"
        },
        "eco_contributions": [
          {
            "eco_contribution_amount": 3.59,
            "epr_category_code": "FR-DEA",
            "producer_id": "FR123456_89ABCD"
          },
          {
            "eco_contribution_amount": 0.99,
            "epr_category_code": "DE-WEEE",
            "producer_id": "ProducerID1"
          }
        ],
        "internal_description": "Offer for product MKP100000000154824",
        "leadtime_to_ship": 5,
        "logistic_class": "M",
        "max_order_quantity": 3,
        "min_order_quantity": 1,
        "min_quantity_alert": 2,
        "offer_additional_fields": [
          {
            "code": "ecotax",
            "value": "20"
          }
        ],
        "package_quantity": "2",
        "price": 50,
        "price_additional_info": "Apply Discount prices",
        "product_id": "9400016774345",
        "product_id_type": "EAN",
        "product_tax_code": "tax",
        "quantity": "5000",
        "shop_sku": "Offer_SKU_001",
        "state_code": "11",
        "update_delete": "update"
      }
    ]
  }'

Responses

Created

Headers
Locationany

Pre-calculated URL to call to get the import status

Bodyapplication/json
import_idinteger(int64)required

Offer import identifier

Response
application/json
{ "import_id": 2044 }

OF52 - Export offers CSV or JSON file asynchronously

Request

Export status and files links can be retrieved by calling OF53.
Get a CSV or JSON file that includes the offers updated and deleted since the last request date.

Call Frequency
Maximum usage:
- Differential: once per minute
- Full: once per day
Read More
Bodyapplication/json
channel_codesArray of strings

List of the channel codes to filter with. If specified, only offers that can be sold on the specified channel(s) will be returned. If not, offers will be returned regardless of their channels.

exclude_customer_specific_pricesboolean

Exclude customer prices from the export (specific prices for customer organizations or customer groups).

export_typestring

Format of the generated files: CSV or JSON (value is either text/csv or application/json). Default to text/csv.

Enum"text/csv""application/json"
include_fieldsArray of strings

Specify which columns (CSV) or fields (JSON) will be returned. If specified, only the listed columns/fields will be returned, otherwise all will be returned. If combined with rename_fields, include_fields must use the original header/field names.

include_inactive_offersboolean

When calling the API in full mode (i.e. when no last_request_date is provided), inactive offers are not returned. To retrieve both active and inactive offers, set this field to true.
When calling the API in differential mode (i.e. when the last_request_date is provided), both active and inactive offers are returned. This field cannot be used in differential mode otherwise the call fails.

Default false
items_per_chunkinteger(int64)[ 10000 .. 1000000 ]

The maximum number of items per chunk

last_request_datestring(date-time)

Date and time of your last request.
If provided, retrieves all offers updated since this date and time, including deleted and inactive offers.
If not provided, retrieves all active offers only, unless otherwise specified in the include_inactive_offers field.

megabytes_per_chunkinteger(int64)[ 10 .. 1000 ]

The maximum size in megabytes of a chunk

modelsArray of strings

List of platform models to filter with. Accepted values are MARKETPLACE, DROPSHIP, ONE_CREDITOR

rename_fieldsobject

This is only supported for CSV export. Can be used to modify the name of the CSV headers. The expected format is a JSON object with the original fields as keys and the substitute as value.

{"offer-id": "offerId", "shop-name":"shopName"}

shipping_zonesArray of strings

If the setting Export shipping charges and delivery times has been enabled, list of the shipping zones codes to filter with. If specified, only shipping information linked to the given zones will be returned. Otherwise, all shipping information for all zones will be returned.

curl -i -X POST \
  https://your-instance.mirakl.net/api/offers/export/async \
  -H 'Content-Type: application/json' \
  -d '{
    "channel_codes": [
      "B2B"
    ],
    "exclude_customer_specific_prices": "false",
    "export_type": "application/json",
    "include_fields": [
      "active",
      "allow_quote_requests",
      "available_end_date",
      "available_start_date",
      "channels",
      "currency_iso_code",
      "date_created",
      "deleted",
      "description",
      "favorite_rank",
      "fulfillment",
      "is_professional",
      "leadtime_to_ship",
      "logistic_class",
      "measurement_units",
      "min_shipping_price",
      "min_shipping_price_additional",
      "offer_id",
      "premium",
      "prices",
      "price_additional_info",
      "product_sku",
      "quantity",
      "shipping_types",
      "shop_id",
      "shop_name",
      "shop_sku",
      "state_code",
      "eco_contributions",
      "model"
    ],
    "items_per_chunk": 10000,
    "last_request_date": "2021-11-12T02:34:00Z",
    "megabytes_per_chunk": 100,
    "shipping_zones": [
      "DOM1"
    ]
  }'

Responses

OK

Bodyapplication/json
tracking_idstring

The offer export tracking Id

Response
application/json
{ "tracking_id": "760a9a3a-1a3a-4f0d-93a5-cef772c7c3e5" }

OF53 - Poll the status of an asynchronous offer export (OF52)

Request

Path
tracking_idstringrequired

The asynchronous offer export id

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/export/async/status/{tracking_id}'

Responses

OK

Bodyapplication/json
errorobject

Specific error if the status is FAILED

last_updatedstring(date-time)

The last update date of the export

statusstring

Current status of the export, can be PENDING, FAILED or COMPLETED

urlsArray of strings

List of generated urls to call to download each generated chunks

Response
application/json
{ "error": { "code": "1", "detail": "Internal error" }, "last_updated": "2021-09-23T08:14:06.095Z", "status": "FAILED" }

OF54 - Retrieve offer files once asynchronous offer export is complete (OF52)

Request

Path
tracking_idstringrequired

The asynchronous offer export id

curl -i -X GET \
  'https://your-instance.mirakl.net/dynamic-url/The+URL+is+retrieved+from+OF53+output/OF54'

Responses

OK

Body
activeboolean

Indicates if the offer is active or inactive (not for sale or discontinued)

allow_quote_requestsboolean

Allow customers to request quotes on this offer

available_end_datestring

The date when the offer will be deactivated

available_start_datestring

The date when the offer will be activated

channelsArray of strings

List of channel codes on which the offer can be sold.

currency_iso_codestring

ISO code of the currency

date_createdstring

Date and time of the offer creation

deletedboolean

Indicates whether the offer exists or is deleted

descriptionstring

Offer description

eco_contributionsArray of objects

Eco-contributions of the offer - only available if the operator setting Data collection related to circular economy regulations has been enabled.

favorite_rankinteger(int32)

If present, indicates that the offer is a favorite offer ranked

fulfillmentobject

The fulfillment information tied to the offer

is_professionalboolean

Indicates if the store is professional or not

last_updatedstring

Date and time of the last update of the offer

leadtime_to_shipinteger(int32)

The lead time to ship corresponding to the offer

logistic_classobject

The logistic class associated to the offer

max_order_quantityinteger(int32)

The maximum order quantity customers must select to be able to place an order for that offer

measurementobject

Measurement of the product

min_order_quantityinteger(int32)

The minimum order quantity customers must select to be able to place an order for that offer

min_shipping_pricenumber(with decimals)

Minimum shipping charges for the offer

min_shipping_price_additionalnumber(with decimals)

Additional shipping charges for the offer

min_shipping_typestring

Shipping method with the minimum shipping charges (code referenced by the operator)

min_shipping_zonestring

Shipping zone with the minimum shipping charges (code referenced by the operator)

modelstring

The platform model of the seller account providing the offer.
Used for Hybrid platforms.
One of MARKETPLACE, DROPSHIP, ONE_CREDITOR

offer_additional_fieldsArray of objects

Custom fields of the offer

offer_idinteger(int64)

Unique offer identifier assigned by Mirakl

package_quantityinteger(int32)

For one order, customers can only add packages of product items.
The number of items per package is the increment number of that product in an order.

premiumboolean

Indicates if the store is premium or not

price_additional_infostring

Information about the offer price

pricesArray of objectsunique

List of prices for the offer

product_skustring

Product identifier within the operator's system

product_tax_codestring

Tax code for the product

quantityinteger(int32)

Offer quantity available

shipping_typesArray of objects

List of shipping types for the offer.
Returned if Export shipping charges and delivery times in OF51 is enabled.

shop_idinteger(int64)

Unique identifier for the store providing this offer (assigned by Mirakl)

shop_namestring

Name of the store providing this offer

shop_skustring

Shop's sku of the offer

state_codestring

Offer condition code

Response
[ { "active": true, "allow_quote_requests": true, "channels": [], "currency_iso_code": "EUR", "date_created": "2022-01-01T07:52:10Z", "deleted": false, "description": "This is description of the offer 1200: \n Cotton flannelette, brushed both sides for extra comfort and warmth. 165gsm. Includes one flat sheet, one fitted sheet, one pillowcase in single and king single sets, and two pillowcases in all other sets.", "eco_contributions": [], "fulfillment": {}, "is_professional": false, "last_updated": "2022-03-03T08:52:10Z", "leadtime_to_ship": 10, "logistic_class": {}, "min_shipping_price": 0, "min_shipping_price_additional": 0, "min_shipping_type": "CLC", "min_shipping_zone": "DOM1", "model": "DROPSHIP", "no_commission": false, "offer_id": 2003, "premium": false, "prices": [], "product_sku": "MKP100000000193522", "quantity": 56, "shop_id": 3, "shop_name": "* Super Shop", "shop_sku": "sku-2003", "state_code": "4" } ]

P11 - List offers for each given product

Request

List offers for each given product


Call Frequency
Maximum usage: At each product page display
Read More
Pagination

This resource supports offset pagination (see documentation)

Sort fields
sort field can have the following values:
  • bestPrice (Default) - Sorts by product sku and then by total price, premium information, shop grade (asc by default)
  • bestEvaluation - Sorts by product sku and then by shop grade, total price, premium information (asc by default)
Localization

This resource supports locale parameter (see documentation)

Localized output fields will be highlighted with an icon:

Query
product_idsstring

List of product's skus separated with comma. Limited to 100 values. One of the two is required product_ids or product_references.

product_referencesstring

List of the product's identifiers with type (structure: "product_references=<productIdType>|<productId>,<productIdType>|<productId>, ..."). Limited to 100 values. One of the two is required product_ids or product_references.
Example: /api/products/offers?product_references=EAN|3120201243238

offer_state_codesstring

List of offer state codes

premiumstring

If true, returns only offers of premium shops. If false, returns only offers of shops that are not premium.

Default "ALL"
Enum"TRUE""FALSE""ALL"
all_offersboolean

If false returns only active offers. If true return all offers.

Default false
channel_codesstring

List of the channel codes to filter with, using a comma (,) as a separator. If specified, only offers that can be sold on the specified channel(s) will be returned. If not, offers will be returned regardless of their channels.

all_channelsboolean

If false, filters the offers with the given channel_codes or the default channel if no channel_codes are given.
If true, does not filter the offers on channels and ignore the channel_codes.

Default false
pricing_channel_codestring

Filter used to pick prices on a specific channel

pricing_customer_organization_idstring

For Customer Pricing users only. Customer identifier code the API will use to return all prices and applicable price for this organization. Ignored if value does not exist.

shop_idsstring

List of shop IDs separated with comma. Limited to 100 values. Filter used to return only the offers of the listed shops.

shipping_zonesstring

List of shipping zones. Filter used to pick shipping prices on one or multiple shipping zones

all_shipping_zonesboolean

If false, filters the offers with the given shipping zones.
If true, selects all shop shipping zones and ignores the provided shipping_zones.

Default false
modelsstring

A comma separated list of platform models to filter with. Accepted values are MARKETPLACE, DROPSHIP, ONE_CREDITOR

curl -i -X GET \
  'https://your-instance.mirakl.net/api/products/offers?all_channels=false&all_offers=false&all_shipping_zones=false&channel_codes=string&models=string&offer_state_codes=string&premium=TRUE&pricing_channel_code=string&pricing_customer_organization_id=string&product_ids=string&product_references=string&shipping_zones=string&shop_ids=string'

Responses

OK

Bodyapplication/json
productsArray of objects

List of products information with their offers

Response
application/json
{ "products": [ {} ] }

PRI01 - Import a price file

Request

Import a .csv file to submit all applicable prices for an offer.
The import mode is delete and replace: any existing price that is not submitted will be deleted.
If Price Approval is enabled, this API creates and updates pending prices; ongoing prices will remain.
Returns an import identifier to track the status of the import and retrieve an error report if applicable.

Call Frequency
Maximum usage: Once per minute
Read More
Bodymultipart/form-data
filestring(binary)required

Import CSV file to upload. Use multipart/form-data with name file.
Csv format:

  • "offer-sku";"price";"discount-price";"discount-start-date";"discount-end-date"
    • 1 line = 1 offer price
    • List prices for the same offer together
    • Limits: 50 prices can be created for an offer
  • Volume Pricing users: use additional columns price-ranges and discount-ranges
  • Channel Pricing users: use additional column channels
  • Scheduled Pricing users: use additional columns start-date and end-date
  • Customer Pricing users: use additional columns customer-organization-ids and customer-group-ids
shopinteger(int64)required

Shop Identifier

curl -i -X POST \
  https://your-instance.mirakl.net/api/offers/pricing/imports \
  -H 'Content-Type: multipart/form-data' \
  -F file=string \
  -F shop=0

Responses

Created

Headers
Locationany

Pre-calculated URL to call to get the import status

Bodyapplication/json
import_idstring

Offer pricing import identifier

importidstringDeprecated

Offer pricing import identifier

Response
application/json
{ "import_id": "7d98c3c0-81fe-407d-9721-d4b01951c8d8" }

PRI02 - Get information and statistics about an offer pricing import

Request

Call Frequency
Maximum usage: Once per minute
Read More
Pagination

This resource supports seek pagination (see documentation)

Sort fields
sort field can have the following values:
  • dateCreated (Default) - Sort by creation date (desc by default)
Query
import_idArray of strings

Import identifiers

shop_idinteger(int64)

Shop identifier

start_datestring(date-time)

Start creation date for filtering

end_datestring(date-time)

End creation date for filtering

statusstring

Offer import status

Enum"WAITING""RUNNING""COMPLETE""FAILED"
originsArray of strings

List of offer pricing import origins for filtering.

Items Enum"API""FTP""SFTP""HTTP""HTTPS""FRONT""PENDING_OFFERS"
curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/pricing/imports?end_date=2019-08-24T14%3A15%3A22Z&import_id=string&origins=API&shop_id=0&start_date=2019-08-24T14%3A15%3A22Z&status=WAITING'

Responses

OK

Bodyapplication/json
dataArray of objectsrequired

Page of data

next_page_tokenstring

Token to access the next page. Absent if the current page is the last one.

previous_page_tokenstring

Token to access the previous page. Absent if the current page is the first one.

Response
application/json
{ "data": [ {} ], "next_page_token": "string", "previous_page_token": "string" }

PRI03 - Get the error report for a price import in CSV format

Request

Only returns lines of offers with at least one offer price in error.
The first column contains the line number in error. The second column contains the error reason.
The returned file is ready to be reimported after the values have been fixed.
Offer prices that were submitted in the price import but don't appear in the error report were successfully imported.

Call Frequency
Maximum usage: Once per minute
Read More
Path
import_idstringrequired

Import identifier

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/pricing/imports/{import_id}/error_report'

Responses

OK

Bodytext/csv
string(binary)
Response
text/csv
string

OF26 - Get the quantity of stock available for an offer.⚠️ No Integration Allowed ⚠️Deprecated

Request

Quantity return rules:

  • 0: if quantity = 0 or the offer is not available
  • x: quantity available

Path
offerinteger(int64)required

Offer ID

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/{offer}/quantity'

Responses

OK

Bodyapplication/json
offer_idinteger(int64)required

Offer identifier

quantityinteger(int32)required

Get the quantity of stock available for this offer.
Quantity return rules:

  • 0: if quantity = 0 or the offer is not available
  • x: quantity available

Response
application/json
{ "offer_id": 2087, "quantity": 7 }

OF51 - Get offers CSV file⚠️ No Integration Allowed ⚠️Deprecated

Request

Get a CSV file that includes the offers updated and deleted since the last request date.
For deleted offers, only offer-id, product-sku, shop-id, shop-sku, active and deleted columns are returned.
If the last_request_date param is not set the api returns all the active offers (inactive offers can be included with include_inactive_offers parameter).
If offers have custom fields, a column is added for each existing custom field with as header the code of the custom field.

Results are sorted by offer identifier.

Call Frequency
Maximum usage:
- Differential: once per minute
- Full: once per day
Read More

Query
last_request_datestring(date-time)

Date and time of your last request.
If provided, retrieves all offers updated since this date and time, including deleted and inactive offers.
If not provided, retrieves all active offers only, unless otherwise specified in the include_inactive_offers field.

channel_codesstring

List of the channel codes to filter with, using a comma (,) as a separator. If specified, only offers that can be sold on the specified channel(s) will be returned. If not, offers will be returned regardless of their channels.

shipping_zonesstring

List of the shipping zones codes to filter with, URL-encoded and using a comma (,) as a separator. If specified, only shipping information linked to the given zones will be returned. Otherwise, all shipping information for all zones will be returned.

include_inactive_offersboolean

When calling the API in full mode (i.e. when no last_request_date is provided), inactive offers are not returned. To retrieve both active and inactive offers, set this field to true.
When calling the API in differential mode (i.e. when the last_request_date is provided), both active and inactive offers are returned. This field cannot be used in differential mode otherwise the call fails.

Default false
include_fieldsstring

List of the fields to include, URL-encoded and using a comma (,) as a separator. If specified, only listed fields will be returned.

modelsstring

A comma separated list of platform models to filter with. Accepted values are MARKETPLACE, DROPSHIP, ONE_CREDITOR

curl -i -X GET \
  'https://your-instance.mirakl.net/api/offers/export?channel_codes=string&include_fields=string&include_inactive_offers=false&last_request_date=2019-08-24T14%3A15%3A22Z&models=string&shipping_zones=string'

Responses

OK

Bodytext/csvArray [
activeboolean

Indicates if the offer is active or inactive (not for sale or discontinued)

allow-quote-requestsboolean

Allow customers to request quotes on this offer

available-end-datestring

The date when the offer will be deactivated

available-start-datestring

The date when the offer will be activated

channelsstring

List of channel codes on which the offer can be sold.

currency-iso-codestring

ISO code of the currency

Enum"AED""ARS""AUD""BAM""BGN""BHD""BRL""CAD""CHF""CLP"
date-createdstring

Date and time of the offer creation

deletedboolean

Indicates whether the offer exists or is deleted

delivery-time-earliest-days[zone=<code>,method=<code>]string

Minimum delivery time.
Returned if Export shipping charges and delivery times in OF51 is enabled.

delivery-time-latest-days[zone=<code>,method=<code>]string

Maximum delivery time.
Returned if Export shipping charges and delivery times in OF51 is enabled.

descriptionstring

Offer description

discount-end-datestring

The end date of the discount period

discount-end-date[channel=<channelcode>]string

The end date of the discount period for the indicated channel, when the Channel Pricing feature is activated.
Can be empty. In this case, the discount price applies from the start date and is then always available for the indicated channel.

discount-pricenumber(with decimals)

The discount price of the offer

discount-price[channel=<channelcode>]number(with decimals)

The discount price of an offer for the indicated channel, when the Channel Pricing feature is activated.
Can be empty when no discount price is defined for a given channel. In this case, the default discount price of the offer applies to the indicated channel.

discount-rangesstring

The ranges of the discount prices when the Volume Pricing feature is activated.

discount-ranges[channel=<channelcode>]string

The ranges of the discount prices for the indicated channel, when the Channel Pricing and Volume Discount features are activated.

discount-start-datestring

The start date of the discount period

discount-start-date[channel=<channelcode>]string

The start date of the discount period for the indicated channel, when the Channel Pricing feature is activated.
Can be empty. In this case, the discount price applies from the start date and is then always available for the indicated channel.

eco-contribution-amount[epr category code]number(with decimals)

Amount of the eco-contribution for the EPR category. Returned if Data collection related to circular economy regulations is enabled.

favorite-rankinteger(int32)

If present, indicates that the offer is a favorite offer ranked

fulfillment-center-codestring

Code of the fullfilment center

last-updatedstring

Date and time of the last update of the offer

leadtime-to-shipinteger(int32)

The lead time to ship corresponding to the offer

logistic-classstring

The logistic class associated to the offer

max-order-quantityinteger(int32)

The maximum order quantity customers must select to be able to place an order for that offer

measurement-unitsstring

The product measurement and the product unit
This option is only available if the operator creates a product with a measurement unit.

min-order-quantityinteger(int32)

The minimum order quantity customers must select to be able to place an order for that offer

min-shipping-pricenumber(with decimals)

Minimum shipping charges for the offer

min-shipping-price-additionalnumber(with decimals)

Additional shipping charges for the offer

min-shipping-typestring

Shipping method with the minimum shipping charges (code referenced by the operator)

min-shipping-zonestring

Shipping zone with the minimum shipping charges (code referenced by the operator)

modelstring

The platform model of the seller account providing the offer.
Used for Hybrid platforms.
One of MARKETPLACE, DROPSHIP, ONE_CREDITOR

offer-idinteger(int64)

Unique offer identifier assigned by Mirakl

origin-pricenumber(with decimals)

The original price of the offer

origin-price[channel=<channelcode>]number(with decimals)

The original price granted for an offer for the indicated channel

package-quantityinteger(int32)

For one order, customers can only add packages of product items.
The number of items per package is the increment number of that product in an order.

premiumboolean

Indicates if the store is premium or not

pricenumber(with decimals)

Offer current price (original price or discount price if in discount period)

price-additional-infostring

Information about the offer price

price-rangesstring

The price ranges when the Volume Pricing feature is activated.

price-ranges[channel=<channelcode>]string

The price ranges for the indicated channel when the Channel Pricing and the Volume Pricing features are activated.
Can be empty when no specific price range is defined for a given channel.

price[channel=<channelcode>]number(with decimals)

The unit price of an offer for the indicated channel, when the Channel Pricing feature is activated.
Can be empty when no specific price is defined for a given channel. In this case, the base price of the offer applies to the indicated channel.

producer-id[epr category code]string<= 255 characters

Producer identifier of the eco-contribution for the EPR category. Returned if Data collection related to circular economy regulations is enabled.

product-skustring

Product identifier within the operator's system

product-tax-codestring

Tax code for the product

professionalboolean

Indicates if the store is professional or not

quantityinteger(int32)

Offer quantity available

shipping-price[zone=<code>,method=<code>]number(with decimals)

Shipping charges for the offer, for each combination of shipping zone and method.
Returned if Export shipping charges and delivery times in OF51 is enabled.

shop-idinteger(int64)

Unique identifier for the store providing this offer (assigned by Mirakl)

shop-namestring

Name of the store providing this offer

shop-skustring

Shop's sku of the offer

state-codestring

Offer condition code

total-pricenumber(with decimals)

Offer price + minimum shipping charge

]
Response
text/csv
offer-id;product-sku;min-shipping-price;min-shipping-price-additional;min-shipping-zone;min-shipping-type;price;total-price;price-additional-info;quantity;description;state-code;shop-id;shop-name;professional;premium;logistic-class;active;favorite-rank;channels;deleted;origin-price;discount-start-date;discount-end-date;available-start-date;available-end-date;discount-price;currency-iso-code;discount-ranges;leadtime-to-ship;allow-quote-requests;price-ranges;fulfillment-center-code;shop-sku;date-created;last-updated;model;min-order-quantity;max-order-quantity;package-quantity;price[channel=CA];origin-price[channel=CA];discount-start-date[channel=CA];discount-end-date[channel=CA];discount-price[channel=CA];discount-ranges[channel=CA];price-ranges[channel=CA];price[channel=FR];origin-price[channel=FR];discount-start-date[channel=FR];discount-end-date[channel=FR];discount-price[channel=FR];discount-ranges[channel=FR];price-ranges[channel=FR];price[channel=BFR];origin-price[channel=BFR];discount-start-date[channel=BFR];discount-end-date[channel=BFR];discount-price[channel=BFR];discount-ranges[channel=BFR];price-ranges[channel=BFR];price[channel=CHR];origin-price[channel=CHR];discount-start-date[channel=CHR];discount-end-date[channel=CHR];discount-price[channel=CHR];discount-ranges[channel=CHR];price-ranges[channel=CHR];price[channel=US];origin-price[channel=US];discount-start-date[channel=US];discount-end-date[channel=US];discount-price[channel=US];discount-ranges[channel=US];price-ranges[channel=US];ecotax;gift-wrap;min-quantity-ordered;measurement-units;producer-id[FR-DEA];eco-contribution-amount[FR-DEA];producer-id[DE-WEEE];eco-contribution-amount[DE-WEEE]
2130;MKP100000000037254;0.00;0.00;DOM1;CLC;50.00;50.00;;40;;11;2000;ACME SHOP;true;true;M;true;;FR|US;false;50.00;;;;;;USD;;;false;1|50.00;DEFAULT;sku-2130;2019-01-31T22:00:00Z;2024-01-07T08:52:10Z;MARKETPLACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kg|1.00000000,L|1.00000000;FR123456_89ABCD;3.59;ProducerID1;0.99
2131;MKP100000000025008;0.00;0.00;DOM1;CLC;50.00;50.00;;20;;11;2000;ACME SHOP;true;true;M;true;;FR|US;false;50.00;;;;;;USD;;;false;1|50.00;DEFAULT;sku-2130;2019-03-31T22:00:00Z;2024-01-07T08:52:10Z;MARKETPLACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;FR123456_89ABCD;3.59;ProducerID1;0.99
2135;MKP100000000154824;0.00;0.00;DOM1;CLC;49.00;49.00;Apply Discount prices;1000000;Offer description;11;2000;ACME SHOP;true;true;M;true;;FR|US;false;50.00;2019-03-31T22:00:00Z;2019-04-29T22:00:00Z;2019-03-31T22:00:00Z;2019-09-29T22:00:00Z;;USD;1|49.00,50|44.00,100|39.00;10;false;1|50.00,50|45.00,100|40.00;DEFAULT;sku-2130;2019-03-31T22:00:00Z;2024-01-07T08:52:10Z;DROPSHIP;1;5;1;;;;;;;;59.00;60.00;2019-03-31T22:00:00Z;2019-04-29T22:00:00Z;;1|59.00,50|49.00,100|44.00;1|60.00,50|50.00,100|45.00;;;;;;;;;;;;;;;;;;;;;;20;true;5;;FR123456_89ABCD;3.59;ProducerID1;0.99
2136;MKP100000000154824;0.00;0.00;DOM1;CLC;49.00;49.00;Apply Discount prices;5000;Offer for product MKP100000000154824;11;2000;ACME SHOP;true;true;M;true;;FR|US;false;50.00;2019-03-31T22:00:00Z;2019-05-31T22:00:00Z;2019-03-01T22:00:00Z;2019-05-29T22:00:00Z;;USD;1|49.00,5|45.00;5;true;1|50.00;DEFAULT;sku-2130;2019-03-31T22:00:00Z;2024-01-07T08:52:10Z;DROPSHIP;2;3;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49.00;49.00;2019-04-01T22:00:00Z;2019-04-29T22:00:00Z;;50|45.00;1|49.00,50|48.00;20;;;;FR123456_89ABCD;3.59;ProducerID1;0.99

Orders

Operations

Picklists

Operations

Promotions

Operations

Returns

Operations

Stores

Operations

Multiple shipments

Operations