Mercemur gives every merchant a REST API over their own store. You create a secret key in the dashboard, grant it only the scopes your integration needs, and call the API from any platform that can send an HTTP request.
Base URL for every request: https://api.mercemur.com/api/v1

Overview

Quickstart

Create a key and make your first call in under five minutes.

API reference

Every endpoint, with a playground you can fire against your own store.

Rate limits

Understand throttling and how to back off correctly.

Authentication and security

API keys

Secret keys, how to create them, and how to rotate one safely.

Scopes

Read, write and delete are separate grants. 136 scopes across 66 families.

Error handling

One envelope for every refusal, at every status.

Making requests

Idempotency

Every write takes an Idempotency-Key. Retry safely.

Pagination

Cursor paging, forward only, signed and bound to the route that issued it.

Money

Every amount is an integer in the currency’s minor unit.

The four things that are not guessable from one endpoint

If you read nothing else, read these. They are the conventions that a single example request will not teach you, and each one has bitten an integration.
1999 in a usd field is 19.99 USD. There are no fractional amounts anywhere in this API, and no field accepts a decimal. Currencies with no minor unit, such as JPY, take the whole number directly. See Money.
write_products does not let a key read your catalogue, and deleting is a third grant again: write_products:delete. A key that keeps records up to date cannot destroy them unless you tick Delete as well. See Scopes.
Not optional, and not only for retries. A request without the header is refused with idempotency_key_required. Replaying the same key returns the stored response rather than executing twice. See Idempotency.
There is no page or offset parameter. You send ?after= with the page.next_cursor from the previous response for that same endpoint. A cursor from a different collection is refused. See Pagination.

Branch on code, never on message

Every refusal on this API, at every status, has the same body:
The code is the contract and is safe to switch on. The message is English prose for a human reading a log, and its wording is not part of this contract. See Error envelope.