Partner API
For a museum whose shop runs on a system other than Shopify or WooCommerce (those connect in one click from the partner desk). Your system receives each paid order as a signed webhook and answers on one endpoint with your key.
1. Get a key
Partner desk → Connect your shop → Your own system: create an API key and, optionally, name your webhook address. The key (mek_…) and the webhook signing secret (mws_…) are shown once.
2. Orders reach you
When a buyer has paid, Museum Edit posts the order to your webhook with the header X-Museum-Edit-Event: order.created and X-Museum-Edit-Signature: sha256=<hex HMAC-SHA256 of the raw body with your signing secret>. Answer with any 2xx status; answer {"accepted": true, "reference": "your order number"} to accept it at once. Without a webhook, read open orders with the orders action every few minutes.
{
"event": "order.created",
"order": {
"number": "MM-123456", "shipment_id": "…", "status": "placed",
"items": [{ "sku": "SCARF-01", "title": "Silk scarf", "quantity": 1, "unit_payout": 34.00, "museum_price": 40.00, "currency": "EUR", "product_url": "…" }],
"ship_to": { "name": "…", "line1": "…", "city": "…", "postcode": "…", "country": "PT", "phone": "…", "instructions": "…" },
"gift_message": "…", "packaging_promised": "…",
"payout": { "goods": 34.00, "delivery": 5.00, "currency": "EUR" },
"deadlines": { "accept_by": "…", "ship_by": "…" },
"reply_to_email": "mm123456-ab12cd@museumedit.com"
}
}3. Answer on one endpoint
POST https://museumedit.com/api/apps/6ab802130a01beba9a6d883d/functions/partnerApi with Authorization: Bearer mek_… and a JSON body:
{ "action": "orders" } open orders ("status": "all" for every order)
{ "action": "order", "number": "MM-123456" }
{ "action": "accept", "number": "MM-123456", "reference": "W-1042" }
{ "action": "ship", "number": "MM-123456", "carrier": "CTT", "tracking_number": "RR123456789PT", "tracking_url": "https://…" }
{ "action": "delivered", "number": "MM-123456" }
{ "action": "problem", "number": "MM-123456", "reason": "Out of stock", "note": "…", "cancel": true }
{ "action": "stock", "items": [{ "sku": "SCARF-01", "stock": 0 }] }
{ "action": "ping" }A shipped order is told to the buyer at once with your tracking link; cancel: true with an out-of-stock reason refunds the buyer immediately. Stock 0 takes an object off sale until you report stock again. At most 120 requests a minute. Errors answer with a status of 400 or more and {"error": "…"}.
4. Also always available
Every order carries its own e-mail address (reply_to_email). Your shop's own confirmation and shipping e-mails sent to it update the order too, and each order e-mail has signed links to accept and add tracking without signing in.
Last updated 4 November 2026. Terms of sale · Privacy · Returns · Legal notice · Rights holders · Partner terms · Contact