Skip to main content
Stigg enforces rate limits to protect platform stability and prevent unintended overload scenarios caused by misconfigured clients or retry loops. Rate limiting is applied at two levels:
  • Global endpoint rate limits – how many times a specific operation can be called per minute.
  • Entity-level rate limits – how many times the same entity (customer, subscription, or customer resource) can be mutated within a time window.
Both limits apply simultaneously. A request must pass both to succeed.

Global endpoint rate limits

Global rate limits apply per operation, regardless of which customer or subscription is being targeted.
SDK methodGraphQL operationRate limit (calls per minute)
getPaywall (public)paywall (Edge API)Unlimited
getPaywall (in-app)paywall3000
provisionSubscriptionprovisionSubscription250
applySubscriptionapplySubscription250
getEntitlements / getEntitlement / getBooleanEntitlement / getNumericEntitlement / getMeteredEntitlemententitlement (Edge API)Unlimited
getActiveSubscriptionsListgetActiveSubscriptionsList (Edge API)Unlimited
getSubscriptionssubscriptions1500
getSubscriptiongetSubscription3000
provisionCustomerprovisionCustomer250
reportEventreportEvent1000/bulk size per second
reportUsagereportUsage3000
reportUsageBulkreportUsageBulk600 in bulks of 100
getUsageHistoryV2getUsageHistoryV2250
previewSubscriptionpreviewSubscription3000
estimateSubscriptionestimateSubscription3000
estimateSubscriptionUpdateestimateSubscriptionUpdate3000
getCustomergetCustomerByRefId3000
cancelSubscriptioncancelSubscription250
updateCustomerupdateOneCustomer250
updateSubscriptionupdateOneSubscription250
archiveCustomerarchiveCustomer250
migrateSubscriptionToLatestmigrateSubscriptionToLatest250
getCouponscoupon500
revokePromotionalEntitlementsrevokePromotionalEntitlements500
getCreditBalancecreditBalanceSummary500
getCreditGrantscreditGrants500
getCreditLedgercreditsLedger500
getCreditUsagecreditUsage500
grantCreditscreateCreditGrant500
voidCreditGrantvoidCreditGrant500
If higher rate limits are required, please contact Stigg Support

Entity-level rate limits (resource protection)

These limits exist to prevent repeated concurrent mutations on the same entity, which can cause:
  • Parallel processing contention
  • Unnecessary retries
  • Backend instability
  • Incident-level load amplification

Entity types

Entity-level rate limits are enforced for the following entities:
  • Customer
  • Subscription
  • Customer resource (customer and resource combination)
Each entity has its own rate limit bucket, independent of other entities. When a request mutates state, it is routed to a bucket based on the entity it targets:
  • Customer-based operations → customerId
  • Subscription-based operations → subscriptionId
  • Customer and resource operations → customerId:resourceId

Example

If the entity-level limit is 30 calls per minute:
  • Calling cancelSubscription 30 times per minute for the same subscription ID is allowed
  • The 31st call for that subscription will fail
  • Calls for other subscriptions are unaffected
  • Calls for other customers are unaffected
This applies even if:
  • The calls use different GraphQL mutations
  • The global endpoint rate limit has not been reached

GraphQL operations with entity-level rate limits

The following GraphQL mutations are subject to entity-level rate limiting. Each mutation is limited based on the specific entity key it mutates.
GraphQL mutationRate-limited entity (key)Rate limit (calls per minute per entity)
applySubscriptioncustomerId:resourceId or customerId30
createCustomercustomerId30
provisionCustomercustomerId30
archiveCustomercustomerId30
unarchiveCustomercustomerId30
importCustomercustomerId30
updateCustomercustomerId30
initAddStripeCustomerPaymentMethodcustomerId30
preparePaymentMethodFormcustomerId30
attachCustomerPaymentMethodcustomerId30
detachCustomerPaymentMethodcustomerId30
createSubscriptioncustomerId:resourceId or customerId30
provisionSubscriptioncustomerId:resourceId or customerId30
provisionSubscriptionV2customerId:resourceId or customerId30
transferSubscriptioncustomerId:resourceId or customerId30
triggerSubscriptionUsageSynccustomerId:resourceId or customerId30
cancelSubscriptionsubscriptionId30
migrateSubscriptionToLatestsubscriptionId30
chargeSubscriptionUsagesubscriptionId30
markInvoiceAsPaidsubscriptionId30
updateSubscriptionsubscriptionId30
estimateSubscriptionUpdatesubscriptionId30
updateSubscriptionMaximumSpendsubscriptionId30
cancelSchedulesubscriptionId30