نُوق
Start your store freeTry a live store

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

api.nouq.net
$ 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.

Public app

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
Start with OAuth
Private integration

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
API reference
Headless

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
Storefront API

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. 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. 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. 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. 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));

Everything else is in the reference

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 categories
  • products:writeCreate, edit and delete products and categories
  • orders:readOrders, parcels and returns
  • orders:writeChange order status, add shipments and notes
  • customers:readCustomers and their order history
  • discounts:readCoupons and automatic discounts
  • discounts:writeCreate, edit and delete discounts

Webhook topics

  • order.createdAn order is placed
  • order.updatedAn order's status changes
  • order.refundedA return is refunded
  • product.createdA product is created
  • product.updatedA product is saved
  • product.deletedA product is deleted
  • app.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.

English

API for apps

/api/v1 and OAuth: products, orders, customers, discounts and webhooks.

https://api.nouq.net/api/v1
Open the referenceOpenAPI JSON
English

Storefront API

/storefront/v1: products, cart, checkout and orders for a headless store.

https://api.nouq.net/storefront/v1
Open the referenceOpenAPI JSON

Register your first app today

Free to register. Try it on your own store before you publish.

Nouq Developers: REST API, apps and headless stores