Subscriptions usage
GET
https://app.sulus.ai/api/subscriptions/usage
Get assistant and minute usage for the current billing period
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Errors
| Status | Meaning | Body |
|---|---|---|
401 |
Missing or invalid bearer token | |
404 |
No active subscription (or reseller missing for reseller_admin path) | {"success":false,"billing":{"source":"self","workspace_id":null,"workspace_name":null,"can_manage_billing":true},"message":"No active subscription found"} |
Notes
- Regular users get OverageBillingService::getUsageStatisticsForActingUser plus billing meta.
- reseller_admin callers receive ResellerUsageService statistics without the billing sibling when successful.
- assistants.limit may be the formatted string from the package append.
curl --request GET \
--url https://app.sulus.ai/api/subscriptions/usage \
--header 'Authorization: Bearer <YOUR_API_KEY>'
import requests
url = "https://app.sulus.ai/api/subscriptions/usage"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
response = requests.get(url, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://app.sulus.ai/api/subscriptions/usage"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Response
200
{
"success": true,
"data": {
"has_active_subscription": true,
"assistants": {
"used": 2,
"limit": "5",
"remaining": 3,
"is_unlimited": false
},
"minutes": {
"used": 412.5,
"limit": 1000,
"remaining": 587.5,
"overage_minutes": 0,
"overage_cost": 0,
"extra_per_minute_charge": "0.1200",
"is_unlimited": false,
"billing_period_start": "2026-07-01T00:00:00.000000Z",
"billing_period_end": "2026-08-01T00:00:00.000000Z",
"is_calendar_month_fallback": false,
"interval_type": "monthly",
"subscription_day": null
},
"subscription": {
"status": "active",
"current_period_end": "2026-08-01T00:00:00.000000Z",
"days_remaining": 12
},
"package": {
"name": "Growth",
"price": "$99.00",
"description": "For growing teams",
"extra_per_minute_charge": "$0.1200"
}
},
"billing": {
"source": "self",
"workspace_id": null,
"workspace_name": null,
"can_manage_billing": true
}
}
Response — GET
/subscriptions/usage
200
{
"success": true,
"data": {
"has_active_subscription": true,
"assistants": {
"used": 2,
"limit": "5",
"remaining": 3,
"is_unlimited": false
},
"minutes": {
"used": 412.5,
"limit": 1000,
"remaining": 587.5,
"overage_minutes": 0,
"overage_cost": 0,
"extra_per_minute_charge": "0.1200",
"is_unlimited": false,
"billing_period_start": "2026-07-01T00:00:00.000000Z",
"billing_period_end": "2026-08-01T00:00:00.000000Z",
"is_calendar_month_fallback": false,
"interval_type": "monthly",
"subscription_day": null
},
"subscription": {
"status": "active",
"current_period_end": "2026-08-01T00:00:00.000000Z",
"days_remaining": 12
},
"package": {
"name": "Growth",
"price": "$99.00",
"description": "For growing teams",
"extra_per_minute_charge": "$0.1200"
}
},
"billing": {
"source": "self",
"workspace_id": null,
"workspace_name": null,
"can_manage_billing": true
}
}