Mirakl Catalog Manager 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).

Shop Selection

When calling APIs as a shop, a request parameter shop_id is available. This parameter is useful when a user is associated to multiple shops and should be specified to select the shop to be used by the API.

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/

Stores

Operations

A01 - Get shop information

Request

Call Frequency
Maximum usage: Once per day
Query
shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

curl -i -X GET \
  'https://your-instance.mirakl.net/api/account?shop_id=0'

Responses

OK

Bodyapplication/json
applicable_taxesArray of objects

List of the shop's applicable taxes

approval_delayinteger(int64)

Average time for a shop to accept or refuse an order (in seconds)

approval_ratenumber(with decimals)

Rate of accepted orders

bannerstring

Url of the shop's banner image

channelsArray of stringsuniquerequired

List of the channel codes associated to the shop

closed_fromstring(date-time)

The start date of the closing of the shop

closed_tostring(date-time)

The end date of the closing of the shop

contact_informationsobjectrequired

Contact information

currency_iso_codestringrequired

The currency of the shop (iso format)

Enum"AED""ARS""AUD""BAM""BGN""BHD""BRL""CAD""CHF""CLP"
date_createdstring(date-time)required

Creation date of the shop

default_billing_informationobjectrequired

The default billing information of the shop, used for invoicing and reporting purposes

descriptionstring

The description of the shop, max length: 3000 characters.

domainsArray of stringsuniquerequired

Shop domains

Items Enum"PRODUCT""SERVICE"
evaluations_countinteger(int64)required

Number of evaluations for the shop

free_shippingbooleanrequired

Whether or not this shop offers free shipping to customers

gradenumber(with decimals)

Global grade of the shop

is_professionalbooleanrequired

Whether or not the shop is professional

kycobject

KYC information (only supported when KYC feature is enabled)

last_updated_datestring(date-time)required

The date of the last modification of the shop. Note: The following statistics fields do not update the last_updated date:

  • orders_count
  • offers_count
  • evaluations_count
  • grade
  • approval_rate
  • approval_delay
  • order_messages_response_delay
logostring

Url of the shop's logo image

modelstring

Shop platform model, current possible values :

  • MARKETPLACE
  • DROPSHIP
  • ONE_CREDITOR
Enum"MARKETPLACE""DROPSHIP""ONE_CREDITOR"
offers_countinteger(int64)required

Total count of active offers of the shop

order_messages_response_delayinteger(int64)

Average time for a shop to answer to an order message (in seconds)

orders_countinteger(int64)required

Total count of debited orders (or if Pay on Delivery, accepted) of the shop

payment_detailsobjectrequired

Payment details

payment_infoobject

Payment information

payment_method_mandatorybooleanrequired

Payment method mandatory

premiumbooleanrequired

Whether or not the shop is premium

producer_identifiersArray of objectsunique

List of shop’s producer identifiers per Extended Producer Responsibility (EPR) categories. Only available if the operator setting Activate data collection related to circular economy regulations is enabled.

recycling_policystring<= 5000 characters

Recycling policy - only available if the operator setting Activate data collection related to circular economy regulations has been enabled.

return_policystring

Terms of restitution, max length: 60000 characters.

shippingobjectrequired

Shop shipping configuration

shipping_countrystring

Code ISO 3166-1 alpha-3 of the shipping country

shippingsArray of objects

All the pair shipping zone / shipping type accepted by the shop

shop_additional_fieldsArray of objectsrequired

List of additional fields

shop_idinteger(int64)required

The identifier of the shop

shop_namestringrequired

The name of the shop

shop_statestringrequired

The state of the shop

Enum"OPEN""CLOSE""SUSPENDED""TERMINATED"
specific_billing_informationsArray of objects

The list of specific billing information of the shop, used for invoicing and reporting purposes
Applies only when the shop is professional

suspension_typestring

Shop suspension type, current possible values:

  • MANUAL: Shop account has been manually suspended in the back-office
  • PENDING_APPROVAL: Shop account has been suspended at creation
  • AUTOMATIC_SUSPENSION: Shop account has been suspended by Mirakl Quality Control
  • INCOMPLETE_PROFILE: Shop account is suspended because some mandatory fields are missing in its profile

