For developers
Build on Nouq.Reach every store.
A clear REST API with permissions the merchant chooses, signed webhooks the moment things happen, and an app store where any merchant installs your app in one click.
Free for developersOAuth 2.0Keep 80% of subscriptions
$ curl https://api.nouq.net/api/v1/orders?status=confirmed \ -H "Authorization: Bearer nouq_at_…" [ { "number": 2041, "status": "confirmed", "payment_method": "cod", "total": 37450, "currency": "SAR" } ]
POST /webhooks · Nouq-Signature ✓
- order.created#2041 · SAR 374.50200 · 84ms
- order.updated#2041 · confirmed200 · 61ms
- product.updatedOud Royal 50ml · stock 12200 · 73ms
- order.refunded#2004 · SAR 162.00200 · 92ms
Three ways to build
Pick what you're building
Same API in all three. The difference is who installs it and who holds the key.
An app in the app store
For every Nouq store. Merchants install it through OAuth after seeing its permissions, and it's listed in the app store after our review.
- One-click install from the merchant dashboard
- Monthly subscriptions billed by Nouq with a VAT invoice
- Webhook log across every store in one portal
Connect your own system
An ERP, a warehouse or a script for your own store. Create the token in the dashboard; it works for your store only.
- A token from “My apps & API” in a minute
- Only the permissions you pick
- Rotate it in one click if it leaks
A storefront of your own
Your own frontend or mobile app on top of any Nouq store: products, cart, checkout and orders.
- No key, no cookies, open CORS
- TypeScript and Go SDKs
- Payments, VAT and shipping by Nouq
Quick start
From sign-up to your first order
Four steps to an app any merchant can install. Keys and events work the same in development.
- 1
Register your app
In the developer portal: name, redirect URIs and scopes. You get a client_id and a client_secret (shown once).
client_id Xk7pQ2… (24 characters)client_secret nouq_cs_…
- 2
Send the merchant to consent
They see your app and every permission it asks for, then come back to your redirect URI with a code. Use state against request forgery.
https://app.nouq.net/oauth/authorize ?client_id=YOUR_CLIENT_ID &redirect_uri=https://yourapp.com/callback &scope=orders:read products:write &state=RANDOM_STATE
- 3
Exchange the code for a token
From your server, within ten minutes. A token belongs to one store, doesn't expire, and stops working when the merchant removes your app.
curl https://api.nouq.net/oauth/v1/token \ -d grant_type=authorization_code \ -d code=$CODE -d redirect_uri=$REDIRECT_URI \ -d client_id=$CLIENT_ID -d client_secret=$CLIENT_SECRET { "access_token": "nouq_at_…", "scope": "orders:read products:write", "store_id": "…" }
- 4
Read, and listen
Call the API with the token and subscribe to events. Verify every delivery's signature before you trust it.
curl https://api.nouq.net/api/v1/orders?status=confirmed \ -H "Authorization: Bearer nouq_at_…" // Nouq-Signature: t=…,v1=…const { t, v1 } = Object.fromEntries( req.headers["nouq-signature"].split(",").map((p) => p.split("=")));const want = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");const ok = Math.abs(Date.now() / 1000 - Number(t)) < 300 && timingSafeEqual(Buffer.from(want), Buffer.from(v1));
What your app can reach
Scoped access, real-time events
Ask only for what you need. A call outside your scopes returns 403 and names the missing scope.
Scopes
products:readProducts, variants, stock and categoriesproducts:writeCreate, edit and delete products and categoriesorders:readOrders, parcels and returnsorders:writeChange order status, add shipments and notescustomers:readCustomers and their order historydiscounts:readCoupons and automatic discountsdiscounts:writeCreate, edit and delete discounts
Webhook topics
order.createdAn order is placedorder.updatedAn order's status changesorder.refundedA return is refundedproduct.createdA product is createdproduct.updatedA product is savedproduct.deletedA product is deletedapp.uninstalledThe merchant removes your app
What you can count on
An API you can run a business on
40
request burst
Per installation, refilled at 4 a second. Every response shows what's left; 429 comes with Retry-After.
24h
of retries
Eight attempts for every failed delivery, with a log of each response and one-click replay.
HMAC
on every delivery
SHA-256 over the raw body, with a timestamp that stops old deliveries being replayed.
80%
of subscriptions
Set a monthly price and a free trial. Nouq bills, issues the VAT invoice and pays you out.
We use it first
Nouq's own apps run on the same API
Our apps in the app store use only the public API and OAuth, with no internal access. When one of them needs something the API doesn't do, we add it to the API, so you get it too.
- Print & Packby Nouqorders:write · app.uninstalled
- Google Sheets syncby Nouqproducts:write · orders:read · 6 topics
- Qoyod accounting syncby Nouqorders:read · order.updated · order.refunded
Three real apps, live today
Reference
Every endpoint, every field
Two references generated from the same OpenAPI spec the server runs on, so the docs never fall behind the API.
API for apps
/api/v1 and OAuth: products, orders, customers, discounts and webhooks.
https://api.nouq.net/api/v1Storefront API
/storefront/v1: products, cart, checkout and orders for a headless store.
https://api.nouq.net/storefront/v1Register your first app today
Free to register. Try it on your own store before you publish.