What this API is
The Nuvlyx API is a set of REST endpoints that let the owner of a Nuvlyx store connect their external system (WhatsApp bot, ERP, internal panel, inventory scripts) to the store. It's server-to-server, authenticated with a Personal Access Token (PAT) you generate from your admin panel.
All endpoints live under:
https://api.nuvlyx.com/api/v1/external/ Quickstart
1. Create a token in your panel
Log in to your store admin and go to Settings → API Tokens → Create token. Pick the scopes (permissions) your integration needs and save the displayed token — it is shown only once.
2. Make your first request
curl https://api.nuvlyx.com/api/v1/external/products \
-H "Authorization: Bearer nvl_live_YOUR_TOKEN" 3. Read the response
[
{
"id": "0f1c…",
"name": "1-month digital subscription",
"slug": "1-month-digital-subscription",
"kind": "DIGITAL",
"status": "ACTIVE",
"variations": [
{ "id": "abc…", "sku": "SUB-1M", "price": "10000.00", "stockQuantity": 42 }
]
}
] Conventions
- Format: all responses and bodies are JSON (UTF-8).
- Dates: ISO 8601 in UTC. Example:
2026-05-18T14:30:00.000Z. - Amounts: decimal strings with 2 decimals in the store's base currency. Example:
"10000.00". - IDs: UUID v4.
- Phones: strict E.164. Example:
+573001234567. - Errors: standard HTTP (401, 403, 404, 422, 500). Body:
{ "statusCode": ..., "message": "...", "error": "..." }.
Available endpoints
| Method | Path | Scope |
|---|---|---|
GET | /external/products | products:read |
GET | /external/products/:id | products:read |
GET | /external/products/:id/price | products:read |
GET | /external/orders | orders:read |
GET | /external/orders/:id | orders:read |
POST | /external/orders | orders:write |
GET | /external/customers/:id | customers:read |
GET | /external/customers/by-phone/:phone | customers:read |
GET | /external/customers/:id/wallet | wallet:read |
GET | /external/customers/by-phone/:phone/wallet | wallet:read |
POST | /external/customers/:id/wallet/recharge | wallet:write |
POST | /external/customers/by-phone/:phone/wallet/recharge | wallet:write |
POST | /external/products | products:write |
GET | /external/inventory/stock | inventory:read |
POST | /external/inventory/licenses | inventory:write |
GET | /external/webhooks | webhooks:manage |
POST | /external/webhooks | webhooks:manage |
DELETE | /external/webhooks/:id | webhooks:manage |
GET | /external/webhooks/:id/deliveries | webhooks:manage |
Also read: errors, rate limits, idempotency, pagination and webhooks.
WhatsApp · powered by Mosend
Nuvlyx doesn't send WhatsApp messages directly — it delegates delivery to the OWNER's Mosend organization. Each store connects its own Mosend account under Settings → WhatsApp (Mosend) in the admin. Mosend bills the OWNER directly; we just route the event to the right approved template.
To send WhatsApp programmatically from your integration, use the OWNER's
Mosend API key against https://api.mosend.dev — Nuvlyx's public
endpoints do not expose a send proxy.
Mosend docs: developer.mosend.dev.
Need help?
Email hola@nuvlyx.com or join our Telegram community where we share integration patterns from other resellers and answer questions.