Skip to content

Products

All endpoints require a valid API key in the Authorization header.

List products

Terminal window
GET /v1/products

Scope: products:read

Query parameters

ParameterDefaultDescription
limit25Number of results (1–100)
cursorPagination 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

Terminal window
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

TypeDescription
permanentNever expires
time_limitedExpires after access_duration_days from grant date
usage_limitedExpires after usage_limit uses
subscription_linkedActive while the Shopify subscription is active

Delivery methods

Products can deliver access in three ways via fulfillment_config.delivery_method:

MethodDescription
FILEDigital file downloads (see Files API)
URLRedirect to an external URL (access_url)
INSTRUCTIONSDisplay custom instructions (access_instructions)