Subscriptions API
Manage subscriber subscriptions.
Endpoints
GET
/api/v1/subscriptionsList all subscriptions
Query Parameters:
| Param | Type | Description |
|---|---|---|
plan_id | string | Filter by plan |
status | string | Filter by status |
subscriber_email | string | Filter by email |
Response:
json
[
{
"id": "sub_abc123",
"plan_id": "plan_xyz",
"subscriber_id": "usr_456",
"status": "active",
"current_period_start": 1704067200,
"current_period_end": 1706745600,
"created_at": 1704067200
}
]GET
/api/v1/subscriptions/{id}Get subscription details
POST
/api/v1/subscriptions/{id}/pausePause a subscription
Stops future billing. Access continues until current period ends.
POST
/api/v1/subscriptions/{id}/resumeResume a paused subscription
POST
/api/v1/subscriptions/{id}/cancelCancel a subscription immediately
Cancellation is immediate and notifies the subscriber. Use pause if you want them to keep access until period end.
POST
/api/v1/subscriptions/{id}/extendAdd free days to a subscription
Query Parameters:
| Param | Type | Description |
|---|---|---|
days | integer | Number of days to add |
GET
/api/v1/subscriptions/{id}/manage-linkGet subscriber's self-service portal URL
Response:
json
{
"url": "https://your-lnbits.com/subscriptions_manager/manage?token=abc123"
}Subscription Statuses
| Status | Description |
|---|---|
pending | Waiting for first payment |
active | Paid and current |
paused | Temporarily suspended |
past_due | Payment failed, in grace period |
payment_failed | Grace period ended |
cancelled | Manually cancelled |
expired | Period ended |
Example: Check if Active
python
import requests
def is_subscription_active(email):
response = requests.get(
"https://your-lnbits.com/subscriptions_manager/api/v1/subscriptions",
headers={"X-Api-Key": "YOUR_INVOICE_KEY"},
params={"subscriber_email": email}
)
subscriptions = response.json()
return any(s["status"] == "active" for s in subscriptions)
# Usage
if is_subscription_active("user@example.com"):
print("User has active subscription")