Create Coupon
POST /api/v1/admin/coupons
POST
/api/v1/admin/coupons
Create a coupon.
The code is normalized to UPPERCASE by the request schema, so the UNIQUE constraint sees the same form every redemption path looks up.
Args: body: Validated coupon definition. user: The authenticated platform operator (injected). session: Database session.
Returns: The created coupon.
Raises: HTTPException 409: A coupon with this code already exists.
Authorizations
Request Body required
POST /api/v1/admin/coupons request body.
object
active
boolean
bonus_credits
Extra credits granted on top of the plan allowance.
integer
code
required
Coupon code. Normalized to UPPERCASE before storage.
string
discount_type
‘percent’ (0..100) or ‘fixed_amount’ (cents off).
string
discount_value
required
0..100 when discount_type is ‘percent’, else cents.
integer
duration
Stripe-compatible discount duration.
string
Responses
201
Successful Response
The canonical coupon JSON shape returned by every coupon endpoint.
object
active
required
boolean
bonus_credits
required
integer
code
required
string
created_at
required
string format: date-time
discount_type
required
string
discount_value
required
integer
duration
required
string
id
required
string format: uuid
times_redeemed
required
integer
422
Validation Error
object
detail
Array<object>
object
ctx
object
input
loc
required
Array
msg
required
string
type
required
string