List Products
List Products — vendor REST API endpoint.
/vendor/productsVendor bearer token requiredList Products
List products belonging to your vendor with cursor-based pagination.
Returns a paginated slice of your vendor catalog. Use first/after (or last/before) cursors from pageInfo to navigate. estimatedTotalCount is approximate.
When to use this
- Syncing your product catalog to an external system.
- Auditing published vs draft products.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| search | string | No | Search by name or SKU. |
| status | string | No | Filter by product status: PUBLISHED, PENDING_APPROVAL, DRAFT, HIDDEN, or ARCHIVED (not ACTIVE). Leave empty to list all. |
| hasPendingRevision | boolean | No | When true, only products with staged changes awaiting admin approval on a live product. |
| needsModeration | boolean | No | When true, returns products with status `PENDING_APPROVAL` (awaiting first publish) or a non-empty `pendingRevision` (live product with staged edits). |
| categoryId | string (UUID) | No | Filter by category. Use [List Categories](/docs/v1/vendor/categories/list) to look up valid UUIDs. |
| first | integer | No | Number of products to return (default 24, max 100). |
| after | string | No | Opaque cursor — pass pageInfo.endCursor from the previous page for the next page. Leave empty for the first page. |
| before | string | No | Opaque cursor for backward pagination (use with last). Leave empty unless paginating backward. |
| last | integer | No | Number of products when paginating backward (max 100). Leave empty for forward pagination. |
Request example
curl -X GET 'https://api.next.gcommerce.glass/api/v1/vendor/products'Response examples
{
"products": [{
"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": "PUBLISHED",
"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
}],
"pageInfo": {
"startCursor": "MjAyNi0wMS0xNVQxMjowMDowMC4wMDBafDU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMA==",
"endCursor": "MjAyNS0xMi0wMVQxMDowMDowMC4wMDBafDU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAxMA==",
"hasNextPage": true,
"hasPreviousPage": false
},
"estimatedTotalCount": 12345
}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.