Appearance
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)
| Field | Type | Required | Description |
|---|---|---|---|
| model | string | Yes | free, pay_per_video, subscription, hybrid |
| ppv.enabled | boolean | Yes | Enable PPV pricing |
| ppv.default_price | float | No | Default PPV price |
| ppv.currency | string | No | Currency code e.g. USD |
| subscription.enabled | boolean | Yes | Enable subscription |
| subscription.tier_name | string | No | Subscription tier display name |
| subscription.price | float | No | Monthly subscription price |
| subscription.interval | string | No | month or year |
| tipping.enabled | boolean | Yes | Enable tipping from fans |
| content_based_pricing.enabled | boolean | No | Enable 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| model | string | Yes | — | free, pay_per_video, subscription, hybrid |
| ppv_price | float | No | 4.99 | PPV price per video |
| subscription_price | float | No | 9.99 | Monthly 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"
}
}