Offers API
Manage reusable retention offers via API.
List Offers
GET /api/v1/public/offers
Authorization: Bearer rq_live_xxx
# Response
{
"offers": [
{
"id": "uuid",
"name": "20% Off for 3 Months",
"offer_type": "discount_percentage",
"offer_value": "20%",
"offer_duration": "3 months",
"heading": "Wait! Here's a special deal",
"cta_accept": "Claim 20% Off",
"cta_decline": "No thanks"
}
]
}Create Offer
POST /api/v1/public/offers
Authorization: Bearer rq_live_xxx
Content-Type: application/json
{
"name": "Pause 1 Month",
"offer_type": "pause_subscription",
"offer_value": "1 month free",
"offer_duration": "1 month",
"heading": "Take a break instead",
"body": "We'll pause your account — no charge.",
"cta_accept": "Pause My Account",
"cta_decline": "Continue cancelling"
}
# Response (201)
{ "id": "uuid", "name": "Pause 1 Month" }Offer Types
| Type | Description |
|---|---|
discount_percentage | Percentage off (e.g. 20%) |
discount_fixed | Fixed amount off (e.g. $10) |
pause_subscription | Pause billing for a period |
trial_extension | Extend trial period |
custom | Custom offer type |
Update Offer
PUT /api/v1/public/offers/:id
Authorization: Bearer rq_live_xxx
Content-Type: application/json
{ "offer_value": "25%", "heading": "Even better deal!" }
# Response
{ "updated": true, "id": "uuid" }Delete (Archive) Offer
DELETE /api/v1/public/offers/:id
Authorization: Bearer rq_live_xxx
# Response
{ "archived": true, "id": "uuid" }