- 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.
Global endpoint rate limits
Global rate limits apply per operation, regardless of which customer or subscription is being targeted.| SDK method | GraphQL operation | Rate limit (calls per minute) |
|---|---|---|
| getPaywall (public) | paywall (Edge API) | Unlimited |
| getPaywall (in-app) | paywall | 3000 |
| provisionSubscription | provisionSubscription | 250 |
| applySubscription | applySubscription | 250 |
| getEntitlements / getEntitlement / getBooleanEntitlement / getNumericEntitlement / getMeteredEntitlement | entitlement (Edge API) | Unlimited |
| getActiveSubscriptionsList | getActiveSubscriptionsList (Edge API) | Unlimited |
| getSubscriptions | subscriptions | 1500 |
| getSubscription | getSubscription | 3000 |
| provisionCustomer | provisionCustomer | 250 |
| reportEvent | reportEvent | 1000/bulk size per second |
| reportUsage | reportUsage | 3000 |
| reportUsageBulk | reportUsageBulk | 600 in bulks of 100 |
| getUsageHistoryV2 | getUsageHistoryV2 | 250 |
| previewSubscription | previewSubscription | 3000 |
| estimateSubscription | estimateSubscription | 3000 |
| estimateSubscriptionUpdate | estimateSubscriptionUpdate | 3000 |
| getCustomer | getCustomerByRefId | 3000 |
| cancelSubscription | cancelSubscription | 250 |
| updateCustomer | updateOneCustomer | 250 |
| updateSubscription | updateOneSubscription | 250 |
| archiveCustomer | archiveCustomer | 250 |
| migrateSubscriptionToLatest | migrateSubscriptionToLatest | 250 |
| getCoupons | coupon | 500 |
| revokePromotionalEntitlements | revokePromotionalEntitlements | 500 |
| getCreditBalance | creditBalanceSummary | 500 |
| getCreditGrants | creditGrants | 500 |
| getCreditLedger | creditsLedger | 500 |
| getCreditUsage | creditUsage | 500 |
| grantCredits | createCreditGrant | 500 |
| voidCreditGrant | voidCreditGrant | 500 |
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)
- 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
cancelSubscription30 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
- 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 mutation | Rate-limited entity (key) | Rate limit (calls per minute per entity) |
|---|---|---|
applySubscription | customerId:resourceId or customerId | 30 |
createCustomer | customerId | 30 |
provisionCustomer | customerId | 30 |
archiveCustomer | customerId | 30 |
unarchiveCustomer | customerId | 30 |
importCustomer | customerId | 30 |
updateCustomer | customerId | 30 |
initAddStripeCustomerPaymentMethod | customerId | 30 |
preparePaymentMethodForm | customerId | 30 |
attachCustomerPaymentMethod | customerId | 30 |
detachCustomerPaymentMethod | customerId | 30 |
createSubscription | customerId:resourceId or customerId | 30 |
provisionSubscription | customerId:resourceId or customerId | 30 |
provisionSubscriptionV2 | customerId:resourceId or customerId | 30 |
transferSubscription | customerId:resourceId or customerId | 30 |
triggerSubscriptionUsageSync | customerId:resourceId or customerId | 30 |
cancelSubscription | subscriptionId | 30 |
migrateSubscriptionToLatest | subscriptionId | 30 |
chargeSubscriptionUsage | subscriptionId | 30 |
markInvoiceAsPaid | subscriptionId | 30 |
updateSubscription | subscriptionId | 30 |
estimateSubscriptionUpdate | subscriptionId | 30 |
updateSubscriptionMaximumSpend | subscriptionId | 30 |
cancelSchedule | subscriptionId | 30 |
