Docs K  Search
Docs/Reference/Billing & usage
Billing

Billing & Usage

Understand Hebbrix pricing tiers, monitor your API usage, and manage your subscription programmatically.

Pricing Tiers

TierPriceIncludes
Free$0/monthFor side projects and experimentation. 1K credits/month, GPT-5-nano model, Hybrid search, Community support.
Starter$19/monthFor indie developers. 25K credits/month, GPT-5-mini model, Hybrid search, BYOK support, Knowledge graph.
ProMost Popular$99/monthFor teams and production apps. 200K credits/month, GPT-5 model, Outcome Memory, 99.9% availability objective, Advanced analytics.
Scale$399/monthFor teams with heavy workloads. 1M credits/month, Managed model / BYOK, Knowledge graph, Team collaboration, Custom integrations.
EnterpriseCustomFor large organizations. Pay as you go, Any model (BYOK), Dedicated infrastructure, Security questionnaire and procurement review, Custom terms by signed agreement.

Usage Limits

ResourceFreeStarterProScaleEnterprise
Price$0/mo$19/mo$99/mo$399/moBy signed agreement
Credits1K/mo25K/mo200K/mo1M/moPay as you go
Rate limit60/min300/min1,200/min2,000/min3,000/min
Default ModelGPT-5-nanoGPT-5-miniGPT-5Managed model / BYOKAny configured model
Knowledge Graph-
BYOK-
Outcome Memory / RL access--
SLA--Plan termsBest-effort objectiveCustom
SupportCommunityStandardPriorityPriority24/7 Dedicated

Endpoints

Code Examples

Check Usage

Python
import os
import requests

BASE = "https://api.hebbrix.com/v1"
H = {"Authorization": f"Bearer {os.environ['HEBBRIX_API_KEY']}"}

# GET /v1/usage: dashboard-style overview with PDF-contract api_calls
# object exposed at the top level.
r = requests.get(f"{BASE}/usage", headers=H)
usage = r.json()

ac = usage["api_calls"]
print(f"API Calls: {ac['used']}/{ac['limit']}")  # limit = -1 for unlimited tiers
print(f"Remaining: {ac['remaining']}")
print(f"Percentage: {ac['percentage']:.1f}%")

# Summary block has success_rate, total_bytes_*, avg_latency_ms, etc.
print(f"Avg latency: {usage['summary']['avg_latency_ms']} ms")

Monitor Usage Programmatically

Python (Usage Monitoring)
# Warn when nearing the quota. Handle "unlimited" (limit=-1) safely.
r = requests.get(f"{BASE}/usage", headers=H)
ac = r.json()["api_calls"]

if ac["limit"] > 0:
    percent_used = (ac["used"] / ac["limit"]) * 100
    if percent_used > 80:
        print(f"Warning: {percent_used:.1f}% of API calls used this period")
    if percent_used > 95:
        print("Critical: upgrade or wait for the quota reset")
else:
    print("Unlimited tier, no quota pressure")

Upgrade Subscription

Python (Upgrade)
# POST /v1/billing/upgrade: body accepts `tier` (preferred) or the
# legacy `plan` key. Both resolve to the same internal field.
r = requests.post(
    f"{BASE}/billing/upgrade",
    headers=H,
    json={"tier": "pro", "billing_interval": "monthly"},
)
new_sub = r.json()

# GET /v1/billing/subscription: current plan + renewal date
r = requests.get(f"{BASE}/billing/subscription", headers=H)
sub = r.json()
print(f"Status: {sub['status']}")
print(f"Renews: {sub['current_period_end']}")

Rate Limit Headers

Every API response includes headers to help you track your rate limits:

HeaderDescription
X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRequests remaining in window
X-RateLimit-ResetUnix timestamp when window resets
X-Monthly-UsageCurrent month API call count
Response Headers
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1705312800
X-Monthly-Usage: 45230
Content-Type: application/json

Overage & Limits

When you hit limits. If you exceed your monthly API calls, requests will return 429 Too Many Requests. Upgrade your plan or wait until the next billing period.
  • Billing Cycle. Usage resets monthly on your subscription anniversary date. Unused quota doesn't roll over.
  • Instant Upgrades. Upgrades take effect immediately with pro-rated billing. New limits apply right away.

Billing response fields

Metered operations return a set of billing fields so you can show cost and remaining quota to your users. The table below documents the meaning and stability of each one.

FieldTypeMeaning
quota_remainingintCredits left in the current period. A non-negative number is the literal remaining count. -1 means UNLIMITED (enterprise / unmetered plans), so always special-case it before doing arithmetic.
estimated_cost_usdfloatEstimated USD cost of the operation. 0.0 means there is no metered charge for that call, e.g. a NOOP (a duplicate or no-op memory write) or an operation included in the plan. It is an estimate, not a final invoice line.
billed_tokensintTokens actually billed for the call, after any multiplier is applied.
actual_tokensintRaw tokens consumed before any multiplier.
token_multiplierfloatPlan/operation multiplier applied to actual_tokens to produce billed_tokens.
Credit model. Credits are weighted usage units; managed-model operations also report token and estimated-cost fields. NOOPs (no-op or duplicate writes) are unmetered. Overage is user-controlled and feature-flagged: you are never charged beyond your plan unless you opt in.

Stability. The following fields are a stable public contract: quota_remaining, estimated_cost_usd, billed_tokens, actual_tokens, and token_multiplier. You can rely on their names and semantics across releases.

cURL Example

GET/v1/usage
curl -X GET "https://api.hebbrix.com/v1/usage" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
Ask the docs
reading · this page

Hi! I'm the Hebbrix docs assistant. Ask me anything about this page: setup, code examples, endpoints, pricing, or integrations.