cURL
curl --request GET \
--url https://commet.co/api/v1/customers/{id}/plan-grants \
--header 'x-api-key: <api-key>'import { Commet } from "@commet/node";
const commet = new Commet({ apiKey: "ck_xxx" });
const response = await commet.customers.listPlanGrants({ id: "cus_xxx" });from commet import Commet
commet = Commet("ck_xxx")
customers_list_plan_grants_result = commet.customers.list_plan_grants("cus_xxx")client, err := commet.New("ck_xxx")
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
customersListPlanGrantsResult, err := client.Customers.ListPlanGrants(ctx, "cus_xxx")
if err != nil {
log.Fatal(err)
}import co.commet.Commet;
var commet = Commet.builder().apiKey("ck_xxx").build();
var customersListPlanGrantsResult = commet.customers().listPlanGrants("cus_xxx");use Commet\Commet;
$commet = new Commet('ck_xxx');
$customersListPlanGrantsResult = $commet->customers->listPlanGrants(id: 'cus_xxx');{
"object": "list",
"data": [
{
"id": "grant_1a2b3c4d",
"customerId": "cus_1a2b3c4d",
"subscriptionId": "sub_1a2b3c4d",
"basePlanId": "plan_1a2b3c4d",
"planId": "plan_5e6f7a8b",
"planReleaseId": "release_5e6f7a8b",
"status": "active",
"duration": "until_date",
"durationCycles": null,
"startsAt": "2026-09-07T12:00:00.000Z",
"expiresAt": "2026-10-07T12:00:00.000Z",
"reason": "Evaluate Business features",
"source": "api",
"revokedAt": null,
"createdAt": "2026-09-07T12:00:00.000Z",
"updatedAt": "2026-09-07T12:00:00.000Z",
"events": [
{
"id": "event_1a2b3c4d",
"type": "created",
"reason": "Evaluate Business features",
"source": "api",
"previousExpiresAt": null,
"expiresAt": "2026-10-07T12:00:00.000Z",
"duration": "until_date",
"durationCycles": null,
"requestedExpiresAt": "2026-10-07T12:00:00.000Z",
"createdAt": "2026-09-07T12:00:00.000Z"
}
],
"object": "plan_grant",
"livemode": false
}
],
"hasMore": false
}{
"error": {
"type": "validation_error",
"code": "validation_error",
"message": "The request contains an invalid parameter.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md"
}
}{
"error": {
"type": "authentication_error",
"code": "unauthorized",
"message": "A valid API key is required.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md"
}
}{
"error": {
"type": "authentication_error",
"code": "forbidden",
"message": "You do not have permission to perform this operation.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md"
}
}{
"error": {
"type": "not_found_error",
"code": "not_found",
"message": "The requested resource was not found.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/not_found.md"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Retry after the interval specified in the Retry-After header.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md"
}
}{
"error": {
"type": "internal_error",
"code": "internal_error",
"message": "An unexpected error occurred while processing the request.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md"
}
}Customers
List plan grants
List the independent audit timeline for paid-plan access granted without checkout or payment credentials.
GET
/
customers
/
{id}
/
plan-grants
cURL
curl --request GET \
--url https://commet.co/api/v1/customers/{id}/plan-grants \
--header 'x-api-key: <api-key>'import { Commet } from "@commet/node";
const commet = new Commet({ apiKey: "ck_xxx" });
const response = await commet.customers.listPlanGrants({ id: "cus_xxx" });from commet import Commet
commet = Commet("ck_xxx")
customers_list_plan_grants_result = commet.customers.list_plan_grants("cus_xxx")client, err := commet.New("ck_xxx")
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
customersListPlanGrantsResult, err := client.Customers.ListPlanGrants(ctx, "cus_xxx")
if err != nil {
log.Fatal(err)
}import co.commet.Commet;
var commet = Commet.builder().apiKey("ck_xxx").build();
var customersListPlanGrantsResult = commet.customers().listPlanGrants("cus_xxx");use Commet\Commet;
$commet = new Commet('ck_xxx');
$customersListPlanGrantsResult = $commet->customers->listPlanGrants(id: 'cus_xxx');{
"object": "list",
"data": [
{
"id": "grant_1a2b3c4d",
"customerId": "cus_1a2b3c4d",
"subscriptionId": "sub_1a2b3c4d",
"basePlanId": "plan_1a2b3c4d",
"planId": "plan_5e6f7a8b",
"planReleaseId": "release_5e6f7a8b",
"status": "active",
"duration": "until_date",
"durationCycles": null,
"startsAt": "2026-09-07T12:00:00.000Z",
"expiresAt": "2026-10-07T12:00:00.000Z",
"reason": "Evaluate Business features",
"source": "api",
"revokedAt": null,
"createdAt": "2026-09-07T12:00:00.000Z",
"updatedAt": "2026-09-07T12:00:00.000Z",
"events": [
{
"id": "event_1a2b3c4d",
"type": "created",
"reason": "Evaluate Business features",
"source": "api",
"previousExpiresAt": null,
"expiresAt": "2026-10-07T12:00:00.000Z",
"duration": "until_date",
"durationCycles": null,
"requestedExpiresAt": "2026-10-07T12:00:00.000Z",
"createdAt": "2026-09-07T12:00:00.000Z"
}
],
"object": "plan_grant",
"livemode": false
}
],
"hasMore": false
}{
"error": {
"type": "validation_error",
"code": "validation_error",
"message": "The request contains an invalid parameter.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md"
}
}{
"error": {
"type": "authentication_error",
"code": "unauthorized",
"message": "A valid API key is required.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md"
}
}{
"error": {
"type": "authentication_error",
"code": "forbidden",
"message": "You do not have permission to perform this operation.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md"
}
}{
"error": {
"type": "not_found_error",
"code": "not_found",
"message": "The requested resource was not found.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/not_found.md"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Retry after the interval specified in the Retry-After header.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md"
}
}{
"error": {
"type": "internal_error",
"code": "internal_error",
"message": "An unexpected error occurred while processing the request.",
"doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md"
}
}List the independent audit timeline for paid-plan access granted without checkout or payment credentials.
Authorizations
Headers
API version used by this reference. Send this header to select this contract explicitly.
Path Parameters
Was this page helpful?