CommetCommet
GitHubDiscordStatus
Batch create customers POSTGrant customer credit POSTCreate customer POSTGrant temporary plan access POSTGet customer GETList customer credits GETList customers GETList plan grants GETRevoke remaining customer credit POSTRevoke temporary plan access POSTUpdate customer PATCHUpdate temporary access expiration PATCH
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

List plan grants

List the independent audit timeline for paid-plan access granted without checkout or payment credentials.

GET
/customers/{id}/plan-grants

List the independent audit timeline for paid-plan access granted without checkout or payment credentials.

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/customers/string/plan-grants"
{  "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 customers GET

List customers with cursor-based pagination.

Revoke remaining customer credit POST

Revoke the unallocated remainder of a customer credit grant. Applied invoice history is unchanged.