CommetCommet
GitHubDiscordStatus
Create offer POSTDelete offer DELETEGet offer GETList offers GETUpdate offer PATCH
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Update offer

Replace reusable offer terms. Existing applications keep their immutable accepted terms.

PATCH
/offers/{id}

Replace reusable offer terms. Existing applications keep their immutable accepted terms.

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Path Parameters

id*string

Header Parameters

Idempotency-Key?string

Unique key used to safely retry this write for 24 hours without applying it twice.

Length1 <= length <= 200

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

application/json

application/json

application/json

curl -X PATCH "https://example.com/offers/string" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "phases": [      {        "type": "free_trial",        "durationDays": 1      }    ]  }'
{  "id": "offer_1a2b3c4d",  "name": "Launch discount",  "phases": [    {      "type": "percentage",      "durationCycles": 3,      "durationInterval": "monthly",      "percentage": 20    }  ],  "metadata": {},  "startsAt": null,  "endsAt": null,  "active": true,  "createdAt": "2026-09-07T12:00:00.000Z",  "updatedAt": "2026-09-07T12:00:00.000Z",  "object": "offer",  "livemode": 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": "conflict_error",    "code": "idempotency_in_progress",    "message": "A request with this idempotency key is still being processed.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_in_progress.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"  }}
{  "error": {    "type": "internal_error",    "code": "idempotency_unavailable",    "message": "Idempotency storage is temporarily unavailable. Retry with the same idempotency key.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_unavailable.md"  }}

List offers GET

List reusable offer terms. Offers are independent from plans, prices, eligibility, and distribution channels.

Cancel a payment link POST

Cancel a pending payment link so it can no longer be paid. Only a link that has not been paid or started processing can be canceled; canceling an already canceled link is a no-op. Charges cannot be canceled.

name*string
Length1 <= length <= 200
phases*array<|||>
Items1 <= items <= 10
metadata?
Default{}
startsAt?|
Defaultnull
endsAt?|
Defaultnull
active?boolean
Defaulttrue