Coupons
Codes guests can enter for additional discounts
The coupon object
Attributes
iduuidUnique identifier
created_atread-onlytimestamp with time zoneCreation timestamp
updated_atread-onlytimestamp with time zoneLast modification timestamp
deleted_attimestamp with time zone | nullTimestamp at which the coupon was deleted
codetextCode guests enter to use the coupon
definitionPriceExpressionDefinition of the coupon
descriptiontextDescription of the coupon
ftsread-onlytsvectorFull text search index
quotainteger | nullMaximum number of times the coupon can be used
scopeCouponScopeScope of the coupon
stackablebooleanWhether the coupon can be used together with other coupons in one booking
Related resources
Embed related resources in the response with the select parameter, for example select=*,organizations(*). Resources related through more than one column need the column as a hint, like table!column(*).
coupon_products(*)arrayThe coupon products referencing this coupon through coupon_products.coupon_id.
coupon_services(*)arrayThe coupon services referencing this coupon through coupon_services.coupon_id.
coupon_uses(*)arrayThe coupon uses referencing this coupon through coupon_uses.coupon_id.
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.301Z",
"updated_at": "2026-10-30T22:27:57.301Z",
"deleted_at": "2026-10-30T22:27:57.301Z",
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"quota": 0,
"scope": "global",
"stackable": true
}curl -X GET "https://api.bookingmood.com/v1/coupons?limit=10&select=*,organizations(*),coupon_products(*)" \
-H "Authorization: Bearer YOUR_API_KEY"List coupons
Filters
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Code guests enter to use the coupon
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times the coupon can be used
scopeFilter<CouponScope>Scope of the coupon
stackableFilter<boolean>Whether the coupon can be used together with other coupons in one booking
Responses
200A list of coupons with the selected columns
206Partial Content
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
code, message, details and hint. See the introduction for more on errors.GET /couponscurl -X GET "https://api.bookingmood.com/v1/coupons?select=*&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.301Z",
"updated_at": "2026-10-30T22:27:57.301Z",
"deleted_at": "2026-10-30T22:27:57.301Z",
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"quota": 0,
"scope": "global",
"stackable": true
}
]Create coupons
Body
Partial<Coupon> | Array<Partial<Coupon>>Read-only attributes are set by the database and can't be written.
Responses
201The newly created coupons with the selected columns
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.POST /couponscurl -X POST "https://api.bookingmood.com/v1/coupons" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"organization_id": "00000000-0000-0000-0000-000000000000",
"scope": "global",
"stackable": true
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.301Z",
"updated_at": "2026-10-30T22:27:57.301Z",
"deleted_at": "2026-10-30T22:27:57.301Z",
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"quota": 0,
"scope": "global",
"stackable": true
}
]Delete coupons
Filters
Without filters, this request deletes all coupons you have access to. Always filter on at least one column, e.g. id=eq.{id}.
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Code guests enter to use the coupon
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times the coupon can be used
scopeFilter<CouponScope>Scope of the coupon
stackableFilter<boolean>Whether the coupon can be used together with other coupons in one booking
Responses
200The deleted coupons with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
code, message, details and hint. See the introduction for more on errors.DELETE /couponscurl -X DELETE "https://api.bookingmood.com/v1/coupons?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.301Z",
"updated_at": "2026-10-30T22:27:57.301Z",
"deleted_at": "2026-10-30T22:27:57.301Z",
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"quota": 0,
"scope": "global",
"stackable": true
}
]Update coupons
Filters
Without filters, this request updates all coupons you have access to. Always filter on at least one column, e.g. id=eq.{id}.
idFilter<uuid>Unique identifier
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
deleted_atFilter<timestamp with time zone | null>Timestamp at which the coupon was deleted
codeFilter<text>Code guests enter to use the coupon
definitionFilter<PriceExpression>Definition of the coupon
descriptionFilter<text>Description of the coupon
ftsFilter<tsvector>Full text search index
quotaFilter<integer | null>Maximum number of times the coupon can be used
scopeFilter<CouponScope>Scope of the coupon
stackableFilter<boolean>Whether the coupon can be used together with other coupons in one booking
Body
Partial<Coupon>Read-only attributes are set by the database and can't be written.
Responses
200The updated coupons with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.PATCH /couponscurl -X PATCH "https://api.bookingmood.com/v1/coupons?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"code": "SUMMER24"
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"organization_id": "00000000-0000-0000-0000-000000000000",
"created_at": "2026-10-30T22:27:57.301Z",
"updated_at": "2026-10-30T22:27:57.301Z",
"deleted_at": "2026-10-30T22:27:57.301Z",
"code": "SUMMER24",
"definition": {},
"description": "A short description.",
"quota": 0,
"scope": "global",
"stackable": true
}
]