Enum"MANUAL""PENDING_APPROVAL""INCOMPLETE_PROFILE""AUTOMATIC_SUSPENSION"
billing_infoobjectDeprecatedrequired

Banking information

Use “payment_info” attribute instead

pro_detailsobjectDeprecatedrequired

Professional details

Use "default_billing_information" instead

shipping_typesArray of stringsDeprecatedrequired

List of shipping types of the shop

Use “shippings” attributes instead

shipping_zonesArray of stringsDeprecatedrequired

List of shipping zones of the shop

Use “shippings” attributes instead

Response
application/json
{ "applicable_taxes": [ {} ], "approval_delay": 33, "approval_rate": 1, "banner": "https://url.mirakl.net/mmp/media/shop-banner/2000", "channels": [ "US" ], "closed_from": "2019-07-31T22:00:00Z", "closed_to": "2019-08-31T21:59:59Z", "contact_informations": { "city": "New York", "civility": "Mr", "country": "USA", "email": "shop@mail.com", "fax": "213-509-6997", "firstname": "John", "lastname": "Doe", "phone": "213-509-6995", "phone_secondary": "213-509-6996", "state": "Manhattan", "street1": "30, Prince Street", "street2": "1st floor", "web_site": "https://www.mirakl.com", "zip_code": "NY 10012" }, "currency_iso_code": "USD", "date_created": "2019-03-25T14:34:03Z", "default_billing_information": { "corporate_information": {}, "default_language": "en_US", "fiscal_information": {}, "id": "a83c1170-f8cb-45a1-aa4a-affe809d6c64", "registration_address": {} }, "description": "Games seller", "domains": [ "PRODUCT" ], "evaluations_count": 3, "free_shipping": false, "grade": 4, "is_professional": true, "kyc": { "reason": "Missing information", "status": "REFUSED" }, "last_updated_date": "2019-03-28T09:28:59Z", "logo": "https://url.mirakl.net/mmp/media/shop-logo/2000", "model": "MARKETPLACE", "offers_count": 234, "order_messages_response_delay": 76, "orders_count": 7, "payment_details": { "paid_balance": -170.06, "payable_balance": -259.2, "pending_balance": 512.84 }, "payment_info": { "@type": "ABA", "bank_account_number": "000123456789123", "bank_city": "New York", "bank_name": "Bank of America", "bank_street": "115 W 42nd St", "bank_zip": "NY 10036 US", "bic": "BOFAUS3NXXX", "owner": "John Doe", "routing_number": "789456124" }, "payment_method_mandatory": true, "premium": true, "pro_details": { "corporate_name": "ACME SHOP", "identification_number": "01234567", "tax_identification_number": "XXX-XX-XXXX" }, "producer_identifiers": [ {}, {} ], "recycling_policy": "When we deliver your new item, we’ll take your old one away for you. Appliance recycling: this service is available through our home delivery service. Recycling electronic items in-store: if you have an old electronic item, we can safely recycle these items in-store, for free", "return_policy": "Any product return must be the subject of a formal agreement between the Seller and Purchaser. Any product returned without this agreement shall be held on behalf of the Purchaser and shall not give rise to the granting of any credit note. Claims must be received by shop within 8 days of the delivery of the goods. Subsequently to this delay, no claims shall be accepted. Once this delay has expired, should the client not have addressed their claim in writing to shop, the client is deemed to have accepted the product.\r\nWarranties that cover the delivered goods only apply within the framework of their intended use. Defects and damage resulting from natural wear, faulty assembly or maintenance, as well as modification of the products that was not intended or specified by the Seller are excluded from the warranty. Goods must be returned in their original packaging and as new, the cost and risks of returning the goods being borne by the Purchaser. Once the returned goods have been received and inspected, shop shall send the Purchaser a credit note corresponding to the amount of the original invoice, after deduction of any compensation or expenses which arise from any reconditioning work deemed necessary. This sum is credited to the account that the Purchaser has opened with the shop.", "shipping": { "lead_time_to_ship": 2 }, "shipping_country": "USA", "shippings": [ {}, {}, {} ], "shop_additional_fields": [ {}, {}, {} ], "shop_id": 2000, "shop_name": "ACME SHOP", "shop_state": "OPEN", "suspension_type": null }

