Update a coverage product
Present an API key (sb_live_… / sb_test_…), an OAuth2 access token, or a static token as a Bearer credential. The operator is implied by the credential; it is never in the path. Only a SHA-256 hash of an API key is stored server-side.
In: header
Path Parameters
UUIDv7 identifier of the resource.
uuidHeader Parameters
A unique key that makes this mutation safe to retry. Repeats replay the stored response; reuse with a different body returns 409 idempotency_conflict.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
All fields optional; only supplied fields are changed. An explicit null clears regulatory_basis_ref, rate_per_thousand_minor, min_cover_minor, max_cover_minor, rounding_step or insurer_name; the price is checked as it will be stored, merged onto the product. Once customers have a product, its type is fixed, and an insurance product keeps its regulatory_basis_ref and insurer_name while their cover is live (409 cover_in_force). Its prices may change: cover already on a customer's plan keeps its own amount each period.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/coverage-products/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "object": "coverage_product", "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811", "name": "string", "type": "contractual_liability_waiver", "declared_value_minor": 0, "premium_minor": 0, "currency": "str", "billing_cycle": "monthly", "vat_treatment": "standard_20", "ipt_bps": 0, "regulatory_basis_ref": "string", "pricing_mode": "fixed", "rate_per_thousand_minor": 1, "min_cover_minor": 0, "max_cover_minor": 0, "rounding_step": "per_thousand_or_part", "insurer_name": "string", "is_active": true, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }}{ "error": { "code": "unauthorized", "message": "Missing or invalid credential." }}{ "error": { "code": "insufficient_scope", "message": "The credential lacks a scope required by this endpoint." }}{ "error": { "code": "not_found", "message": "Resource not found." }}{ "error": { "code": "cover_in_force", "message": "Customers have this plan. Make a new one instead." }}{ "error": { "code": "validation_error", "message": "One or more fields are invalid.", "details": [ { "field": "email", "issue": "must be a valid email address" } ] }}{ "error": { "code": "rate_limited", "message": "Rate limit exceeded. Retry after 7s." }}{ "error": { "code": "validation_error", "message": "string", "details": [ { "field": "string", "issue": "string" } ] }}Update a coupon PATCH
Changes the fields given; an absent field is left as it is. A quote that is still live bills its promotion as it was sent, so while one carries this coupon, what the coupon takes off (`discount_kind`, `discount_value`, `currency`, `duration`, `duration_months`) cannot change and a change to it is refused with a 409 ("Quotes sent with this promotion hold its terms until 12th Oct ’26. Make a new promotion instead."). Sending the same values again, and every other field, is accepted. A code another coupon already has is also a 409.
Update a price rule PATCH
Next Page