API Reference
The reference below covers every endpoint in the Products API. Code examples are generated automatically; the live playground is disabled to prevent accidental writes to production from the docs site.
/api/v1/productsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/products" \ -H "Content-Type: application/json" \ -d '{ "products": [ { "name": "Pro Plan — Monthly", "type": "SUBSCRIPTION", "sku": "PLAN-PRO-MO", "price": 49, "currency": "USD", "unit": "seat", "billingPeriod": "MONTHLY", "category": "SaaS Plans" } ] }'{ "created": 1, "updated": 1, "errors": 0, "results": [ { "index": 0, "status": "created", "id": "018e2a4b-0000-7000-8000-aabbccddeeff" }, { "index": 1, "status": "updated", "id": "018e2a4b-1111-7000-8000-aabbccddeeff" } ]}{ "created": 1, "updated": 0, "errors": 1, "results": [ { "index": 0, "status": "created", "id": "018e2a4b-0000-7000-8000-aabbccddeeff" }, { "index": 1, "status": "error", "error": "name: String must contain at least 1 character(s)" } ]}{ "error": "products must not be empty."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:products."}{ "error": "Rate limit exceeded."}/api/v1/productsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Query Parameters
Filter to the single product with this exact SKU.
Filter to products whose category name matches exactly (case-sensitive).
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/products?sku=PLAN-PRO-MO&category=SaaS+Plans"{ "products": [ { "id": "018e2a4b-0000-7000-8000-aabbccddeeff", "name": "Pro Plan — Monthly", "type": "SUBSCRIPTION", "sku": "PLAN-PRO-MO", "externalId": null, "category": "SaaS Plans", "price": 49, "cost": null, "currency": "USD", "unit": "seat", "billingPeriod": "MONTHLY", "termMonths": null, "stockQty": null, "reorderLevel": null, "description": null, "features": null, "active": true, "createdAt": "2024-01-15T10:30:00.000Z", "updatedAt": "2024-06-27T08:15:00.000Z" } ]}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:products."}{ "error": "Rate limit exceeded."}/api/v1/products/{id}/communicationAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
ID of the offering (product/service/subscription/contract).
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/products/cmq1abc2def3ghi4jkl5/communication"{ "offeringId": "cmq1abc2def3ghi4jkl5", "campaigns": [ { "id": "cmq2xyz9abc1def2ghi3", "name": "Promo", "subject": "Introducing our new plan", "status": "SENT", "scheduledAt": "2026-06-01T12:00:00.000Z", "recipientCount": 120, "sentCount": 118, "openCount": 42 } ], "timeline": [ { "id": "cmq3lmn4opq5rst6uvw7", "kind": "email", "subject": "Following up on the demo", "snippet": "Hi Pat, just wanted to follow up on...", "direction": "OUTBOUND", "contact": { "id": "cmq4pat0000abc1def2g", "name": "Pat" }, "occurredAt": "2026-06-02T09:15:00.000Z" } ]}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:offerings."}{ "error": "Offering not found."}{ "error": "Rate limit exceeded."}