Billing · getBilling
Get the plan and usage
GET /v1/billing
Owners only. The workspace's plan (free or pro), its Stripe subscription (status, price tier, period end, whether it cancels at period end), this calendar month's usage (asks, events, metric reports; UTC) and what it has (agents, members, webhook endpoints), the Free plan's limits, and whether Free limits are enforced on this server (enforced).
- Who may call it
- humans: Owners and up
- Server
- https://api.logu.dev
Parameters#
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Logu-Workspace | header | string | optional | Humans only: the workspace to act in (default: your personal workspace). Agents always act in their API key's workspace. · e.g. wsp_01K7D7Y8Z0B2D4F6H8K0M2P4R6 |
Example#
curl -s "https://api.logu.dev/v1/billing" \
-H "Authorization: Bearer $LOGU_SESSION_TOKEN"
Responses#
200
The plan and usage.
{
"plan": "pro",
"comped": false,
"enforced": true,
"subscription": {
"status": "active",
"tier": "founder_9",
"priceUsd": 9,
"currentPeriodEnd": "2026-11-02T12:00:00.000Z",
"cancelAtPeriodEnd": false
},
"usage": {
"period": "2026-10",
"asks": 342,
"events": 1880,
"metrics": 12400,
"agents": 4,
"members": 3,
"webhookEndpoints": 1
},
"freeLimits": {
"members": 1,
"asksPerMonth": 100,
"eventsPerMonth": 1000,
"metricsPerMonth": 10000,
"agents": 2,
"webhookEndpoints": 0,
"historyDays": 30
},
"meters": [
{
"meter": "asks",
"used": 342,
"quota": 5000,
"ceiling": 20000,
"state": "ok"
},
{
"meter": "events",
"used": 41200,
"quota": 50000,
"ceiling": 200000,
"state": "warning"
},
{
"meter": "metrics",
"used": 12400,
"quota": 250000,
"ceiling": 1000000,
"state": "ok"
},
{
"meter": "storage",
"used": 1288490188,
"quota": 21474836480,
"ceiling": 26843545600,
"state": "ok"
},
{
"meter": "whatsapp",
"used": 100,
"quota": 100,
"ceiling": 500,
"state": "full"
},
{
"meter": "emails",
"used": 212,
"quota": null,
"ceiling": 5000,
"state": "ok"
},
{
"meter": "projects",
"used": 7,
"quota": 100,
"ceiling": 500,
"state": "ok"
},
{
"meter": "metricNames",
"used": 31,
"quota": 500,
"ceiling": 2000,
"state": "ok"
}
],
"deliveryCapped": {
"whatsapp": true,
"email": false
},
"checkoutAvailable": true
}
Response fields
| Field | Type | Required | Notes |
|---|---|---|---|
plan | "free" | "pro" | required | |
comped | boolean | required | |
enforced | boolean | required | |
subscription | object | null | required | |
subscription.status | string | required | |
subscription.tier | "founder_9" | "founder_19" | "pro_29" | required | |
subscription.priceUsd | number | required | |
subscription.currentPeriodEnd | string | null | required | date-time |
subscription.cancelAtPeriodEnd | boolean | required | |
usage | object | required | |
usage.period | string | required | |
usage.asks | integer | required | |
usage.events | integer | required | |
usage.metrics | integer | required | |
usage.agents | integer | required | |
usage.members | integer | required | |
usage.webhookEndpoints | integer | required | |
freeLimits | object | required | |
freeLimits.members | integer | required | |
freeLimits.asksPerMonth | integer | required | |
freeLimits.eventsPerMonth | integer | required | |
freeLimits.metricsPerMonth | integer | required | |
freeLimits.agents | integer | required | |
freeLimits.webhookEndpoints | integer | required | |
freeLimits.historyDays | integer | required | |
meters | object[] | required | |
meters[].meter | "asks" | "events" | "metrics" | "storage" | "whatsapp" | "emails" | "images" | "testAsks" | "testEvents" | "testMetrics" | "projects" | "metricNames" | required | |
meters[].used | integer | required | |
meters[].quota | integer | null | required | |
meters[].ceiling | integer | required | |
meters[].state | "ok" | "warning" | "full" | required | |
deliveryCapped | object | required | |
deliveryCapped.whatsapp | boolean | required | |
deliveryCapped.email | boolean | required | |
checkoutAvailable | boolean | required |
Errors#
Every error is {"error":{"code","message","hint","docUrl","requestId"}}: branch on code. See Errors.
| Status | Code | Meaning |
|---|---|---|
| 401 | unauthorized | No credentials, or the API key or session is invalid or revoked. |
| 403 | forbidden | The caller is authenticated but may not do this (wrong role, or an API key on a human-only endpoint). |
| 404 | not_found | No such route, or the resource doesn't exist in your workspace. |
| 500 | internal_error | Something went wrong on Logu's side. |