Skip to content

SECTION 3 — CREATOR SUBSCRIPTION

12. GET /creators/:id/subscription

Get subscription plan details for a creator.

Request

http
GET /creators/creator_001/subscription
Authorization: Bearer <token>

Response 200 OK

json
{
  "status": "success",
  "data": {
    "creator_id": "creator_001",
    "creator_name": "Chris Spencer",
    "plan": {
      "price": 9.99,
      "currency": "USD",
      "interval": "month",
      "perks": ["All Premium content", "Early access", "Exclusive Q&As"]
    },
    "user_subscription": {
      "is_subscribed": false,
      "subscribed_at": null,
      "renewal_date": null,
      "status": null
    }
  }
}

13. POST /creators/:id/subscription

Subscribe to a creator's channel. Requires authentication.

Request

http
POST /creators/creator_001/subscription
Authorization: Bearer <token>
Content-Type: application/json

Request Body

json
{
  "payment_method_id": "pm_abc123",
  "currency": "USD"
}

Request Body Parameters

FieldTypeRequiredDescription
payment_method_idstringYesPayment method on file
currencystringYesCurrency code e.g. USD

Response 201 Created

json
{
  "status": "success",
  "message": "Successfully subscribed to Chris Spencer",
  "data": {
    "subscription_id": "sub_001abc",
    "creator_id": "creator_001",
    "creator_name": "Chris Spencer",
    "plan": {
      "price": 9.99,
      "currency": "USD",
      "interval": "month"
    },
    "status": "active",
    "subscribed_at": "2024-11-01T12:00:00Z",
    "renewal_date": "2024-12-01T12:00:00Z",
    "perks_unlocked": ["All Premium content", "Early access", "Exclusive Q&As"]
  }
}

Errors

json
{
  "status": "error",
  "code": 409,
  "message": "You already have an active subscription to this creator"
}
json
{
  "status": "error",
  "code": 402,
  "message": "Payment failed. Please check your payment method."
}

14. DELETE /creators/:id/subscription

Cancel an active subscription. Requires authentication.

Request

http
DELETE /creators/creator_001/subscription
Authorization: Bearer <token>

Response 200 OK

json
{
  "status": "success",
  "message": "Subscription cancelled. Access remains until renewal date.",
  "data": {
    "creator_id": "creator_001",
    "status": "cancelled",
    "access_until": "2024-12-01T12:00:00Z"
  }
}