A02 - Update shop information

Request

Call Frequency
Maximum usage: Once per day
Query
shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

Bodyapplication/json
addressobject

The address of the shop. Cannot be null.

channelsArray of strings

List of the channel codes associated to the shop.

closed_fromstring(date-time)

Date: if defined, this shop will be closed on this date. Nullable.

closed_tostring(date-time)

Date: if defined, this shop will be reopened on this date. Nullable.

descriptionstring

Description of the shop. Nullable.

emailstring

Email of the shop. Cannot be null.

faxstring

Fax of the shop. Nullable.

is_professionalboolean

Whether or not the shop is professional. Cannot be null.

payment_infoobject

Payment information of the shop. Nullable.

pro_detailsobject

Professional details of the shop. Updated and not nullable if shop is declared as professional.

producer_identifiersArray of objects[ 0 .. 50 ] items

List of shop’s producer identifiers per Extended Producer Responsibility (EPR) categories. Only available if the operator setting Activate data collection related to circular economy regulations is enabled.

recycling_policystring<= 5000 characters

Recycling policy - only available if the operator setting Activate data collection related to circular economy regulations has been enabled.

return_policystring

Return policy of the shop. Nullable.

shipping_countrystring

Shipping country of the shop. Nullable.

Enum"AFG""ALA""ALB""DZA""ASM""AND""AGO""AIA""ATA""ATG"
shop_additional_fieldsArray of objects

Additional fields of the shop. Note that if the 'value' field in the child structure is absent, the corresponding additional field value will be removed for this shop. Nullable.

shop_namestring

The name of the shop. Cannot be null.

web_sitestring

Website of the shop. Nullable.

curl -i -X PUT \
  'https://your-instance.mirakl.net/api/account?shop_id=0' \
  -H 'Content-Type: application/json' \
  -d '{
    "address": {
      "city": "New York",
      "civility": "Mr",
      "country": "USA",
      "firstname": "Doe",
      "lastname": "John",
      "phone": "213-509-6996",
      "phone_secondary": "213-509-6995",
      "state": "Manhattan",
      "street1": "30, Prince Street",
      "street2": "1st floor",
      "zip_code": "NY 10012"
    },
    "channels": [
      "US"
    ],
    "closed_from": "2025-03-20T16:42:21Z",
    "closed_to": "2026-03-20T16:42:21Z",
    "description": "This is the description of this seller",
    "email": "my-store@example.com",
    "fax": "0245875499",
    "is_professional": true,
    "payment_info": {
      "@type": "IBAN",
      "bank_name": "CACE",
      "bic": "AGRIFRPPXX2",
      "iban": "FR6031047696713027315572590",
      "owner": "John Doe"
    },
    "pro_details": {
      "corporate_name": "Mirakl Inc.",
      "identification_number": "44268625900078",
      "tax_identification_number": "FR939383"
    },
    "producer_identifiers": [
      {
        "epr_category_code": "FR-DEA",
        "producer_id": "FR123456_89ABCD"
      },
      {
        "epr_category_code": "DE-WEEE",
        "producer_id": "PRODUCERID1"
      }
    ],
    "recycling_policy": "When we deliver your new item,we’ll take your old one away for you.Appliance recycling:this service is available through our home delivery service.Recycling electronic items in-store:if you have an old electronic item,we can safely recycle these items in-store,for free",
    "return_policy": "3 days return policy",
    "shipping_country": "ITA",
    "shop_additional_fields": [
      {
        "code": "segment",
        "value": "1"
      },
      {
        "code": "prio-level",
        "value": "High"
      }
    ],
    "shop_name": "My Super Seller",
    "web_site": "https://example.fr"
  }'

Responses

OK

Bodyapplication/json
errorsArray of objects

List of errors encountered when updating the shop

updatedobject

Details of the modified shop

