How it worksOne engine keeps running totals for everything your product tracks, and answers the moment something changes.
EventTotalAnswerDecision
AggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Acme
Globex
Initech
Usage & limitsKeep usage live for every account and act before a customer hits a wall.
How much of their plan has each account used this month?
→ Warn the owner at 80 %
Customer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
QuickstartTwo calls in your hot path: send events, ask questions.
POST /v1/events
POST …/profiles/usage_check:evaluate
→ { "reasons": ["near_limit"] }
DocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
SecurityA database per customer, scrambled identifiers, everything on record.
Acme
Globex
Initech
DeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Product
How it worksFrom events to live numbers to actionAggregationsCount anything, per anything, over any windowReal timeAnswers in your app, pushed to your systemsDecisionsYour rules first, AI for the restWorkspaceBuild, test and change without codeSecurityIsolated, private, on record
Use cases
Usage & limitsQuotas, plans, meteringCustomer insightEngagement, churn signalsTrust & safetyAbuse, fraud, account securitySaaSUsage and engagementBanking & fintechLimits, risk, KYCE-commerceOrders and returnsIoT & industryReadings and silenceGamingFair, safe playMobilityFleets and driversAll use cases
Developers
QuickstartYour first live numberDocsConcepts and guidesAPI referenceEvery endpointTechnical overviewArchitecture and limitsAuthenticationKeys, OAuth, workload identitySelf-hostingHelm and Docker Compose
Company
SecurityHow your data is kept apartDeploymentShared, dedicated, your cloudPlatformsLive numbers for your own customersContactTalk to a personChangelogWhat we shipped
Pricing
Sign inRequest access

Turn every event into a live number you can act on — for any industry, in any region.

Request access

Product

  • How it works
  • Events and answers
  • Decisions
  • Pricing
  • FAQ

Use cases

  • Usage & limits
  • Banking & fintech
  • Operations & IoT
  • Trust & safety
  • All use cases

Developers

  • Docs
  • API reference
  • Quickstart
  • Technical overview

Company

  • Security
  • Deployment
  • Platforms
  • Contact
  • Changelog
© 2026 AggrelisTermsPrivacyCookiesData centers worldwide
Use cases · By industry

Every key, workspace and customer, counted live in one place.

Rate limits per API key, quotas per plan, features used per workspace, response times per customer against the SLA. One stream of product events feeds them all, and your gateway, billing and customer success read the same numbers.

Request accessSee the questions
Live questions · illustrative
How many API calls did each key make this minute?Gateway
420/ 1,200 · this minute
Slow the key down
watching
Is this customer's response time above what the SLA promises?SLA
p95 ms, last hour
Open an incident
watching
How healthy is this account right now?Account health
account healthHealthy
HealthyWatchAt risk
Hand to customer success
watching
What you can ask

The questions this answers

Typical questions, each with the window it usually looks at. Thresholds are starting points you set yourself.

  • Fair use per key

    Is one integration flooding the API? Calls per key over the last minute and hour, so one script can't use up a whole organization's capacity.

    rolling 1 minute and 1 hour
  • Enforce the plan

    How much of its plan has the organization used this month, across every workspace and key it owns?

    calendar month, rolled up
  • Bill by usage

    How many units of each priced item did the organization use last month, exact, ready for the invoice line?

    last calendar month, per SKU
  • Qualify trials

    Which trial workspaces used three or more features and invited a teammate in the last 14 days?

    rolling 14 days
  • Keep the SLA

    What is this customer's 95th percentile response time this hour, against the number in their contract?

    rolling 1 hour, p95 and p99
  • Catch broken integrations

    What share of this customer's calls failed in the last hour? A failing integration shows up before the support ticket does.

    rolling 1 hour, errors / calls
Worked example

A customer's integration slows down

