Skip to content

STEP 5 — MONETIZATION SETUP

21. GET /onboarding/monetization/options

Get all monetization model options. Requires authentication.

Request

http
GET /onboarding/monetization/options
Authorization: Bearer <token>

Response 200 OK

json
{
  "status": "success",
  "data": {
    "monetization_models": [
      {
        "id": "free",
        "label": "Free",
        "description": "Build audience first",
        "icon": "free-icon",
        "is_recommended": false,
        "ppv_enabled": false,
        "subscription_enabled": false,
        "tipping_enabled": true
      },
      {
        "id": "pay_per_video",
        "label": "Pay Per Video",
        "description": "Charge per view",
        "ppv_enabled": true,
        "subscription_enabled": false,
        "tipping_enabled": true
      },
      {
        "id": "subscription",
        "label": "Subscription",
        "description": "Monthly access",
        "ppv_enabled": false,
        "subscription_enabled": true,
        "tipping_enabled": true
      },
      {
        "id": "hybrid",
        "label": "Hybrid",
        "description": "Best of both",
        "badge": "BEST",
        "is_recommended": true,
        "ppv_enabled": true,
        "subscription_enabled": true,
        "tipping_enabled": true
      }
    ],
    "ppv_price_range": { "min": 0.99, "max": 49.99, "default": 4.99 },
    "subscription_price_range": { "min": 1.99, "max": 99.99, "default": 9.99 }
  }
}

22. POST /onboarding/monetization/setup

Save the creator's monetization configuration. Requires authentication.

Request Body

json
{
  "model": "hybrid",
  "ppv": {
    "enabled": true,
    "default_price": 4.99,
    "currency": "USD"
  },
  "subscription": {
    "enabled": true,
    "tier_name": "VIP Access",
    "price": 9.99,
    "currency": "USD",
    "interval": "month"
  },
  "tipping": {
    "enabled": true
  },
  "content_based_pricing": {
    "enabled": false,
    "rules": []
  }
}

Request Body Parameters (key fields)

FieldTypeRequiredDescription
modelstringYesfree, pay_per_video, subscription, hybrid
ppv.enabledbooleanYesEnable PPV pricing
ppv.default_pricefloatNoDefault PPV price
ppv.currencystringNoCurrency code e.g. USD
subscription.enabledbooleanYesEnable subscription
subscription.tier_namestringNoSubscription tier display name
subscription.pricefloatNoMonthly subscription price
subscription.intervalstringNomonth or year
tipping.enabledbooleanYesEnable tipping from fans
content_based_pricing.enabledbooleanNoEnable per-content pricing rules

Response 200 OK

json
{
  "status": "success",
  "message": "Monetization configured successfully",
  "data": {
    "model": "hybrid",
    "ppv": { "enabled": true, "default_price": 4.99, "currency": "USD" },
    "subscription": { "enabled": true, "tier_name": "VIP Access", "price": 9.99, "currency": "USD", "interval": "month" },
    "tipping": { "enabled": true },
    "content_based_pricing": { "enabled": false },
    "onboarding": {
      "current_step": 6,
      "total_steps": 6,
      "percent_complete": 80
    }
  }
}

23. GET /onboarding/monetization/estimate

Get estimated monthly earnings based on audience size and monetization model. Requires authentication.

Query Parameters

ParameterTypeRequiredDefaultDescription
modelstringYesfree, pay_per_video, subscription, hybrid
ppv_pricefloatNo4.99PPV price per video
subscription_pricefloatNo9.99Monthly subscription price

Request

http
GET /onboarding/monetization/estimate?model=hybrid&ppv_price=4.99&subscription_price=9.99
Authorization: Bearer <token>

Response 200 OK

json
{
  "status": "success",
  "data": {
    "model": "hybrid",
    "audience": {
      "youtube_subscribers": 245000,
      "youtube_subscribers_formatted": "245K",
      "conversion_rate_percent": 2.5
    },
    "estimate": {
      "monthly_low": 2400,
      "monthly_high": 8500,
      "monthly_low_formatted": "$2,400",
      "monthly_high_formatted": "$8,500",
      "range_formatted": "$2,400 - $8,500",
      "currency": "USD"
    },
    "breakdown": {
      "ppv_estimate": { "monthly_low": 800, "monthly_high": 3000 },
      "subscription_estimate": { "monthly_low": 1600, "monthly_high": 5500 },
      "tipping_estimate": { "monthly_low": 0, "monthly_high": 0 }
    },
    "based_on": "245K YouTube subscribers"
  }
}