Overview
When calculated usage is reported to Stigg, your application is responsible for aggregating and calculating the usage and then reporting it to Stigg.Supported ingestion behaviors
Stigg supports 2 behaviors for reporting calculated usage:- Delta - the reported usage represents the change in usage of the feature, for example: when a customer adds 2 more seats, the reported value should be 2. This is default behavior.
- Set - the reported usage represents the end state after the change, for example: when a customer adds 2 more seats and the total number of seats after the change is 5, the reported value should be 5.
It is also possible to report usage in bulk using the Report Usage Bulk endpoint in batches of 100 measurements (GraphQL SDK only; note the rate limit for this operation)
Idempotency
Reporting usage over the network means requests can occasionally be retried, for example: after a timeout, a dropped connection, or a client-side retry policy. To make retries safe, you can pass an optionalidempotencyKey alongside a reported usage value.
A retry with a previously-seen idempotency key is deduplicated rather than counted as new usage. Idempotency keys shouldn’t be reused across unrelated reports.
Choosing an idempotency key
Prefer a key that’s deterministic — derived from the source data that triggered the report (for example:{customerId}-{featureId}-{sourceEventId}) rather than a random UUID generated fresh on every attempt. A deterministic key means any retry of the same underlying action, from any code path (a manual retry, a queue redelivery, a cron re-run), naturally reuses the same key and gets deduplicated, instead of relying on a single caller to remember and resend the exact key it used the first time.
Handling errors and retries
Supported ingestion methods
- REST API
- GraphQL
REST SDKs
Send usage data using REST SDKs available for TypeScript, Python, Go, Ruby, C#, and Java.
REST API: Report Usage
Send calculated usage values via the REST API.