Each API call carries its duration, so Aggrelis keeps a latency distribution per key, rolled up to the organization. A trigger looks only at slow calls: when one arrives, it asks how Acme's whole hour looks against the response time in Acme's contract, and tells your on-call and account team before Acme opens a ticket.

  • Send every API call as an event, with its key, status and duration
  • Define the numbers per organization: calls, errors and the 95th percentile response time over the last hour
  • Trigger on slow calls only, so the question is asked when it matters
  • Act on the answer: open an incident, and give the account team the numbers before the customer asks
POST /v1/events
{
  "id": "call_01JC8B2M5R",
  "type": "api_call",
  "ts": "2026-11-02T14:03:11Z",
  "attrs": {
    "key_id": "key_42",
    "org_id": "acme",
    "endpoint": "/v1/reports",
    "status": 200,
    "duration_ms": 1840
  }
}
POST /v1/admin/profiles
{
  "name": "org_health",
  "spec": {
    "entity": "organization",
    "features": {
      "calls1h": {
        "state": "calls_by_key",
        "window": {
          "rolling": "1h"
        }
      },
      "errors1h": {
        "state": "errors_by_key",
        "window": {
          "rolling": "1h"
        }
      },
      "p95Ms1h": {
        "state": "latency_by_key",
        "window": {
          "rolling": "1h"
        },
        "quantile": 0.95
      }
    },
    "derived": [
      {
        "name": "errorRate1h",
        "expr": "calls1h > 0 ? double(errors1h) / double(calls1h) : 0.0"
      }
    ],
    "reasons": [
      {
        "name": "sla_breach",
        "when": "calls1h >= 20 && p95Ms1h != null && p95Ms1h > double(entity.slaP95Ms)"
      },
      {
        "name": "integration_failing",
        "when": "calls1h >= 20 && errorRate1h >= 0.25"
      }
    ],
    "triggers": [
      {
        "name": "slow_call",
        "on": "api_call",
        "when": "attrs.duration_ms > 1000",
        "subject": "attrs.org_id"
      }
    ]
  }
}
Webhook delivery, after a slow call
{
  "type": "trigger.result",
  "timestamp": "2026-11-02T14:03:11Z",
  "data": {
    "trigger": "slow_call",
    "profile": "org_health",
    "status": "ok",
    "entity": {
      "type": "organization",
      "id": "acme"
    },
    "values": {
      "calls1h": 5212,
      "errors1h": 31,
      "p95Ms1h": 1460,
      "errorRate1h": 0.006
    },
    "reasons": [
      "sla_breach"
    ],
    "event": {
      "id": "call_01JC8B2M5R",
      "type": "api_call",
      "ts": "2026-11-02T14:03:11Z"
    },
    "profileVersion": "org_health@v3"
  }
}
Illustrative. Field names are examples.
What it uses

The parts of Aggrelis behind it

Nothing built for one industry: the same building blocks, configured for this job.

  • Keys, users, workspaces

    Keep numbers per API key, user, workspace and organization. One call updates every one it names.

  • Key to organization

    Roll-ups up to three levels keep limits and health live for the key, the workspace and the organization from the same event.

  • Percentiles and exact sums

    Response-time percentiles per customer, and metered units kept exact for billing.

  • Answers inside the request

    The gateway asks while the call waits; billing and success tools read the same answers.

  • Triggers with a gate

    Ask only when it matters: on slow calls, failed calls, or when an account goes silent. Results arrive as signed webhooks.

  • Your customers' ids, kept private

    A database of its own for your workspace, ids hashed before they are stored, hosted in the EU.

Related

Often used together

  • Usage & limitsQuotas, plans, meteringHow much of their plan has each account used this month?
  • Customer insightEngagement, churn signalsWhich accounts went quiet this week?
  • Trust & safetyAbuse, account security, riskHow many failed sign-ins from this network in 15 minutes?
Early access

Your first live numbers, configured not coded

Tell us what you would count first, and we'll help you set it up.

Request accessSee how it works