Conformance table and unverified facts
What this add-on sends to the marketplace, how each call was checked, and which Conrad-specific facts could not be verified publicly. Source of the API description: the official Mirakl Marketplace Seller OpenAPI file published on the Mirakl developer portal (developer.mirakl.com, Mirakl Marketplace APIs, Seller, downloaded 2026-11-09). The operator facts about Conrad come from Conrad’s public seller FAQ and from integrators’ public guides; anything that could not be confirmed is marked UNVERIFIED.
This is a statement about what was tested, not a certification: the add-on was tested against a local stand-in that validates every request against the OpenAPI file. No test ever called a Conrad or any other real Mirakl endpoint, and nothing was tested with a live Conrad seller account.
How the checks work
Section titled “How the checks work”tests/openapi/build-subset.mjsextracts the operations below from the downloaded OpenAPI file (parameters, enums, request and response schemas, the example payloads).php tests/unit_mirakl.phpruns the driver with the spec’s example payloads as answers and records every request;tests/openapi/check.mjsvalidates each recorded request: method and path, query parameters and their enum values, JSON body against the schema (unknown properties are errors), multipart fields, the import file columns, the API key header, theContent-Length: 0of OR24.- The mock server (
tests/mock-server/server.js) applies the same validator to every request of the HTTP end-to-end runs on CS-Cart and Multi-Vendor and answers 400 to a request that does not conform; the runs end with “every request conformed”. The e2e scripts refuse to start unless the store’s base URL points at 127.0.0.1.
Operations used
Section titled “Operations used”| Id | Method and path | Used for | Checked in |
|---|---|---|---|
| A01 | GET /api/account |
Test connection: shop name, id, currency, channels | unit, e2e |
| H11 | GET /api/hierarchies |
Conrad category tree for the mapping | unit, e2e |
| PM11 | GET /api/products/attributes |
Product attributes of a category (read only, informational) | unit, e2e |
| AF01 | GET /api/additional_fields?entities=OFFER |
Offer fields (attributes) and their allowed values | unit, e2e |
| OF61 | GET /api/offers/states |
Code of the condition “New” | unit, e2e |
| OF01 | POST /api/offers/imports (multipart, import_mode=NORMAL) |
Create or update offers from a CSV file | unit, e2e |
| OF24 | POST /api/offers (JSON) |
Alternative to OF01, selectable in the operator file; not used by default | unit |
| OF02 | GET /api/offers/imports/{import} |
State and statistics of an offer import | unit, e2e |
| OF03 | GET /api/offers/imports/{import}/error_report |
Reason per rejected offer line | unit, e2e |
| OF04 | GET /api/offers/imports |
Finds an import whose answer was lost | unit, e2e |
| STO01 / STO02 / STO03 | POST /api/offers/stock/imports, GET .../stock/imports/{id}/status, .../error_report |
Stock changes and their result | unit, e2e |
| PRI01 / PRI02 / PRI03 | POST /api/offers/pricing/imports, GET /api/offers/pricing/imports?import_id=, .../error_report |
Price changes and their result | unit, e2e |
| OR11 | GET /api/orders |
Orders waiting for acceptance, orders changed since a moment, order lines for a refund | unit, e2e |
| OR21 | PUT /api/orders/{order_id}/accept |
Accept or refuse each line (by stock) | unit, e2e |
| OR23 | PUT /api/orders/{order_id}/tracking |
Carrier (by code, or by name and link) and tracking number | unit, e2e |
| OR24 | PUT /api/orders/{order_id}/ship |
Validate the shipment (empty body, Content-Length: 0) |
unit, e2e |
| OR28 | PUT /api/orders/refund |
Refund shipped order lines | unit, e2e |
| OR33 | PUT /api/orders/{order_id}/cancel-order-lines |
Cancel lines the seller cannot deliver | unit, e2e |
| SH21 | GET /api/shipping/carriers |
Carrier codes | unit, e2e |
| RE01 | GET /api/reasons |
Cancellation (CANCELATION) and refund (REFUND) reasons | unit, e2e |
| RT11 | GET /api/returns |
Return requests (seek pagination) | unit, e2e |
| RT21 | PUT /api/returns/accept |
Accept a return request | unit, e2e |
Not used: the product imports (P41 and following): the add-on does not create catalogue products; OF51 to OF54 (offer exports); OR26 (the per-order refund; OR28 is used), incidents (OR64), messages, invoices and shop documents.
Authentication and limits
Section titled “Authentication and limits”| Topic | What the add-on does | Source |
|---|---|---|
| Authentication | The seller API key in the plain Authorization header (scheme “Shop-API-Key” of the OpenAPI file), no Bearer, no token request. |
OpenAPI file |
| Base URL | The Mirakl address of the seller’s account, entered by the seller per mode. https only; hosts that are an IP number, localhost or a non-public name are refused because the server calls the address. The add-on does not know or guess Conrad’s host. |
UNVERIFIED for Conrad (see below) |
| Several shops | shop_id query parameter when the account field is set |
OpenAPI file |
| Call frequency | Offer, stock and price imports: at most one per minute and recommended every 5 minutes, per seller; the sync interval setting defaults to 15 minutes. | OpenAPI file (“Call Frequency” of each operation) |
| Rate limit answers | The OpenAPI file does not describe HTTP 429 or Retry-After. The generic job queue treats 429, 408, 425 and 5xx as retryable and honours a Retry-After header. | Not in the OpenAPI file |
| Dates | ISO 8601 UTC (2026-11-09T10:00:00Z) |
OpenAPI file |
Things the OpenAPI file does not describe
Section titled “Things the OpenAPI file does not describe”| Item | What the add-on assumes | Status |
|---|---|---|
max and offset on OR11 |
Offset pagination with page size 100. | Mirakl’s general pagination convention; reported by the validator as a note |
page_token on RT11 and OF04 |
Seek pagination: the response has next_page_token; the add-on sends it back as page_token. OF04 also filters origins=API and mode=NORMAL, so a back-office, FTP or REPLACE import of the same size is never adopted. |
Same (the filters are in the OpenAPI file) |
| Additional offer fields in the OF01 file | Extra columns named by the field code (AF01). Only the OF24 JSON alternative lists them in the file. | Reported as a note |
Value of product-id-type |
EAN |
Used in the OpenAPI example of OF24; the allowed values are operator configuration |
| Layout of the error reports | OF03: a header with sku and error-message. STO03 / PRI03: line number, reason, then the submitted line. The parser finds the sku by header or by value. |
OpenAPI file |
| Country codes of orders | country_iso_code is ISO 3166 alpha 3; the add-on converts it to alpha 2 |
OpenAPI file |
| Address before acceptance | “Null before shipping (or acceptance, depending on platform setting)”: orders are imported once they carry an address | OpenAPI file |
| OR21 with a refused line | The add-on answers every line, accepted=false for lines it cannot deliver. Whether Conrad’s instance allows a partial answer is UNVERIFIED: a 4xx answer is logged and the order is left for the back office. |
Not in the OpenAPI file |
| Amounts of refunds | OR11 price is the line “without shipping price” and total_price the line “with shipping price and fees”; OR28 takes the offer part (amount) and the shipping part (shipping_amount) separately. The refund row sends amount = price, shipping_amount = shipping_price, the line’s taxes and the order’s currency_iso_code (required off the operator default currency). A line counts as refunded when earlier refunds cover price and shipping_price. Conrad’s tax mode is UNVERIFIED. |
OpenAPI file (OR11, OR28) |
| Refused and cancelled lines | Lines in order_line_state REFUSED or CANCELED are not imported. |
OpenAPI file (OR11) |
Conrad facts: what is verified and what is not
Section titled “Conrad facts: what is verified and what is not”Checked on 2026-11-09 from public sources only: Conrad’s seller FAQ (platform.conrad.de/en/seller/seller-faq.html), the connector guide of e-tailize (e-tailize.com/help/marketplaces/sell-on-conrad/), the Conrad guides of Channable, M2E and ChannelEngine, and the Mirakl customer material. Nothing here comes from a seller contract, a seller login or a live account.
| Item | Value used | Status |
|---|---|---|
| Platform | Conrad runs its marketplace on Mirakl | Verified (e-tailize, Channable, M2E, Mirakl) |
| Who may sell | Approved sellers; VAT-registered with a warehouse in Germany; onboarding with ID, VAT proof, German VAT ID, terms; contact form | Conrad seller FAQ. Dutch sellers: Dutch VAT number and warehouse per integrators only: UNVERIFIED |
| Buyers | Business customers (companies, schools, public bodies) in Germany; private customers through a subsidiary shop | Conrad seller FAQ (as of the check; Conrad says it plans other countries) |
| Markets | DE, AT, NL, FR, IT live in the operator file; BE marked “limited”; CH marked “announced” | DE AT NL FR IT: e-tailize. BE: two integrators, not e-tailize. CH: no public source: UNVERIFIED, the currency CHF and the conversion are implemented but cannot be confirmed for a real account. CZ appears in one list and is not offered |
| Several countries | One connection (store account = one sales channel) per country | Channable, e-tailize |
| Currency | EUR; CHF for the announced Swiss market | EUR: M2E guide. CHF: not confirmed |
| API address | Entered by the seller; no default | UNVERIFIED: the host of Conrad’s Mirakl instance is not published |
| Authentication | API key of the seller user in the back office; plain Authorization header (Mirakl standard) |
Key creation and “Store Id”: e-tailize. Header: Mirakl standard |
| Shop ID | Conrad’s “Store Id” maps to the optional shop_id |
e-tailize; the exact mapping is UNVERIFIED |
| Channel codes | Entered by the seller | UNVERIFIED, not public |
| Product identifier | product-id-type is an account setting, default EAN |
Channable and M2E require valid EANs and a manufacturer part number; Conrad’s own FAQ lists “product ID” and MPN and does not name EAN: default UNVERIFIED |
| Required offer attributes | Read live from your instance: offer fields with AF01, product attributes with PM11 | Conrad’s required fields are behind the seller login: UNVERIFIED, not assumed. Integrators mention lead time to ship (empty = same-day shipping), shipping class (SM1-SM3, bulk, pallet, extra, free …; some only in Germany), warehouse id 1-5, reverse charge, unit of measure; the add-on treats them as ordinary offer fields |
| Category tree | Read live with H11 from your instance | Not public |
| Order confirmation by API | Yes | Conrad seller FAQ |
| Tracking | Tracking id and tracking URL; one id per parcel for multi-parcel shipments | Conrad seller FAQ; the add-on sends one tracking number per order |
| Refunds | Credit notes by the “Refund” button, whole or partial, irreversible; prepaid orders refundable from “Shipping in progress” | Conrad seller FAQ. The add-on refunds shipped lines (the Mirakl rule); earlier refunds are done in the back office |
| Returns module (RT11 / RT21), STO01, PRI01 | Used for returns, stock, price | UNVERIFIED that they are enabled for Conrad; if the marketplace refuses them, stock and price are not pushed |
| Title and images | Title up to 120 characters, up to 9 images in the operator file | Integrator guide (20 to 120 characters, images at least 400 px): not Conrad documents, UNVERIFIED |
| Fees | Monthly subscription plus a category-based commission; payouts three times a month | Conrad seller FAQ, M2E guide; amounts not public. Not used by the add-on |
| Prohibited goods | 18+ rated media, violent media, military toys, items governed by section 10 of the German Battery Act | Conrad seller FAQ; the add-on does not filter |
Trademarks
Section titled “Trademarks”Conrad is a trademark of its owner. Mirakl is a trademark of Mirakl. They are named only to say what the add-on connects to. The Conrad logo appears only in the product’s store gallery images, as an identification of the marketplace the add-on connects to, unaltered and only as a “Works with” mark; no published Conrad brand guideline was found, so conservative rules were applied (see research/brand-assets/conrad/SOURCE.md); the add-on itself ships no third-party logo. This add-on is not affiliated with, endorsed by or certified by Conrad or Mirakl.