GET /api/v1/products
Returns all products in the workspace, sorted by createdAt descending (newest first). Use optional query parameters to filter by SKU or category. Useful for verifying a sync or checking the current catalog state.
This endpoint lists offerings of every type (PRODUCT, SERVICE, SUBSCRIPTION, CONTRACT) — see Offerings & types.
Request
GET /api/v1/products HTTP/1.1
Host: agentlyleads.com
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxQuery parameters
| Parameter | Description |
|---|---|
sku | Return only the product with this exact SKU |
category | Return only products belonging to this category (matched by name) |
limit | Optional page size, 1–1000. When omitted, the full catalog is returned in one response |
cursor | The nextCursor value from the previous page (only meaningful together with limit) |
All parameters are optional and can be combined.
Filter by category:
GET /api/v1/products?category=Electronics HTTP/1.1
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLook up a specific product by SKU:
GET /api/v1/products?sku=RTR-4G HTTP/1.1
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxResponse — 200
{
"products": [
{
"id": "cmq1abc2def3ghi4jkl5",
"name": "4G Router",
"type": "PRODUCT",
"sku": "RTR-4G",
"price": 199,
"cost": 120,
"currency": "USD",
"unit": "each",
"billingPeriod": null,
"termMonths": null,
"stockQty": 50,
"reorderLevel": null,
"description": null,
"features": null,
"active": true,
"externalId": null,
"category": "Electronics",
"createdAt": "2025-06-01T12:00:00.000Z",
"updatedAt": "2025-06-27T09:00:00.000Z"
}
],
"nextCursor": null
}All Product object fields are returned. See the Product object reference for field descriptions.
price and cost are returned as JSON numbers (never strings).
Pagination
Pagination is opt-in on this endpoint: with no limit, the full catalog is returned and nextCursor is always null (the endpoint's original behaviour). When limit is set and more rows exist, nextCursor holds the ID of the last returned record — pass it back as cursor to fetch the next page.