Response
application/json
{ "errors": [], "updated": { "address": {}, "channels": [], "closed_from": "2022-03-20T16:42:21Z", "closed_to": "2025-03-20T16:42:21Z", "default_billing_information": {}, "description": "This is the description of this seller", "email": "my-store@example.com", "fax": "0245875499", "is_professional": true, "model": "MARKETPLACE", "payment_info": {}, "payment_method_mandatory": true, "pro_details": {}, "producer_identifiers": [], "recycling_policy": "When we deliver your new item,we’ll take your old one away for you.Appliance recycling:this service is available through our home delivery service.Recycling electronic items in-store:if you have an old electronic item,we can safely recycle these items in-store,for free", "return_policy": "3 days return policy", "shipping": {}, "shipping_country": "ITA", "shop_additional_fields": [], "shop_name": "My Super Seller", "web_site": "https://example.fr" } }

S30 - List shop's documents

Request

You must specify at least one of the following parameters: shop_ids, updated_since

Call Frequency
Maximum usage: At each display of a page that includes documents from a store (for example: during the KYC process)

Query
shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

curl -i -X GET \
  'https://your-instance.mirakl.net/api/shops/documents?shop_id=0'

Responses

OK

Bodyapplication/json
shop_documentsArray of objectsrequired

Document details

total_countinteger(int32)Deprecated

Total number of documents

Response
application/json
{ "shop_documents": [ {}, {} ] }

S32 - Upload business documents to associate with a shop

Request

Document filenames must be distinct and there can be only one file per document type.
Only documents of the following types are supported: csv, doc, xls, xlsx, ppt, pdf, odt, ods, odp, txt, rtf, png, jpg, gif, zip, zpl
You can upload a maximum of 50 business documents for each shop. These documents are not order related documents.

Call Frequency
Maximum usage: 50 business documents per call

Query
shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

Bodymultipart/form-data
filesArray of strings(binary)required

Files to upload

shop_documentsobjectrequired

A descriptor associated to the files

curl -i -X POST \
  'https://your-instance.mirakl.net/api/shops/documents?shop_id=0' \
  -H 'Content-Type: multipart/form-data' \
  -F 'files[0]=string' \
  -F 'shop_documents[shop_documents][0][file_name]=string' \
  -F 'shop_documents[shop_documents][0][type_code]=string'

Responses

OK

Bodyapplication/json
documentsArray of objectsrequired

List of error reports associated to each document in an error state

errors_countinteger(int32)

The number of documents in an error state

Response
application/json
{ "errors_count": 1, "shop_documents": [ {} ] }

S31 - Download documents for one or multiple shops

Request

  • It is mandatory to specify either the shop_ids or the document_ids.
  • If a list of document identifiers is specified only these documents are downloaded.
    • If more than one document id is specified, the documents will be wrapped in a ZIP archive
    • If only one document id is specified the document will not be zipped
  • If no document identifiers is specified, all the shop documents will be downloaded.
    Use a list of shop document type codes to retrieve specific types from your shop.
    In this case, the output of the API will always be a ZIP archive even if there is only one document to retrieve.

When documents are retrieved, they're wrapped into a ZIP archive except when only one document id is specified. The tree structure of this archive is as follow:


documents-timestamp.zip
|__ shop_id/
|   |__ image.png
|   |__ image(1).png
|   |__ foo.txt

Returns a 404 if at least one document id or one document type code is invalid

Call Frequency
Maximum usage: After each S30 call, when you want to download documents from a store
Query
document_idsstring

A list of document identifiers (separated by a comma). It is mandatory to specify either the shop_ids or the document_ids

type_codesstring

A list of document type codes (separated by a comma)

shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

curl -i -X GET \
  'https://your-instance.mirakl.net/api/shops/documents/download?document_ids=string&shop_id=0&type_codes=string'

Responses

OK

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

S33 - Delete a shop document

Request

Call Frequency
Maximum usage: At each document deletion from one store
Path
document_idinteger(int64)required

Document identifier to delete

Query
shop_idinteger(int64)

Use this parameter when your user has access to several shops. If not specified, the shop_id from your default shop will be used.

curl -i -X DELETE \
  'https://your-instance.mirakl.net/api/shops/documents/{document_id}?shop_id=0'

Responses

No Content

Platform Settings

Operations

Products

Operations