Products
All endpoints require a valid API key in the Authorization header.
List products
GET /v1/productsScope: products:read
Query parameters
| Parameter | Default | Description |
|---|---|---|
limit | 25 | Number of results (1–100) |
cursor | — | Pagination cursor |
Response
{ "data": [ { "id": "prod_abc123", "shopify_product_id": "8012345678", "name": "Premium Course", "description": "Full access to all course modules", "entitlement_type": "permanent", "access_duration_days": null, "usage_limit": null, "status": "active", "created_at": "2026-01-01T00:00:00.000Z" } ], "meta": { "request_id": "req_abc123", "timestamp": "2026-03-01T12:00:00.000Z" }, "pagination": { "total": 5, "limit": 25, "has_more": false, "next_cursor": null }}Get product
GET /v1/products/{product_id}Scope: products:read
Response
{ "data": { "id": "prod_abc123", "shopify_product_id": "8012345678", "shopify_variant_ids": ["44012345678"], "name": "Premium Course", "description": "Full access to all course modules", "entitlement_type": "permanent", "access_duration_days": null, "usage_limit": null, "metadata": {}, "fulfillment_config": { "delivery_method": "FILE", "file_ids": ["file_xyz"], "access_url": null, "access_instructions": null }, "status": "active", "created_at": "2026-01-01T00:00:00.000Z", "updated_at": "2026-02-15T00:00:00.000Z" }, "meta": { "request_id": "req_abc123", "timestamp": "2026-03-01T12:00:00.000Z" }}Entitlement types
| Type | Description |
|---|---|
permanent | Never expires |
time_limited | Expires after access_duration_days from grant date |
usage_limited | Expires after usage_limit uses |
subscription_linked | Active while the Shopify subscription is active |
Delivery methods
Products can deliver access in three ways via fulfillment_config.delivery_method:
| Method | Description |
|---|---|
FILE | Digital file downloads (see Files API) |
URL | Redirect to an external URL (access_url) |
INSTRUCTIONS | Display custom instructions (access_instructions) |