Create Product
Create Product — vendor REST API endpoint.
/vendor/productsVendor bearer token requiredCreate Product
Create a new product in your vendor catalog.
Creates a product with at least name and SKU (min 3 characters for name). Requires OWNER, ADMIN, or EDITOR role. Variants and inventory can be included; upload images separately via multipart endpoints.
When to use this
- Adding new SKUs to your catalog via API integration.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Product name (3–255 characters). |
| sku | string | Yes | Unique SKU within your vendor. |
| slug | string | No | URL slug. Omit to derive from name (lowercase, hyphenated); numeric suffix added if taken. |
| shortDescription | string | No | Short product description. |
| description | string | No | Full product description. |
| brand | string | No | Brand name (max 255 characters). |
| countryOfOrigin | string | No | Country of origin (max 255 characters). |
| manufacturer | string | No | Manufacturer name (max 255 characters). |
| leadTime | integer | No | Lead time in days (min 0). When omitted, inherits your vendor profile leadTime (default 4). |
| unspc | string | No | UNSPSC code — 8 or 10 digits. |
| commodityCode | string | No | Commodity / HS-style code (max 28 characters). |
| eccn | string | No | Export Control Classification Number (max 255 characters). |
| freeShipping | boolean | No | Free shipping flag. |
| abilityOne | boolean | No | AbilityOne flag. |
| madeInUsa | boolean | No | Made in USA flag. |
| greenProduct | boolean | No | Green product flag. |
| keyFeatures | string[] | No | Key features (max 6 items, 255 characters each). |
| accountCode | string | No | Account code (max 255 characters). |
| programCode | string | No | Department Code (max 255 characters). |
| resourceCode | string | No | Resource code (max 255 characters). |
| categoryIds | string[] (UUID) | No | Category UUIDs to assign. Use [List Categories](/docs/v1/vendor/categories/list) to look up valid UUIDs. |
| collectionIds | string[] (UUID) | No | Collection UUIDs to assign. |
| tagIds | string[] (UUID) | No | Tag UUIDs to assign. |
| facetValueIds | string[] (UUID) | No | Facet value UUIDs to assign. |
| variants[].sku | string | Yes | Variant SKU (unique per product). |
| variants[].name | string | Yes | Variant name. |
| variants[].vendorPrice | number | Yes | Vendor/cost price. The customer-facing retail price is computed from this and never set directly. |
| variants[].listPrice | number | No | List price (MSRP). Shown as a strikethrough compare-at price when higher than the retail price; never charged at checkout. |
| variants[].id | string (UUID) | No | Existing variant ID — for updates only, not create. |
| variants[].upc | string | No | UPC (max 255 characters). |
| variants[].unitOfMeasure | string | No | Unit of measure (max 50 characters). |
| variants[].partNumber | string | No | Manufacturer part number (max 255 characters). |
| variants[].weight | number | No | Weight (min 0). |
| variants[].initialInventory | integer | No | Initial stock on create (min 0). |
| variants[].attributes | object | No | Arbitrary key/value variant attributes. |
| variants[].isActive | boolean | No | Active flag. Defaults to true when omitted. |
| documents[].title | string | Yes | Document title (max 255 characters). |
| documents[].type | string | Yes | Document type (max 50 characters). |
| documents[].url | string | No | External document URL. |
| documents[].base64Document | string | No | Base64-encoded document data. |
| documents[].sortOrder | integer | No | Sort order (min 0). |
Request example
curl -X POST 'https://api.next.gcommerce.glass/api/v1/vendor/products' \
-H 'Content-Type: application/json' \
-d '{
"name": "Widget Pro",
"sku": "WIDGET-001",
"variants": [
{
"sku": "WIDGET-001",
"name": "Default",
"vendorPrice": 19.99
}
],
"documents": [
{
"title": "Spec sheet",
"type": "spec"
}
]
}'Response examples
{
"id": "550e8400-e29b-41d4-a716-446655440020",
"name": "Widget Pro",
"slug": "widget-pro",
"sku": "WIDGET-001",
"shortDescription": "Premium widget",
"warranty": "1 year limited",
"description": "High-quality widget for industrial use.",
"pageTitle": "Widget Pro | Jane's Store",
"pageDescription": "Shop the Widget Pro — durable, lightweight, made in USA.",
"brand": "Acme",
"countryOfOrigin": "US",
"manufacturer": "Acme Corp",
"leadTime": 3,
"unspc": "53120000",
"commodityCode": "12345678",
"eccn": "EAR99",
"freeShipping": false,
"abilityOne": false,
"madeInUsa": true,
"greenProduct": false,
"keyFeatures": ["Durable", "Lightweight"],
"videos": null,
"accountCode": "ACC-001",
"programCode": "PROG-001",
"resourceCode": "RES-001",
"status": "PENDING_APPROVAL",
"pendingRevision": null,
"pendingRevisionSubmittedAt": null,
"bulkImportJobId": null,
"createdAt": "2026-01-15T12:00:00.000Z",
"updatedAt": "2026-03-01T08:30:00.000Z",
"variants": [
{
"id": "550e8400-e29b-41d4-a716-446655440021",
"productId": "550e8400-e29b-41d4-a716-446655440020",
"sku": "WIDGET-001",
"upc": "012345678905",
"unitOfMeasure": "EA",
"partNumber": "MPN-001",
"name": "Default",
"price": "29.99",
"listPrice": "39.99",
"vendorPrice": "19.99",
"weight": "1.50",
"initialInventory": 100,
"attributes": { "color": "red" },
"isActive": true,
"createdAt": "2026-01-15T12:00:00.000Z",
"updatedAt": "2026-03-01T08:30:00.000Z"
}
],
"images": [
{
"id": "550e8400-e29b-41d4-a716-446655440022",
"productId": "550e8400-e29b-41d4-a716-446655440020",
"variantId": null,
"url": "https://api.next.gcommerce.glass/assets/products/images/550e8400-e29b-41d4-a716-446655440022",
"alt": "Widget Pro front view",
"sortOrder": 0,
"isPrimary": true
}
],
"documents": [
{
"id": "550e8400-e29b-41d4-a716-446655440023",
"productId": "550e8400-e29b-41d4-a716-446655440020",
"title": "Spec sheet",
"type": "spec",
"url": "https://example.com/spec.pdf",
"document": "https://api.next.gcommerce.glass/assets/products/widget-pro/docs/spec.pdf",
"size": "245.50",
"sortOrder": 0,
"createdAt": "2026-01-15T12:00:00.000Z",
"updatedAt": "2026-01-15T12:00:00.000Z"
}
],
"categories": [
{
"id": "550e8400-e29b-41d4-a716-446655440070",
"name": "Industrial Supplies",
"slug": "industrial-supplies"
}
],
"collections": [],
"tags": [],
"facetValues": [],
"reviews": [],
"averageRating": 4.5,
"totalReviews": 12
}Status codes
OK
Request succeeded.
Unauthorized
Missing or invalid bearer token.
Forbidden
Insufficient permissions for this action.
Bad Request
Validation failed or invalid parameters.
Not Found
Resource not found.
Too Many Requests
Global rate limit exceeded (10,000 requests per 10 minutes per IP).
Internal Server Error
Unexpected server error.
Forbidden
No vendor membership, or insufficient vendor role (requires OWNER, ADMIN, or EDITOR for write operations).
Try it
Uses your saved session from login. Edit values and send a live request, or copy the cURL command.