Developers

The deepest developer API in digital goods.

Thirty resource groups, 302 documented operations, 59 webhook events, and an idempotency key on every mutation. Build against it, script against it, or point an AI client at it.

POST https://api.shoppex.io/dev/v1/orders

Authorization: Bearer shx_live_…

Idempotency-Key: 8f14e45fceea

{ "product_id": "prod_2001", "quantity": 1 }

201 → { "data": { "uniqid": "INV-V9K2X", "status": "PENDING" } }

What it reaches

If the dashboard can do it, so can your code.

Thirty resource groups under one base URL. Not a read-only reporting API bolted onto a storefront: orders get created, disputes get answered, keys get uploaded, themes get published.

Selling

Catalogue

Customers

Growth

Protection

The shop itself

GET/dev/v1/orders200 OK
$ 

Every one of them is in the OpenAPI document, every list pages by cursor, and every mutating call takes an idempotency key. All of it is on the free plan: the API, the webhooks, OAuth, the SDKs, the CLI and both MCP servers cost nothing on top of the 2%.

Access

A key that can do exactly one thing.

Twenty-eight resources, each with read and write, and presets for the jobs people actually automate. Nothing has to run as full access because narrower was too much work to set up.

Presets, then exact scopes
Start from theme development or ERP sync, then narrow it by hand if you want.
OAuth when someone else builds it
Authorization code and refresh tokens, so an app your customer installs never holds your key.
Scoped to one theme
A theme key reaches that theme and nothing else in the shop.
Creating an API key: presets for theme development, webhooks, ERP sync, read only, full access and custom, each showing the scopes it grants

Built to be retried

A retry cannot create a second order.

Every mutating endpoint takes an idempotency key, and a test in the build fails if a new one ships without one. Retry after a timeout and you get the same order back, never a second one.

302

Documented operations

Across orders, products, customers, disputes and more.

OAuth 2.0

Or a plain key

Authorization code and refresh tokens, or a scoped key.

Cursors

Not page numbers

Lists page cleanly while rows are being written.

Webhooks

Fifty-nine events you can replay by hand.

Orders, disputes, products, subscriptions, resellers and replacements all emit. Shoppex signs every delivery, retries a failed one five times, and logs each attempt where you can read it.

Signed with a timestamp
HMAC-SHA256 over the raw body, with the timestamp in the header, so you can reject a replay.
Five attempts, backing off
Two minutes, then four, then eight. Your endpoint can be down for a while.
Retry by hand
Send a failed delivery again from the dashboard, without writing a script.
Creating a webhook: an endpoint URL and a grid of selectable events covering orders, disputes and products

For the client on your desk

Point your assistant at your shop.

Two MCP servers, one install command. Your AI client then works against the same Developer API your own code does, with a key you scope yourself.

$ npx @shoppexio/mcp-shoppex install --client claude-code

installed · 58 tools available

51 commerce tools

Products, orders, customers, coupons, invoices, disputes, analytics.

7 theme tools

Read and write theme documents and settings, then publish.

Five clients

Claude Desktop, Claude Code, Cursor, Windsurf and Codex.

The rest of the toolbox

Everything else you expect to already exist.

None of it is a roadmap item. The packages are published and the commands run today.

SDKs on the registries
TypeScript is the one we build Shoppex with ourselves. Python and PHP ship alongside it.
A CLI for storefront work
Log in, list themes, pull the source, run it locally, push it back, deploy the build. Two lanes, one for block documents and one for code storefronts.
Headless checkout, the one Business line here
One script tag on any page, and the cart lives in the browser. Useful when the store is somewhere Shoppex does not host. It is the only thing on this page that sits on the 99 EUR plan rather than the free one.
Rate limits you can see coming
Every response carries its remaining budget and reset, and a 429 tells you how long to wait rather than leaving you to guess.

Your first call is one key away.

A key takes a minute to make, and you can scope it to the one resource you need.