Skip to content
API · Inventory

Inventory and bulk license upload

Inspect available stock and bulk-load licenses/codes.

Stock summary

GET /api/v1/external/inventory/stock · scope inventory:read

Returns available stock per variation. Optional filter by product.

Query parameters

ParamTypeDescription
productIdUUIDFilter only variations of that product. Optional.

Request

curl "https://api.nuvlyx.com/api/v1/external/inventory/stock?productId=0f1c…" \
  -H "Authorization: Bearer nvl_live_YOUR_TOKEN"

Bulk-upload licenses

POST /api/v1/external/inventory/licenses · scope inventory:write

Equivalent to the .txt upload in the admin: send an array of credentials (one entry per stock unit). Credentials are encrypted at rest with AES-256-GCM before being persisted.

Body

FieldTypeDescription
variationIdUUIDTarget variation. Required.
credentialsstring[]Credentials (1–2000). One per stock unit. Required.
expiresAtISO 8601Expiry timestamp applied to ALL licenses in the batch. Optional.

Request

curl -X POST https://api.nuvlyx.com/api/v1/external/inventory/licenses \
  -H "Authorization: Bearer nvl_live_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "variationId": "abc12345-…",
    "credentials": [
      "user1@email.com|password1",
      "user2@email.com|password2",
      "user3@email.com|password3"
    ],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

Rules and limits

  • Up to 2000 credentials per request. For larger volumes, batch into multiple POSTs.
  • Deduplication: if a credential already exists on the variation it is skipped and counted in skippedDuplicates.
  • Plan limit: if your plan caps imports, the server enforces it (400 response).
  • Encryption: credentials never appear in logs or read endpoints — only when delivered to the customer on a completed order.