v8

latestOpenAPI 3.0.3raw.githubusercontent.com2026-05-2526602.8 MB
Promotions

Create Promotion

Create a new promotion for the account.

post/api/{account}/promotions

Request body

type'new' | 'expired' | 'new_and_expired' required

Whether this promotion should apply to new subscribers, expired subscribers, or both. IMPORTANT: when set to new_and_expired, the OF will create two separate promotions.

discountinteger required

The discount percentage for the promotion's first month. Set to 100 to make this promotion a Free Trial.

offerLimitinteger required

Limit how many people can claim this offer. Set to 0 for no limits.

expirationDaysinteger required

In how many days this offer will expire. Set to 0 to make this promotion infinite.

freeTrialDaysinteger

Required only when discount is 100. Sets the duration (in days) of the free trial. Accepted 1-30

messagestring

Optionally, provide a message for this promotion.

Example request

{
  "type": "new",
  "discount": 10,
  "offerLimit": 10,
  "expirationDays": 7,
  "freeTrialDays": 10,
  "message": "Enjoy this special offer!"
}

Response

Example response

{
  "data": [
    {
      "id": 123,
      "message": "Example promotion message",
      "rawMessage": "Example promotion message",
      "hasRelatedPromo": false,
      "price": 0,
      "type": "all",
      "canClaim": true,
      "claimsCount": 0,
      "subscribeCounts": 10,
      "subscribeDays": 7,
      "createdAt": "2025-01-01T00:00:00+00:00",
      "finishedAt": "2025-01-02T00:00:00+00:00",
      "isFinished": false
    }
  ],
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 999999816,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": null,
      "remaining_minute": 998,
      "remaining_day": null,
      "notice": "We have decided to remove our daily rate limits. Please remove any references to these in your integrations."
    }
  }
}